done
This commit is contained in:
		
							parent
							
								
									d3b9e34ed4
								
							
						
					
					
						commit
						2b9b002e1c
					
				
							
								
								
									
										16
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										16
									
								
								README.md
									
									
									
									
									
								
							| 
						 | 
				
			
			@ -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
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										61
									
								
								week6/cards.hoon
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										61
									
								
								week6/cards.hoon
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -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)
 | 
			
		||||
|%
 | 
			
		||||
++  take-hands
 | 
			
		||||
  |=  [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)
 | 
			
		||||
  ==
 | 
			
		||||
++  suit-store
 | 
			
		||||
  ^-  (list tape)
 | 
			
		||||
  ["H" "D" "C" "S" ~]
 | 
			
		||||
++  suit-donnees
 | 
			
		||||
  ^-  (list tape)
 | 
			
		||||
  ["A" "2" "3" "4" "5" "6" "7" "8" "9" "10" "J" "Q" "K" ~]
 | 
			
		||||
++  new-deck
 | 
			
		||||
  =/  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)
 | 
			
		||||
  ==
 | 
			
		||||
++  shuffle-deck
 | 
			
		||||
  |=  [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)
 | 
			
		||||
  ==
 | 
			
		||||
--
 | 
			
		||||
		Loading…
	
		Reference in a new issue