Set puzzle: Difference between revisions
Content added Content deleted
(Added Erlang) |
m (Better deck/0) |
||
Line 307: | Line 307: | ||
-module( set ). |
-module( set ). |
||
-export( [deck/0, is_set/3, task/0] ). |
-export( [deck/0, is_set/3, shuffle_deck/1, task/0] ). |
||
-record( card, {number, symbol, shading, colour} ). |
-record( card, {number, symbol, shading, colour} ). |
||
⚫ | |||
deck() -> |
|||
⚫ | |||
⚫ | |||
is_set( Card1, Card2, Card3 ) -> |
is_set( Card1, Card2, Card3 ) -> |
||
Line 320: | Line 318: | ||
andalso is_shading_correct( Card1, Card2, Card3 ) |
andalso is_shading_correct( Card1, Card2, Card3 ) |
||
andalso is_symbol_correct( Card1, Card2, Card3 ). |
andalso is_symbol_correct( Card1, Card2, Card3 ). |
||
⚫ | |||
task() -> |
task() -> |
||
Line 332: | Line 332: | ||
common( X, Y ) -> |
common( X, Y ) -> |
||
{Sets, Cards} = find_x_sets_in_y_cards( X, Y ), |
{Sets, Cards} = find_x_sets_in_y_cards( X, Y, deck() ), |
||
io:fwrite( "Cards ~p~n", [Cards] ), |
io:fwrite( "Cards ~p~n", [Cards] ), |
||
io:fwrite( "Gives sets:~n" ), |
io:fwrite( "Gives sets:~n" ), |
||
[io:fwrite( "~p~n", [S] ) || S <- Sets]. |
[io:fwrite( "~p~n", [S] ) || S <- Sets]. |
||
find_x_sets_in_y_cards( X, Y ) -> |
find_x_sets_in_y_cards( X, Y, Deck ) -> |
||
⚫ | |||
Deck = deck(), |
|||
⚫ | |||
find_x_sets_in_y_cards( X, Y, Cards, make_sets1(Cards, []) ). |
find_x_sets_in_y_cards( X, Y, Cards, make_sets1(Cards, []) ). |
||
find_x_sets_in_y_cards( X, _Y, Cards, Sets ) when erlang:length(Sets) =:= X -> {Sets, Cards}; |
find_x_sets_in_y_cards( X, _Y, _Deck, Cards, Sets ) when erlang:length(Sets) =:= X -> {Sets, Cards}; |
||
find_x_sets_in_y_cards( X, Y, _Cards, _Sets ) -> find_x_sets_in_y_cards( X, Y ). |
find_x_sets_in_y_cards( X, Y, Deck, _Cards, _Sets ) -> find_x_sets_in_y_cards( X, Y, Deck ). |
||
is_colour_correct( Card1, Card2, Card3 ) -> is_colour_different( Card1, Card2, Card3 ) orelse is_colour_same( Card1, Card2, Card3 ). |
is_colour_correct( Card1, Card2, Card3 ) -> is_colour_different( Card1, Card2, Card3 ) orelse is_colour_same( Card1, Card2, Card3 ). |