Set puzzle: Difference between revisions
Content added Content deleted
(Added Kotlin) |
|||
Line 2,124: | Line 2,124: | ||
[Card: RED, THREE, OVAL, STRIPED] |
[Card: RED, THREE, OVAL, STRIPED] |
||
[Card: PURPLE, TWO, SQUIGGLE, SOLID]</pre> |
[Card: PURPLE, TWO, SQUIGGLE, SOLID]</pre> |
||
=={{header|Julia}}== |
|||
Plays one basic game and one advanced game. |
|||
<lang julia>using Random, IterTools, Combinatorics |
|||
function SetGameTM(basic = true) |
|||
drawsize = basic ? 9 : 12 |
|||
setsneeded = div(drawsize, 2) |
|||
setsof3 = Vector{Vector{NTuple{4, String}}}() |
|||
draw = Vector{NTuple{4, String}}() |
|||
deck = collect(Iterators.product(["red", "green", "purple"], ["one", "two", "three"], |
|||
["oval", "squiggle", "diamond"], ["solid", "open", "striped"])) |
|||
while length(setsof3) != setsneeded |
|||
empty!(draw) |
|||
empty!(setsof3) |
|||
map(x -> push!(draw, x), shuffle(deck)[1:drawsize]) |
|||
for threecards in combinations(draw, 3) |
|||
canuse = true |
|||
for i in 1:4 |
|||
u = length(unique(map(x->x[i], threecards))) |
|||
if u != 3 && u != 1 |
|||
canuse = false |
|||
end |
|||
end |
|||
if canuse |
|||
push!(setsof3, threecards) |
|||
end |
|||
end |
|||
end |
|||
println("Dealt $drawsize cards:") |
|||
for card in draw |
|||
println(" $card") |
|||
end |
|||
println("\nFormed these cards into $setsneeded sets:") |
|||
for set in setsof3 |
|||
for card in set |
|||
println(" $card") |
|||
end |
|||
println() |
|||
end |
|||
end |
|||
SetGameTM() |
|||
SetGameTM(false) |
|||
</lang> {{output}} <pre> |
|||
Dealt 9 cards: |
|||
("green", "one", "oval", "open") |
|||
("green", "three", "diamond", "open") |
|||
("purple", "one", "diamond", "striped") |
|||
("purple", "three", "oval", "solid") |
|||
("red", "two", "diamond", "open") |
|||
("red", "one", "oval", "striped") |
|||
("green", "one", "squiggle", "striped") |
|||
("green", "two", "oval", "solid") |
|||
("purple", "two", "squiggle", "open") |
|||
Formed these cards into 4 sets: |
|||
("green", "three", "diamond", "open") |
|||
("green", "one", "squiggle", "striped") |
|||
("green", "two", "oval", "solid") |
|||
("purple", "one", "diamond", "striped") |
|||
("purple", "three", "oval", "solid") |
|||
("purple", "two", "squiggle", "open") |
|||
("purple", "one", "diamond", "striped") |
|||
("red", "one", "oval", "striped") |
|||
("green", "one", "squiggle", "striped") |
|||
("purple", "three", "oval", "solid") |
|||
("red", "two", "diamond", "open") |
|||
("green", "one", "squiggle", "striped") |
|||
Dealt 12 cards: |
|||
("red", "one", "squiggle", "open") |
|||
("green", "one", "diamond", "striped") |
|||
("red", "two", "oval", "solid") |
|||
("green", "three", "squiggle", "striped") |
|||
("green", "three", "squiggle", "open") |
|||
("red", "one", "oval", "solid") |
|||
("purple", "two", "oval", "striped") |
|||
("green", "two", "oval", "striped") |
|||
("green", "three", "oval", "open") |
|||
("purple", "two", "diamond", "open") |
|||
("purple", "three", "diamond", "striped") |
|||
("purple", "two", "squiggle", "solid") |
|||
Formed these cards into 6 sets: |
|||
("red", "one", "squiggle", "open") |
|||
("green", "three", "squiggle", "striped") |
|||
("purple", "two", "squiggle", "solid") |
|||
("red", "one", "squiggle", "open") |
|||
("green", "three", "oval", "open") |
|||
("purple", "two", "diamond", "open") |
|||
("green", "one", "diamond", "striped") |
|||
("green", "three", "squiggle", "striped") |
|||
("green", "two", "oval", "striped") |
|||
("green", "three", "squiggle", "striped") |
|||
("red", "one", "oval", "solid") |
|||
("purple", "two", "diamond", "open") |
|||
("red", "one", "oval", "solid") |
|||
("purple", "two", "oval", "striped") |
|||
("green", "three", "oval", "open") |
|||
("purple", "two", "oval", "striped") |
|||
("purple", "two", "diamond", "open") |
|||
("purple", "two", "squiggle", "solid") |
|||
</pre> |
|||
=={{header|Kotlin}}== |
=={{header|Kotlin}}== |