Merge branch 'for-slava' of git://www.rfc1149.net/factor
commit
26dca5d77a
|
@ -78,7 +78,7 @@ M: lazy-cons nil? ( lazy-cons -- bool )
|
|||
swap [ cdr ] times car ;
|
||||
|
||||
: (llength) ( list acc -- n )
|
||||
over nil? [ nip ] [ >r cdr r> 1+ (llength) ] if ;
|
||||
over nil? [ nip ] [ [ cdr ] dip 1+ (llength) ] if ;
|
||||
|
||||
: llength ( list -- n )
|
||||
0 (llength) ;
|
||||
|
@ -273,7 +273,7 @@ M: lazy-from-by car ( lazy-from-by -- car )
|
|||
|
||||
M: lazy-from-by cdr ( lazy-from-by -- cdr )
|
||||
[ lazy-from-by-n ] keep
|
||||
lazy-from-by-quot dup >r call r> lfrom-by ;
|
||||
lazy-from-by-quot dup slip lfrom-by ;
|
||||
|
||||
M: lazy-from-by nil? ( lazy-from-by -- bool )
|
||||
drop f ;
|
||||
|
@ -370,10 +370,10 @@ M: lazy-concat nil? ( lazy-concat -- bool )
|
|||
] if ;
|
||||
|
||||
: lcomp ( list quot -- result )
|
||||
>r lcartesian-product* r> lmap ;
|
||||
[ lcartesian-product* ] dip lmap ;
|
||||
|
||||
: lcomp* ( list guards quot -- result )
|
||||
>r >r lcartesian-product* r> [ lsubset ] each r> lmap ;
|
||||
[ [ lcartesian-product* ] dip [ lsubset ] each ] dip lmap ;
|
||||
|
||||
DEFER: lmerge
|
||||
|
||||
|
@ -382,7 +382,7 @@ DEFER: lmerge
|
|||
[
|
||||
dup [ car ] curry -rot
|
||||
[
|
||||
>r cdr r> cdr lmerge
|
||||
[ cdr ] bi@ lmerge
|
||||
] 2curry lazy-cons
|
||||
] 2curry lazy-cons ;
|
||||
|
||||
|
@ -419,7 +419,7 @@ M: lazy-io cdr ( lazy-io -- cdr )
|
|||
[ lazy-io-stream ] keep
|
||||
[ lazy-io-quot ] keep
|
||||
car [
|
||||
>r f f r> <lazy-io> [ swap set-lazy-io-cdr ] keep
|
||||
[ f f ] dip <lazy-io> [ swap set-lazy-io-cdr ] keep
|
||||
] [
|
||||
3drop nil
|
||||
] if
|
||||
|
|
|
@ -45,7 +45,7 @@ PRIVATE>
|
|||
|
||||
: primes-between ( low high -- seq )
|
||||
primes-upto
|
||||
>r 1- next-prime r>
|
||||
[ 1- next-prime ] dip
|
||||
[ [ <=> ] binsearch ] keep [ length ] keep <slice> ; foldable
|
||||
|
||||
: coprime? ( a b -- ? ) gcd nip 1 = ; foldable
|
||||
|
|
|
@ -30,7 +30,7 @@ MEMO: fn ( n -- x )
|
|||
{
|
||||
{ [ dup 2 < ] [ drop 1 ] }
|
||||
{ [ dup odd? ] [ 2/ fn ] }
|
||||
{ [ t ] [ 2/ [ fn ] keep 1- fn + ] }
|
||||
{ [ t ] [ 2/ [ fn ] [ 1- fn + ] bi + ] }
|
||||
} cond ;
|
||||
|
||||
: euler169 ( -- result )
|
||||
|
|
Loading…
Reference in New Issue