Use [0,b) and iota where appropriate

db4
Aaron Schaefer 2009-05-01 22:26:49 -04:00
parent 9981f6534f
commit e59e051c74
8 changed files with 18 additions and 17 deletions

View File

@ -47,14 +47,14 @@ PRIVATE>
: euler001b ( -- answer ) : euler001b ( -- answer )
1000 iota [ [ 5 mod ] [ 3 mod ] bi [ 0 = ] either? ] filter sum ; 1000 [0,b) [ [ 5 mod ] [ 3 mod ] bi [ 0 = ] either? ] filter sum ;
! [ euler001b ] 100 ave-time ! [ euler001b ] 100 ave-time
! 0 ms ave run time - 0.06 SD (100 trials) ! 0 ms ave run time - 0.06 SD (100 trials)
: euler001c ( -- answer ) : euler001c ( -- answer )
1000 iota [ { 3 5 } [ divisor? ] with any? ] filter sum ; 1000 [0,b) [ { 3 5 } [ divisor? ] with any? ] filter sum ;
! [ euler001c ] 100 ave-time ! [ euler001c ] 100 ave-time
! 0 ms ave run time - 0.06 SD (100 trials) ! 0 ms ave run time - 0.06 SD (100 trials)

View File

@ -1,6 +1,6 @@
! Copyright (c) 2007 Samuel Tardieu, Aaron Schaefer. ! Copyright (c) 2007 Samuel Tardieu, Aaron Schaefer.
! See http://factorcode.org/license.txt for BSD license. ! See http://factorcode.org/license.txt for BSD license.
USING: kernel math project-euler.common sequences ; USING: kernel math math.ranges project-euler.common sequences ;
IN: project-euler.018 IN: project-euler.018
! http://projecteuler.net/index.php?section=problems&id=18 ! http://projecteuler.net/index.php?section=problems&id=18
@ -66,7 +66,7 @@ IN: project-euler.018
91 71 52 38 17 14 91 43 58 50 27 29 48 91 71 52 38 17 14 91 43 58 50 27 29 48
63 66 04 68 89 53 67 30 73 16 69 87 40 31 63 66 04 68 89 53 67 30 73 16 69 87 40 31
04 62 98 27 23 09 70 98 73 93 38 53 60 04 23 04 62 98 27 23 09 70 98 73 93 38 53 60 04 23
} 15 iota [ 1+ cut swap ] map nip ; } 15 [1,b] [ cut swap ] map nip ;
PRIVATE> PRIVATE>

View File

@ -1,7 +1,6 @@
! Copyright (c) 2008 Aaron Schaefer. ! Copyright (c) 2008 Aaron Schaefer.
! See http://factorcode.org/license.txt for BSD license. ! See http://factorcode.org/license.txt for BSD license.
USING: kernel math math.primes project-euler.common sequences USING: kernel math math.primes math.ranges project-euler.common sequences ;
project-euler.common ;
IN: project-euler.027 IN: project-euler.027
! http://projecteuler.net/index.php?section=problems&id=27 ! http://projecteuler.net/index.php?section=problems&id=27
@ -47,7 +46,7 @@ IN: project-euler.027
<PRIVATE <PRIVATE
: source-027 ( -- seq ) : source-027 ( -- seq )
1000 [ prime? ] filter [ dup [ neg ] map append ] keep 1000 [0,b) [ prime? ] filter [ dup [ neg ] map append ] keep
cartesian-product [ first2 < ] filter ; cartesian-product [ first2 < ] filter ;
: quadratic ( b a n -- m ) : quadratic ( b a n -- m )

View File

@ -1,6 +1,6 @@
! Copyright (c) 2008 Aaron Schaefer. ! Copyright (c) 2008 Aaron Schaefer.
! See http://factorcode.org/license.txt for BSD license. ! See http://factorcode.org/license.txt for BSD license.
USING: kernel math math.functions project-euler.common sequences ; USING: kernel math math.functions math.ranges project-euler.common sequences ;
IN: project-euler.030 IN: project-euler.030
! http://projecteuler.net/index.php?section=problems&id=30 ! http://projecteuler.net/index.php?section=problems&id=30
@ -38,7 +38,7 @@ IN: project-euler.030
PRIVATE> PRIVATE>
: euler030 ( -- answer ) : euler030 ( -- answer )
325537 iota [ dup sum-fifth-powers = ] filter sum 1- ; 325537 [0,b) [ dup sum-fifth-powers = ] filter sum 1- ;
! [ euler030 ] 100 ave-time ! [ euler030 ] 100 ave-time
! 1700 ms ave run time - 64.84 SD (100 trials) ! 1700 ms ave run time - 64.84 SD (100 trials)

