43 lines
683 B
Plaintext
43 lines
683 B
Plaintext
|
:: Hoon 201 - Week 2
|
||
|
:: ~bannum-magtus || s@p7.co.nz
|
||
|
::
|
||
|
:: i could not figure out how to
|
||
|
:: cast the output of a wet gate
|
||
|
:: to a list of the same type :(
|
||
|
::
|
||
|
:- %say
|
||
|
|= [* [t=(tree @) x=@ ~] *]
|
||
|
:- %noun
|
||
|
^- [? (list @)]
|
||
|
=<
|
||
|
:- (dfs-search t x) (dfs t)
|
||
|
|%
|
||
|
++ dfs
|
||
|
|= t=(tree @)
|
||
|
^- (list @)
|
||
|
?~ t
|
||
|
~
|
||
|
%+ weld
|
||
|
(dfs l.t)
|
||
|
%+ weld
|
||
|
(dfs r.t)
|
||
|
[n.t ~]
|
||
|
++ dfs-search
|
||
|
|= [t=(tree @) x=@]
|
||
|
^- ?
|
||
|
?~ t
|
||
|
%.n
|
||
|
?| (dfs-search l.t x)
|
||
|
(dfs-search r.t x)
|
||
|
=(n.t x)
|
||
|
==
|
||
|
:: i assume ?| will stop as
|
||
|
:: soon as it sees a true,
|
||
|
:: otherwise below is better
|
||
|
::
|
||
|
::?: (dfs-search l.t x) %.y
|
||
|
::?: (dfs-search r.t x) %.y
|
||
|
::=(x n.t)
|
||
|
--
|
||
|
|