Deal cards for FreeCell: Difference between revisions

Adding a Groovy version of Dealing freecell
(→‎{{header|Rust}}: refactor and switch to use LCG task)
(Adding a Groovy version of Dealing freecell)
Line 1,405:
4S TS 2H 5D JC 6C JH QH
JD KS KC 4H
</pre>
 
=={{header|Groovy}}==
<lang groovy>
class FreeCell{
int seed
List<String> createDeck(){
List<String> suits = ['♣','♦','♥','♠']
List<String> values = ['A','2','3','4','5','6','7','8','9','10','J','Q','K']
return [suits,values].combinations{suit,value -> "$suit$value"}
}
int random() {
seed = (214013 * seed + 2531011) & Integer.MAX_VALUE
return seed >> 16
}
List<String> shuffledDeck(List<String> cards) {
List<String> deck = cards.clone()
(deck.size() - 1..1).each{index ->
int r = random() % (index + 1)
deck.swap(r, index)
}
return deck
}
List<String> dealGame(int seed = 1){
this.seed= seed
List<String> cards = shuffledDeck(createDeck())
(1..cards.size()).each{ number->
print "${cards.pop()}\t"
if(number % 8 == 0) println('')
}
println('\n')
}
}
 
def freecell = new FreeCell()
freecell.dealGame()
freecell.dealGame(617)
</lang>
 
{{out}}
<pre>
Game #1
♦J ♦2 ♥9 ♣J ♦5 ♥7 ♣7 ♥5
♦K ♣K ♠9 ♠5 ♦A ♣Q ♥K ♥3
♠2 ♠K ♦9 ♦Q ♠J ♠A ♥A ♣3
♣4 ♣5 ♠10 ♥Q ♥4 ♣A ♦4 ♠7
♠3 ♦10 ♠4 ♥10 ♥8 ♣2 ♥J ♦7
♦6 ♠8 ♦8 ♠Q ♣6 ♦3 ♣8 ♣10
♠6 ♣9 ♥2 ♥6
 
Game #617
♦7 ♦A ♣5 ♠3 ♠5 ♣8 ♦2 ♥A
♦10 ♠7 ♦Q ♣A ♦6 ♥8 ♠A ♥K
♥10 ♣Q ♥3 ♦9 ♠6 ♦8 ♦3 ♣10
♦K ♥5 ♠9 ♣3 ♠8 ♥7 ♦4 ♠J
♣4 ♠Q ♣9 ♥9 ♣7 ♥6 ♣2 ♠2
♠4 ♠10 ♥2 ♦5 ♣J ♣6 ♥J ♥Q
♦J ♠K ♣K ♥4
</pre>