|
|
@@ -0,0 +1,61 @@ |
|
|
|
:: Hoon 101 - Week 6 |
|
|
|
:: ~bannum-magtus || s@p7.co.nz |
|
|
|
:: |
|
|
|
:- %say |
|
|
|
|= [[* eny=@uvJ *] [x=@ y=@ ~] ~] |
|
|
|
:- %noun |
|
|
|
?: (gth (mul x y) 52) |
|
|
|
!! |
|
|
|
=< |
|
|
|
:: Im so sorry |
|
|
|
(take-hands x y new-deck) |
|
|
|
|% |
|
|
|
|= [x=@ y=@ d=(list tape)] |
|
|
|
^- (list (list tape)) |
|
|
|
=/ hands=(list (list tape)) ~ |
|
|
|
|- |
|
|
|
?: =(x 0) |
|
|
|
hands |
|
|
|
%= $ |
|
|
|
hands :-((scag y d) hands) |
|
|
|
d (slag y d) |
|
|
|
x (dec x) |
|
|
|
== |
|
|
|
^- (list tape) |
|
|
|
["H" "D" "C" "S" ~] |
|
|
|
^- (list tape) |
|
|
|
["A" "2" "3" "4" "5" "6" "7" "8" "9" "10" "J" "Q" "K" ~] |
|
|
|
=/ nd=(list tape) ~ |
|
|
|
=/ s 0 |
|
|
|
|- |
|
|
|
?: (gte s 4) |
|
|
|
(shuffle-deck nd eny) |
|
|
|
=/ v 0 |
|
|
|
|- |
|
|
|
?. (lth v 13) |
|
|
|
^$(s +(s)) |
|
|
|
%= $ |
|
|
|
v +(v) |
|
|
|
nd :-((weld (snag v suit-donnees) (snag s suit-store)) nd) |
|
|
|
== |
|
|
|
|= [unshuffled=(list tape) entropy=@] |
|
|
|
^- (list tape) |
|
|
|
=| shuffled=(list tape) |
|
|
|
=/ random ~(. og entropy) |
|
|
|
=/ remaining (lent unshuffled) |
|
|
|
|- |
|
|
|
?: =(remaining 1) |
|
|
|
:_ shuffled |
|
|
|
(snag 0 unshuffled) |
|
|
|
=^ index random (rads:random remaining) |
|
|
|
%= $ |
|
|
|
shuffled (snag index unshuffled)^shuffled |
|
|
|
remaining (dec remaining) |
|
|
|
unshuffled (oust [index 1] unshuffled) |
|
|
|
== |
|
|
|
-- |