Mind boggling card trick: Difference between revisions

Realize in F#
m (→‎{{header|zkl}}: letters instead of numbers)
(Realize in F#)
Line 33:
<br><br>
 
=={{header|F_Sharp|F#}}==
<lang fsharp>
//Be boggled? Nigel Galloway: September 19th., 2018
let N=System.Random()
let fN=List.unfold(function |(0,0)->None |(n,g)->let ng=N.Next n+g in if ng>n then Some("Black",(n,g-1)) else Some("Red",(n-1,g)))(26,26)
let fG n=let (n,n')::(g,g')::_=List.countBy(fun (n::g::_)->if n=g then n else g) n in sprintf "%d %s cards and %d %s cards" n' n g' g
printf "A well shuffled deck -> "; List.iter (printf "%s ") fN; printfn ""
fN |> List.chunkBySize 2 |> List.groupBy (fun n->List.item 0 n) |> List.iter(fun(n,n')->printfn "The %s pile contains %s" n (fG n'))
</lang>
{{out}}
<pre>
A well shuffled deck -> Black Black Red Black Black Black Black Black Black Black Red Red Red Red Black Black Black Red Red Red Black Black Red Red Black Black Black Red Black Red Black Black Red Red Red Black Black Black Red Red Red Red Red Red Black Black Red Red Red Red Red Black
The Black pile contains 10 Black cards and 3 Red cards
The Red pile contains 3 Black cards and 10 Red cards
</pre>
=={{header|Factor}}==
<lang factor>USING: accessors combinators.extras formatting fry
2,172

edits