Mind boggling card trick: Difference between revisions

m
→‎{{header|zkl}}: letters instead of numbers
(made numerous tidying-up changes, used the word pile instead of pile and stack, clarified what a "red" and "black" pile is (just a name, not the contents), and other small changes. See Paddy3118's talk section for more info.)
m (→‎{{header|zkl}}: letters instead of numbers)
Line 980:
blkStk,redStk := stacks;
foreach card in (cards){ stacks[card].append(__cardWalker.next()) }
println("Stacks:\n Black stack: ",redBlack(blkStk),"\n Red stack: ",redBlack(redStk));
 
numSwaps:=(1).random(1000); // do lots of swaps
do(numSwaps){ blkStk.append(redStk.pop(0)); redStk.append(blkStk.pop(0)); }
println("Post %d swaps:\n Black stack: %s\n Red stack: %s"
.fmt(numSwaps,redBlack(blkStk),redBlack(redStk)));
 
numBlack,numRed := blkStk.filter('==(0)).len(), redStk.filter().lensum(0);
if(numBlack==numRed)
println("Agreed, black stack has same number of black cards \n "
"as red stack has number of red cards: ",numRed);
else println("Boo, different stack lenghts");</lang>
 
fcn redBlack(cards){ cards.pump(String,fcn(c){ c and "R " or "B " }) }</lang>
{{out}}
<pre>
Stacks:
Black stack: L(0,0,1,1,0,0,1,0,0,0,0)B B R R R R R R R R R B B B R B
Red stack: L(0,1,0,1,0,1,1,1,0,1,0,0,1,1,0)B B R R B B R R R R
Post 99360 swaps:
Black stack: L(0,0,1,1,0,0,0,1,1,0,0)R R R R B B R R R R R R R R R B
Red stack: L(1,0,0,0,0,0,1,0,1,0,1,1,1,0,1)B B R B B B R R B B
Agreed, black stack has same number of black cards
as red stack has number of red cards: 73
</pre>
Anonymous user