View File

@ -28,7 +28,7 @@ IN: project-euler.032
: source-032 ( -- seq ) : source-032 ( -- seq )
9 factorial iota [ 9 factorial iota [
9 permutation [ 1+ ] map 10 digits>integer 9 permutation [ 1 + ] map 10 digits>integer
] map ; ] map ;
: 1and4 ( n -- ? ) : 1and4 ( n -- ? )

View File

@ -1,6 +1,6 @@
! Copyright (c) 2008 Aaron Schaefer. ! Copyright (c) 2008 Aaron Schaefer.
! See http://factorcode.org/license.txt for BSD license. ! See http://factorcode.org/license.txt for BSD license.
USING: kernel math math.parser project-euler.common sequences ; USING: kernel math math.parser math.ranges project-euler.common sequences ;
IN: project-euler.055 IN: project-euler.055
! http://projecteuler.net/index.php?section=problems&id=55 ! http://projecteuler.net/index.php?section=problems&id=55
@ -61,7 +61,7 @@ IN: project-euler.055
PRIVATE> PRIVATE>
: euler055 ( -- answer ) : euler055 ( -- answer )
10000 iota [ lychrel? ] count ; 10000 [0,b) [ lychrel? ] count ;
! [ euler055 ] 100 ave-time ! [ euler055 ] 100 ave-time
! 478 ms ave run time - 30.63 SD (100 trials) ! 478 ms ave run time - 30.63 SD (100 trials)

View File

@ -1,6 +1,7 @@
! Copyright (c) 2008 Samuel Tardieu ! Copyright (c) 2008 Samuel Tardieu
! See http://factorcode.org/license.txt for BSD license. ! See http://factorcode.org/license.txt for BSD license.
USING: kernel math math.functions math.parser sequences project-euler.common ; USING: kernel math math.functions math.parser math.ranges project-euler.common
sequences ;
IN: project-euler.057 IN: project-euler.057
! http://projecteuler.net/index.php?section=problems&id=57 ! http://projecteuler.net/index.php?section=problems&id=57
@ -35,7 +36,7 @@ IN: project-euler.057
>fraction [ number>string length ] bi@ > ; inline >fraction [ number>string length ] bi@ > ; inline
: euler057 ( -- answer ) : euler057 ( -- answer )
0 1000 iota [ drop 2 + recip dup 1+ longer-numerator? ] count nip ; 0 1000 [0,b) [ drop 2 + recip dup 1 + longer-numerator? ] count nip ;
! [ euler057 ] 100 ave-time ! [ euler057 ] 100 ave-time
! 1728 ms ave run time - 80.81 SD (100 trials) ! 1728 ms ave run time - 80.81 SD (100 trials)

View File

@ -1,6 +1,7 @@
! Copyright (c) 2008 Eric Mertens. ! Copyright (c) 2008 Eric Mertens.
! See http://factorcode.org/license.txt for BSD license. ! See http://factorcode.org/license.txt for BSD license.
USING: hints kernel locals math math.order sequences sequences.private project-euler.common ; USING: hints kernel locals math math.order math.ranges project-euler.common
sequences sequences.private ;
IN: project-euler.150 IN: project-euler.150
! http://projecteuler.net/index.php?section=problems&id=150 ! http://projecteuler.net/index.php?section=problems&id=150
@ -50,13 +51,13 @@ IN: project-euler.150
615949 * 797807 + 20 2^ rem dup 19 2^ - ; inline 615949 * 797807 + 20 2^ rem dup 19 2^ - ; inline
: sums-triangle ( -- seq ) : sums-triangle ( -- seq )
0 1000 iota [ 1+ [ next ] replicate partial-sums ] map nip ; 0 1000 [1,b] [ [ next ] replicate partial-sums ] map nip ;
:: (euler150) ( m -- n ) :: (euler150) ( m -- n )
[let | table [ sums-triangle ] | [let | table [ sums-triangle ] |
m [| x | m [| x |
x 1+ [| y | x 1+ [| y |
m x - iota [| z | m x - [0,b) [| z |
x z + table nth-unsafe x z + table nth-unsafe
[ y z + 1+ swap nth-unsafe ] [ y z + 1+ swap nth-unsafe ]
[ y swap nth-unsafe ] bi - [ y swap nth-unsafe ] bi -