<PRIVATE
: words-length ( words -- length )
- [ width>> ] map sum ;
+ [ width>> ] map-sum ;
: make-element ( whites blacks -- element )
[ append ] [ [ words-length ] bi@ ] 2bi <element> ;
{ { 0 0 1 0 } [ { 0 0 0 1 } (euler151) 1 + ] }
{ { 0 1 0 0 } [ { 0 0 1 1 } (euler151) 1 + ] }
{ { 1 0 0 0 } [ { 0 1 1 1 } (euler151) 1 + ] }
- [ [ dup length iota [ pick-sheet ] with map sum ] [ sum ] bi / ]
+ [ [ dup length iota [ pick-sheet ] with map-sum ] [ sum ] bi / ]
} case ] cache ;
: euler151 ( -- answer )
! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
: distance ( turtle turtle -- n )
- pos>> swap pos>> v- [ sq ] map sum sqrt ;
+ pos>> swap pos>> v- [ sq ] map-sum sqrt ;
: move-by ( point -- ) turtle-pos> v+ >turtle-pos ;
[ swap hash>> set-at ]
} case ;
-:: at-pos ( t l c -- p ) t l head-slice [ length ] map sum l 1 - + c + ;
+:: at-pos ( t l c -- p ) t l head-slice [ length ] map-sum l 1 - + c + ;
M: lex-hash at*
swap {
! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-: distance ( pos pos -- n ) val>> swap val>> v- [ sq ] map sum sqrt ;
+: distance ( pos pos -- n ) val>> swap val>> v- [ sq ] map-sum sqrt ;
: move-by ( point -- ) pos> v+ >pos ;