Card shuffles: Difference between revisions
Content deleted Content added
Added Perl 6 |
→{{header|Tcl}}: added zkl |
||
Line 581: | Line 581: | ||
puts [overhand [list 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52]] |
puts [overhand [list 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52]] |
||
</lang> |
</lang> |
||
=={{header|zkl}}== |
|||
A much better shuffle is List's shuffle method. |
|||
<lang zkl>fcn riffle(deck){ |
|||
len,N:=deck.len(),len/2; |
|||
newDeck:=N.pump(List,'wrap(n){ return(Void.Write,deck[n],deck[N+n]) }); |
|||
if(len.isOdd) return(newDeck.append(deck[-1])); |
|||
newDeck |
|||
} |
|||
fcn overHand(deck){ |
|||
len,N,piles:=deck.len(),(0.2*len).toInt(),(len.toFloat()/N).ceil().toInt(); |
|||
piles.pump(List,'wrap(n){ deck[n*N,N] }).reverse().flatten() |
|||
}</lang> |
|||
<lang zkl>riffle( [1..19].walk()).println(); |
|||
overHand([1..19].walk()).println(); |
|||
[1..19].walk().shuffle().println();</lang> |
|||
{{out}} |
|||
<pre> |
|||
L(1,10,2,11,3,12,4,13,5,14,6,15,7,16,8,17,9,18,19) |
|||
L(19,16,17,18,13,14,15,10,11,12,7,8,9,4,5,6,1,2,3) |
|||
L(9,11,12,6,17,18,5,10,8,19,2,15,4,3,13,1,7,14,16) |
|||
</pre> |