Hoon101/201/week2/dfs.hoon
2019-09-26 14:47:30 +12:00

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