Thorn Avery 4 år sedan
förälder
incheckning
2b9b002e1c
2 ändrade filer med 72 tillägg och 0 borttagningar
  1. +16
    -0
      README.md
  2. +56
    -0
      week6/cards.hoon

+ 16
- 0
README.md Visa fil

@@ -9,3 +9,19 @@ My assignments for each week of Hoon 101.
## Week 2

> Build a naked generator that takes a noun and checks if that noun is a cell or an atom. If that input noun is an atom, check if it’s even or odd. The output should be of the tape type.

## Week 3

> Build a naked generator that returns the third item of a list, without using standard library functions (in the core logic, could use (list) as the input)

## Week 4

> Find the sum of all numbers that are a multiple of 3 or 5, [1..n]

## Week 5

> morse code converter

## Week 6

> Produce x hands of y cards from a deck of 52 distinct cards

+ 56
- 0
week6/cards.hoon Visa fil

@@ -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)
==
--

Laddar…
Avbryt
Spara