project-euler.common: add a digits>number.
parent
1b228c7e9c
commit
f59d8ef0c1
|
@ -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.combinatorics math.parser project-euler.common
|
USING: kernel math.combinatorics project-euler.common
|
||||||
sequences ;
|
sequences ;
|
||||||
IN: project-euler.024
|
IN: project-euler.024
|
||||||
|
|
||||||
|
@ -24,7 +24,7 @@ IN: project-euler.024
|
||||||
! --------
|
! --------
|
||||||
|
|
||||||
: euler024 ( -- answer )
|
: euler024 ( -- answer )
|
||||||
999999 10 iota permutation 10 digits>integer ;
|
999999 10 iota permutation digits>number ;
|
||||||
|
|
||||||
! [ euler024 ] 100 ave-time
|
! [ euler024 ] 100 ave-time
|
||||||
! 0 ms ave run time - 0.27 SD (100 trials)
|
! 0 ms ave run time - 0.27 SD (100 trials)
|
||||||
|
|
|
@ -28,7 +28,7 @@ IN: project-euler.032
|
||||||
|
|
||||||
: source-032 ( -- seq )
|
: source-032 ( -- seq )
|
||||||
9 factorial iota [
|
9 factorial iota [
|
||||||
9 iota permutation [ 1 + ] map 10 digits>integer
|
9 iota permutation [ 1 + ] map digits>number
|
||||||
] map ;
|
] map ;
|
||||||
|
|
||||||
: 1and4 ( n -- ? )
|
: 1and4 ( n -- ? )
|
||||||
|
|
|
@ -38,7 +38,7 @@ IN: project-euler.035
|
||||||
|
|
||||||
: (circular?) ( seq n -- ? )
|
: (circular?) ( seq n -- ? )
|
||||||
dup 0 > [
|
dup 0 > [
|
||||||
2dup rotate 10 digits>integer
|
2dup rotate digits>number
|
||||||
prime? [ 1 - (circular?) ] [ 2drop f ] if
|
prime? [ 1 - (circular?) ] [ 2drop f ] if
|
||||||
] [
|
] [
|
||||||
2drop t
|
2drop t
|
||||||
|
|
|
@ -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 math.ranges project-euler.common sequences
|
USING: kernel math math.ranges project-euler.common sequences
|
||||||
strings ;
|
strings ;
|
||||||
IN: project-euler.038
|
IN: project-euler.038
|
||||||
|
|
||||||
|
@ -37,7 +37,7 @@ IN: project-euler.038
|
||||||
|
|
||||||
: (concat-product) ( accum n multiplier -- m )
|
: (concat-product) ( accum n multiplier -- m )
|
||||||
pick length 8 > [
|
pick length 8 > [
|
||||||
2drop 10 digits>integer
|
2drop digits>number
|
||||||
] [
|
] [
|
||||||
[ * number>digits append! ] 2keep 1 + (concat-product)
|
[ * number>digits append! ] 2keep 1 + (concat-product)
|
||||||
] if ;
|
] if ;
|
||||||
|
|
|
@ -32,7 +32,7 @@ IN: project-euler.041
|
||||||
|
|
||||||
: euler041 ( -- answer )
|
: euler041 ( -- answer )
|
||||||
{ 7 6 5 4 3 2 1 } all-permutations
|
{ 7 6 5 4 3 2 1 } all-permutations
|
||||||
[ 10 digits>integer ] map [ prime? ] find nip ;
|
[ digits>number ] map [ prime? ] find nip ;
|
||||||
|
|
||||||
! [ euler041 ] 100 ave-time
|
! [ euler041 ] 100 ave-time
|
||||||
! 64 ms ave run time - 4.22 SD (100 trials)
|
! 64 ms ave run time - 4.22 SD (100 trials)
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
! 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: combinators.short-circuit kernel math math.functions math.combinatorics
|
USING: combinators.short-circuit kernel math math.functions math.combinatorics
|
||||||
math.parser math.ranges project-euler.common sequences sets sorting ;
|
math.ranges project-euler.common sequences sets sorting ;
|
||||||
IN: project-euler.043
|
IN: project-euler.043
|
||||||
|
|
||||||
! http://projecteuler.net/index.php?section=problems&id=43
|
! http://projecteuler.net/index.php?section=problems&id=43
|
||||||
|
@ -36,7 +36,7 @@ IN: project-euler.043
|
||||||
<PRIVATE
|
<PRIVATE
|
||||||
|
|
||||||
: subseq-divisible? ( n index seq -- ? )
|
: subseq-divisible? ( n index seq -- ? )
|
||||||
[ 1 - dup 3 + ] dip subseq 10 digits>integer swap divisor? ;
|
[ 1 - dup 3 + ] dip subseq digits>number swap divisor? ;
|
||||||
|
|
||||||
: interesting? ( seq -- ? )
|
: interesting? ( seq -- ? )
|
||||||
{
|
{
|
||||||
|
@ -54,7 +54,7 @@ PRIVATE>
|
||||||
: euler043 ( -- answer )
|
: euler043 ( -- answer )
|
||||||
1234567890 number>digits 0 [
|
1234567890 number>digits 0 [
|
||||||
dup interesting? [
|
dup interesting? [
|
||||||
10 digits>integer +
|
digits>number +
|
||||||
] [ drop ] if
|
] [ drop ] if
|
||||||
] reduce-permutations ;
|
] reduce-permutations ;
|
||||||
|
|
||||||
|
@ -93,7 +93,7 @@ PRIVATE>
|
||||||
PRIVATE>
|
PRIVATE>
|
||||||
|
|
||||||
: euler043a ( -- answer )
|
: euler043a ( -- answer )
|
||||||
interesting-pandigitals [ 10 digits>integer ] map-sum ;
|
interesting-pandigitals [ digits>number ] map-sum ;
|
||||||
|
|
||||||
! [ euler043a ] 100 ave-time
|
! [ euler043a ] 100 ave-time
|
||||||
! 10 ms ave run time - 1.37 SD (100 trials)
|
! 10 ms ave run time - 1.37 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.parser math.ranges project-euler.common sequences ;
|
USING: kernel math 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
|
||||||
|
@ -45,7 +45,7 @@ IN: project-euler.055
|
||||||
<PRIVATE
|
<PRIVATE
|
||||||
|
|
||||||
: add-reverse ( n -- m )
|
: add-reverse ( n -- m )
|
||||||
dup number>digits reverse 10 digits>integer + ;
|
dup number>digits reverse digits>number + ;
|
||||||
|
|
||||||
: (lychrel?) ( n iteration -- ? )
|
: (lychrel?) ( n iteration -- ? )
|
||||||
dup 50 < [
|
dup 50 < [
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
! 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: assocs io.encodings.ascii io.files kernel make math math.parser
|
USING: assocs io.encodings.ascii io.files kernel make math
|
||||||
sequences sets project-euler.common ;
|
math.parser sequences sets project-euler.common ;
|
||||||
IN: project-euler.079
|
IN: project-euler.079
|
||||||
|
|
||||||
! http://projecteuler.net/index.php?section=problems&id=79
|
! http://projecteuler.net/index.php?section=problems&id=79
|
||||||
|
@ -55,7 +55,7 @@ PRIVATE>
|
||||||
combine over diff append ;
|
combine over diff append ;
|
||||||
|
|
||||||
: euler079 ( -- answer )
|
: euler079 ( -- answer )
|
||||||
source-079 >edges topological-sort 10 digits>integer ;
|
source-079 >edges topological-sort digits>number ;
|
||||||
|
|
||||||
! [ euler079 ] 100 ave-time
|
! [ euler079 ] 100 ave-time
|
||||||
! 1 ms ave run time - 0.46 SD (100 trials)
|
! 1 ms ave run time - 0.46 SD (100 trials)
|
||||||
|
|
|
@ -82,6 +82,9 @@ PRIVATE>
|
||||||
: number>digits ( n -- seq )
|
: number>digits ( n -- seq )
|
||||||
[ dup 0 = not ] [ 10 /mod ] produce reverse! nip ;
|
[ dup 0 = not ] [ 10 /mod ] produce reverse! nip ;
|
||||||
|
|
||||||
|
: digits>number ( seq -- n )
|
||||||
|
0 [ [ 10 * ] [ + ] bi* ] reduce ;
|
||||||
|
|
||||||
: number-length ( n -- m )
|
: number-length ( n -- m )
|
||||||
abs [
|
abs [
|
||||||
1
|
1
|
||||||
|
|
Loading…
Reference in New Issue