Merge branch 'master' of http://factorforge.org/glguy.factor
commit
4f7d7e3e0c
|
@ -0,0 +1,7 @@
|
||||||
|
USING: kernel sequences math.functions math ;
|
||||||
|
IN: project-euler.100
|
||||||
|
|
||||||
|
: euler100 ( -- n )
|
||||||
|
1 1
|
||||||
|
[ dup dup 1- * 2 * 10 24 ^ <= ]
|
||||||
|
[ tuck 6 * swap - 2 - ] [ ] while nip ;
|
|
@ -0,0 +1,40 @@
|
||||||
|
! Copyright (c) 2008 Eric Mertens
|
||||||
|
! See http://factorcode.org/license.txt for BSD license.
|
||||||
|
USING: sequences combinators kernel sequences.lib math assocs namespaces ;
|
||||||
|
IN: project-euler.151
|
||||||
|
|
||||||
|
SYMBOL: table
|
||||||
|
|
||||||
|
: (pick-sheet) ( seq i -- newseq )
|
||||||
|
[
|
||||||
|
<=> sgn
|
||||||
|
{
|
||||||
|
{ -1 [ ] }
|
||||||
|
{ 0 [ 1- ] }
|
||||||
|
{ 1 [ 1+ ] }
|
||||||
|
} case
|
||||||
|
] curry map-index ;
|
||||||
|
|
||||||
|
DEFER: (euler151)
|
||||||
|
|
||||||
|
: pick-sheet ( seq i -- res )
|
||||||
|
2dup swap nth dup zero? [
|
||||||
|
3drop 0
|
||||||
|
] [
|
||||||
|
[ (pick-sheet) (euler151) ] dip *
|
||||||
|
] if ;
|
||||||
|
|
||||||
|
: (euler151) ( x -- y )
|
||||||
|
table get [ {
|
||||||
|
{ { 0 0 0 1 } [ 0 ] }
|
||||||
|
{ { 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 [ pick-sheet ] with map sum ] [ sum ] bi / ]
|
||||||
|
} case ] cache ;
|
||||||
|
|
||||||
|
: euler151 ( -- n )
|
||||||
|
[
|
||||||
|
H{ } clone table set
|
||||||
|
{ 1 1 1 1 } (euler151)
|
||||||
|
] with-scope ;
|
|
@ -131,6 +131,10 @@ MACRO: firstn ( n -- )
|
||||||
[ find drop [ head-slice ] when* ] curry
|
[ find drop [ head-slice ] when* ] curry
|
||||||
[ dup ] swap compose keep like ;
|
[ dup ] swap compose keep like ;
|
||||||
|
|
||||||
|
: replicate ( seq quot -- newseq )
|
||||||
|
#! quot: ( -- obj )
|
||||||
|
[ drop ] swap compose map ;
|
||||||
|
|
||||||
! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||||
|
|
||||||
<PRIVATE
|
<PRIVATE
|
||||||
|
|
Loading…
Reference in New Issue