Use iota in Project Euler solutions
parent
97cb0a5130
commit
9981f6534f
|
@ -1,4 +1,4 @@
|
||||||
! Copyright (c) 2007, 2008 Aaron Schaefer, Slava Pestov.
|
! Copyright (c) 2007-2009 Aaron Schaefer, Slava Pestov.
|
||||||
! See http://factorcode.org/license.txt for BSD license.
|
! See http://factorcode.org/license.txt for BSD license.
|
||||||
USING: kernel math math.functions math.ranges project-euler.common sequences
|
USING: kernel math math.functions math.ranges project-euler.common sequences
|
||||||
sets ;
|
sets ;
|
||||||
|
@ -47,14 +47,14 @@ PRIVATE>
|
||||||
|
|
||||||
|
|
||||||
: euler001b ( -- answer )
|
: euler001b ( -- answer )
|
||||||
1000 [ [ 5 mod ] [ 3 mod ] bi [ 0 = ] either? ] filter sum ;
|
1000 iota [ [ 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 [ { 3 5 } [ divisor? ] with any? ] filter sum ;
|
1000 iota [ { 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)
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
! Copyright (c) 2007 Aaron Schaefer.
|
! Copyright (c) 2007, 2009 Aaron Schaefer.
|
||||||
! See http://factorcode.org/license.txt for BSD license.
|
! See http://factorcode.org/license.txt for BSD license.
|
||||||
USING: math math.functions sequences project-euler.common ;
|
USING: math math.functions math.ranges project-euler.common sequences ;
|
||||||
IN: project-euler.005
|
IN: project-euler.005
|
||||||
|
|
||||||
! http://projecteuler.net/index.php?section=problems&id=5
|
! http://projecteuler.net/index.php?section=problems&id=5
|
||||||
|
@ -18,7 +18,7 @@ IN: project-euler.005
|
||||||
! --------
|
! --------
|
||||||
|
|
||||||
: euler005 ( -- answer )
|
: euler005 ( -- answer )
|
||||||
20 1 [ 1+ lcm ] reduce ;
|
20 [1,b] 1 [ lcm ] reduce ;
|
||||||
|
|
||||||
! [ euler005 ] 100 ave-time
|
! [ euler005 ] 100 ave-time
|
||||||
! 0 ms ave run time - 0.14 SD (100 trials)
|
! 0 ms ave run time - 0.14 SD (100 trials)
|
||||||
|
|
|
@ -38,7 +38,7 @@ IN: project-euler.030
|
||||||
PRIVATE>
|
PRIVATE>
|
||||||
|
|
||||||
: euler030 ( -- answer )
|
: euler030 ( -- answer )
|
||||||
325537 [ dup sum-fifth-powers = ] filter sum 1- ;
|
325537 iota [ 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)
|
||||||
|
|
|
@ -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 sequences project-euler.common ;
|
USING: kernel math math.functions math.ranges project-euler.common sequences ;
|
||||||
IN: project-euler.048
|
IN: project-euler.048
|
||||||
|
|
||||||
! http://projecteuler.net/index.php?section=problems&id=48
|
! http://projecteuler.net/index.php?section=problems&id=48
|
||||||
|
@ -17,7 +17,7 @@ IN: project-euler.048
|
||||||
! --------
|
! --------
|
||||||
|
|
||||||
: euler048 ( -- answer )
|
: euler048 ( -- answer )
|
||||||
1000 [ 1+ dup ^ ] sigma 10 10 ^ mod ;
|
1000 [1,b] [ dup ^ ] sigma 10 10 ^ mod ;
|
||||||
|
|
||||||
! [ euler048 ] 100 ave-time
|
! [ euler048 ] 100 ave-time
|
||||||
! 276 ms run / 1 ms GC ave time - 100 trials
|
! 276 ms run / 1 ms GC ave time - 100 trials
|
||||||
|
|
|
@ -61,7 +61,7 @@ IN: project-euler.055
|
||||||
PRIVATE>
|
PRIVATE>
|
||||||
|
|
||||||
: euler055 ( -- answer )
|
: euler055 ( -- answer )
|
||||||
10000 [ lychrel? ] count ;
|
10000 iota [ 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)
|
||||||
|
|
|
@ -11,14 +11,14 @@ IN: project-euler.057
|
||||||
! It is possible to show that the square root of two can be expressed
|
! It is possible to show that the square root of two can be expressed
|
||||||
! as an infinite continued fraction.
|
! as an infinite continued fraction.
|
||||||
|
|
||||||
! √ 2 = 1 + 1/(2 + 1/(2 + 1/(2 + ... ))) = 1.414213...
|
! √ 2 = 1 + 1/(2 + 1/(2 + 1/(2 + ... ))) = 1.414213...
|
||||||
|
|
||||||
! By expanding this for the first four iterations, we get:
|
! By expanding this for the first four iterations, we get:
|
||||||
|
|
||||||
! 1 + 1/2 = 3/2 = 1.5
|
! 1 + 1/2 = 3/2 = 1.5
|
||||||
! 1 + 1/(2 + 1/2) = 7/5 = 1.4
|
! 1 + 1/(2 + 1/2) = 7/5 = 1.4
|
||||||
! 1 + 1/(2 + 1/(2 + 1/2)) = 17/12 = 1.41666...
|
! 1 + 1/(2 + 1/(2 + 1/2)) = 17/12 = 1.41666...
|
||||||
! 1 + 1/(2 + 1/(2 + 1/(2 + 1/2))) = 41/29 = 1.41379...
|
! 1 + 1/(2 + 1/(2 + 1/(2 + 1/2))) = 41/29 = 1.41379...
|
||||||
|
|
||||||
! The next three expansions are 99/70, 239/169, and 577/408, but the
|
! The next three expansions are 99/70, 239/169, and 577/408, but the
|
||||||
! eighth expansion, 1393/985, is the first example where the number of
|
! eighth expansion, 1393/985, is the first example where the number of
|
||||||
|
@ -35,9 +35,9 @@ IN: project-euler.057
|
||||||
>fraction [ number>string length ] bi@ > ; inline
|
>fraction [ number>string length ] bi@ > ; inline
|
||||||
|
|
||||||
: euler057 ( -- answer )
|
: euler057 ( -- answer )
|
||||||
0 1000 [ drop 2 + recip dup 1+ longer-numerator? ] count nip ;
|
0 1000 iota [ drop 2 + recip dup 1+ longer-numerator? ] count nip ;
|
||||||
|
|
||||||
! [ euler057 ] time
|
! [ euler057 ] 100 ave-time
|
||||||
! 3.375118 seconds
|
! 1728 ms ave run time - 80.81 SD (100 trials)
|
||||||
|
|
||||||
SOLUTION: euler057
|
SOLUTION: euler057
|
||||||
|
|
Loading…
Reference in New Issue