Merge branch 'master' of git://projects.elasticdog.com/git/factor
commit
3a5762b44c
File diff suppressed because it is too large
Load Diff
|
@ -1,7 +1,7 @@
|
|||
! Copyright (c) 2007 Aaron Schaefer, Daniel Ehrenberg.
|
||||
! See http://factorcode.org/license.txt for BSD license.
|
||||
USING: hashtables kernel math math.parser math.ranges project-euler.common
|
||||
sequences sorting ;
|
||||
USING: hashtables kernel math math.ranges project-euler.common sequences
|
||||
sorting ;
|
||||
IN: project-euler.004
|
||||
|
||||
! http://projecteuler.net/index.php?section=problems&id=4
|
||||
|
@ -18,9 +18,6 @@ IN: project-euler.004
|
|||
! SOLUTION
|
||||
! --------
|
||||
|
||||
: palindrome? ( n -- ? )
|
||||
number>string dup reverse = ;
|
||||
|
||||
<PRIVATE
|
||||
|
||||
: source-004 ( -- seq )
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
! Copyright (c) 2007 Aaron Schaefer.
|
||||
! See http://factorcode.org/license.txt for BSD license.
|
||||
USING: combinators.lib kernel math.ranges math.text.english sequences strings
|
||||
ascii ;
|
||||
USING: kernel math.ranges math.text.english sequences sequences.lib strings
|
||||
ascii ;
|
||||
IN: project-euler.017
|
||||
|
||||
! http://projecteuler.net/index.php?section=problems&id=17
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
! Copyright (c) 2007 Samuel Tardieu, Aaron Schaefer.
|
||||
! See http://factorcode.org/license.txt for BSD license.
|
||||
USING: calendar combinators combinators.lib kernel math math.ranges namespaces
|
||||
sequences ;
|
||||
USING: calendar combinators kernel math math.ranges namespaces sequences
|
||||
sequences.lib ;
|
||||
IN: project-euler.019
|
||||
|
||||
! http://projecteuler.net/index.php?section=problems&id=19
|
||||
|
@ -32,7 +32,7 @@ IN: project-euler.019
|
|||
|
||||
: euler019 ( -- answer )
|
||||
1901 2000 [a,b] [
|
||||
12 [1,b] [ 1 zeller-congruence ] 1 map-withn
|
||||
12 [1,b] [ 1 zeller-congruence ] map-with
|
||||
] map concat [ zero? ] count ;
|
||||
|
||||
! [ euler019 ] 100 ave-time
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
! Copyright (c) 2007 Aaron Schaefer.
|
||||
! See http://factorcode.org/license.txt for BSD license.
|
||||
USING: combinators.lib kernel math math.functions math.ranges namespaces
|
||||
project-euler.common sequences ;
|
||||
project-euler.common sequences sequences.lib ;
|
||||
IN: project-euler.021
|
||||
|
||||
! http://projecteuler.net/index.php?section=problems&id=21
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
! Copyright (c) 2008 Aaron Schaefer.
|
||||
! See http://factorcode.org/license.txt for BSD license.
|
||||
USING: combinators.lib kernel math math.ranges ;
|
||||
USING: kernel math math.ranges sequences.lib ;
|
||||
IN: project-euler.028
|
||||
|
||||
! http://projecteuler.net/index.php?section=problems&id=28
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
! Copyright (c) 2008 Aaron Schaefer.
|
||||
! See http://factorcode.org/license.txt for BSD license.
|
||||
USING: combinators.lib kernel math math.functions project-euler.common sequences ;
|
||||
USING: kernel math math.functions project-euler.common sequences sequences.lib ;
|
||||
IN: project-euler.030
|
||||
|
||||
! http://projecteuler.net/index.php?section=problems&id=30
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
! Copyright (c) 2008 Aaron Schaefer.
|
||||
! See http://factorcode.org/license.txt for BSD license.
|
||||
USING: combinators.lib kernel math.ranges project-euler.common sequences ;
|
||||
USING: kernel math.ranges project-euler.common sequences sequences.lib ;
|
||||
IN: project-euler.034
|
||||
|
||||
! http://projecteuler.net/index.php?section=problems&id=34
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
! Copyright (c) 2008 Aaron Schaefer.
|
||||
! See http://factorcode.org/license.txt for BSD license.
|
||||
USING: combinators.lib kernel math math.combinatorics math.parser math.primes
|
||||
project-euler.common sequences ;
|
||||
USING: kernel math math.combinatorics math.parser math.primes
|
||||
project-euler.common sequences sequences.lib ;
|
||||
IN: project-euler.035
|
||||
|
||||
! http://projecteuler.net/index.php?section=problems&id=35
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
! Copyright (c) 2008 Aaron Schaefer.
|
||||
! See http://factorcode.org/license.txt for BSD license.
|
||||
USING: combinators.lib kernel math.parser math.ranges sequences ;
|
||||
USING: combinators.lib kernel math.parser math.ranges project-euler.common
|
||||
sequences ;
|
||||
IN: project-euler.036
|
||||
|
||||
! http://projecteuler.net/index.php?section=problems&id=36
|
||||
|
@ -24,12 +25,9 @@ IN: project-euler.036
|
|||
|
||||
<PRIVATE
|
||||
|
||||
: palindrome? ( str -- ? )
|
||||
dup reverse = ;
|
||||
|
||||
: both-bases? ( n -- ? )
|
||||
{ [ dup number>string palindrome? ]
|
||||
[ dup >bin palindrome? ] } && nip ;
|
||||
{ [ dup palindrome? ]
|
||||
[ dup >bin dup reverse = ] } && nip ;
|
||||
|
||||
PRIVATE>
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
! Copyright (c) 2008 Aaron Schaefer.
|
||||
! See http://factorcode.org/license.txt for BSD license.
|
||||
USING: arrays combinators.lib kernel math math.ranges namespaces
|
||||
project-euler.common sequences ;
|
||||
USING: arrays combinators.cleave combinators.lib kernel math math.ranges
|
||||
namespaces project-euler.common sequences ;
|
||||
IN: project-euler.039
|
||||
|
||||
! http://projecteuler.net/index.php?section=problems&id=39
|
||||
|
@ -43,7 +43,7 @@ SYMBOL: p-count
|
|||
: (count-perimeters) ( seq -- )
|
||||
dup sum max-p < [
|
||||
dup sum adjust-p-count
|
||||
[ u-transform ] keep [ a-transform ] keep d-transform
|
||||
[ u-transform ] [ a-transform ] [ d-transform ] tri
|
||||
[ (count-perimeters) ] 3apply
|
||||
] [
|
||||
drop
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
! Copyright (c) 2008 Aaron Schaefer.
|
||||
! See http://factorcode.org/license.txt for BSD license.
|
||||
USING: ascii combinators.lib io.files kernel math math.functions namespaces
|
||||
project-euler.common sequences splitting ;
|
||||
USING: ascii io.files kernel math math.functions namespaces
|
||||
project-euler.common sequences sequences.lib splitting ;
|
||||
IN: project-euler.042
|
||||
|
||||
! http://projecteuler.net/index.php?section=problems&id=42
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
! Copyright (c) 2008 Aaron Schaefer.
|
||||
! See http://factorcode.org/license.txt for BSD license.
|
||||
USING: combinators.lib hashtables kernel math math.combinatorics math.parser
|
||||
math.ranges project-euler.common sequences sorting ;
|
||||
math.ranges project-euler.common sequences sequences.lib sorting ;
|
||||
IN: project-euler.043
|
||||
|
||||
! http://projecteuler.net/index.php?section=problems&id=43
|
||||
|
|
|
@ -30,9 +30,6 @@ IN: project-euler.044
|
|||
: nth-pentagonal ( n -- seq )
|
||||
dup 3 * 1- * 2 / ;
|
||||
|
||||
: pentagonal? ( n -- ? )
|
||||
dup 0 > [ 24 * 1+ sqrt 1+ 6 / 1 mod zero? ] [ drop f ] if ;
|
||||
|
||||
: sum-and-diff? ( m n -- ? )
|
||||
2dup + -rot - [ pentagonal? ] 2apply and ;
|
||||
|
||||
|
|
|
@ -0,0 +1,49 @@
|
|||
! Copyright (c) 2008 Aaron Schaefer.
|
||||
! See http://factorcode.org/license.txt for BSD license.
|
||||
USING: kernel math project-euler.common ;
|
||||
IN: project-euler.045
|
||||
|
||||
! http://projecteuler.net/index.php?section=problems&id=45
|
||||
|
||||
! DESCRIPTION
|
||||
! -----------
|
||||
|
||||
! Triangle, pentagonal, and hexagonal numbers are generated by the following
|
||||
! formulae:
|
||||
! Triangle Tn = n(n + 1) / 2 1, 3, 6, 10, 15, ...
|
||||
! Pentagonal Pn = n(3n − 1) / 2 1, 5, 12, 22, 35, ...
|
||||
! Hexagonal Hn = n(2n − 1) 1, 6, 15, 28, 45, ...
|
||||
|
||||
! It can be verified that T285 = P165 = H143 = 40755.
|
||||
|
||||
! Find the next triangle number that is also pentagonal and hexagonal.
|
||||
|
||||
|
||||
! SOLUTION
|
||||
! --------
|
||||
|
||||
! All hexagonal numbers are also triangle numbers, so iterate through hexagonal
|
||||
! numbers until you find one that is pentagonal as well.
|
||||
|
||||
<PRIVATE
|
||||
|
||||
: nth-hexagonal ( n -- m )
|
||||
dup 2 * 1- * ;
|
||||
|
||||
DEFER: next-solution
|
||||
|
||||
: (next-solution) ( n hexagonal -- hexagonal )
|
||||
dup pentagonal? [ nip ] [ drop next-solution ] if ;
|
||||
|
||||
: next-solution ( n -- m )
|
||||
1+ dup nth-hexagonal (next-solution) ;
|
||||
|
||||
PRIVATE>
|
||||
|
||||
: euler045 ( -- answer )
|
||||
143 next-solution ;
|
||||
|
||||
! [ euler045 ] 100 ave-time
|
||||
! 18 ms run / 1 ms GC ave time - 100 trials
|
||||
|
||||
MAIN: euler045
|
|
@ -0,0 +1,52 @@
|
|||
! Copyright (c) 2008 Aaron Schaefer.
|
||||
! See http://factorcode.org/license.txt for BSD license.
|
||||
USING: kernel math math.functions math.primes math.ranges sequences ;
|
||||
IN: project-euler.046
|
||||
|
||||
! http://projecteuler.net/index.php?section=problems&id=46
|
||||
|
||||
! DESCRIPTION
|
||||
! -----------
|
||||
|
||||
! It was proposed by Christian Goldbach that every odd composite number can be
|
||||
! written as the sum of a prime and twice a square.
|
||||
|
||||
! 9 = 7 + 2 * 1^2
|
||||
! 15 = 7 + 2 * 2^2
|
||||
! 21 = 3 + 2 * 3^2
|
||||
! 25 = 7 + 2 * 3^2
|
||||
! 27 = 19 + 2 * 2^2
|
||||
! 33 = 31 + 2 * 1^2
|
||||
|
||||
! It turns out that the conjecture was false.
|
||||
|
||||
! What is the smallest odd composite that cannot be written as the sum of a
|
||||
! prime and twice a square?
|
||||
|
||||
|
||||
! SOLUTION
|
||||
! --------
|
||||
|
||||
<PRIVATE
|
||||
|
||||
: perfect-squares ( n -- seq )
|
||||
2 /i sqrt >integer [1,b] [ sq ] map ;
|
||||
|
||||
: fits-conjecture? ( n -- ? )
|
||||
dup perfect-squares [ 2 * - ] with map [ prime? ] contains? ;
|
||||
|
||||
: next-odd-composite ( n -- m )
|
||||
dup odd? [ 2 + ] [ 1+ ] if dup prime? [ next-odd-composite ] when ;
|
||||
|
||||
: disprove-conjecture ( n -- m )
|
||||
dup fits-conjecture? [ next-odd-composite disprove-conjecture ] when ;
|
||||
|
||||
PRIVATE>
|
||||
|
||||
: euler046 ( -- answer )
|
||||
9 disprove-conjecture ;
|
||||
|
||||
! [ euler046 ] 100 ave-time
|
||||
! 150 ms run / 2 ms GC ave time - 100 trials
|
||||
|
||||
MAIN: euler046
|
|
@ -1,6 +1,6 @@
|
|||
! Copyright (c) 2008 Aaron Schaefer.
|
||||
! See http://factorcode.org/license.txt for BSD license.
|
||||
USING: combinators.lib kernel math math.functions ;
|
||||
USING: kernel math math.functions sequences.lib ;
|
||||
IN: project-euler.048
|
||||
|
||||
! http://projecteuler.net/index.php?section=problems&id=48
|
||||
|
|
|
@ -0,0 +1,35 @@
|
|||
! Copyright (c) 2008 Aaron Schaefer.
|
||||
! See http://factorcode.org/license.txt for BSD license.
|
||||
USING: kernel math math.combinatorics math.ranges sequences.lib ;
|
||||
IN: project-euler.053
|
||||
|
||||
! http://projecteuler.net/index.php?section=problems&id=53
|
||||
|
||||
! DESCRIPTION
|
||||
! -----------
|
||||
|
||||
! There are exactly ten ways of selecting three from five, 12345:
|
||||
|
||||
! 123, 124, 125, 134, 135, 145, 234, 235, 245, and 345
|
||||
|
||||
! In combinatorics, we use the notation, 5C3 = 10.
|
||||
|
||||
! In general,
|
||||
! nCr = n! / r! * (n - r)!
|
||||
! where r ≤ n, n! = n * (n − 1) * ... * 3 * 2 * 1, and 0! = 1.
|
||||
|
||||
! It is not until n = 23, that a value exceeds one-million: 23C10 = 1144066.
|
||||
|
||||
! How many values of nCr, for 1 ≤ n ≤ 100, are greater than one-million?
|
||||
|
||||
|
||||
! SOLUTION
|
||||
! --------
|
||||
|
||||
: euler053 ( -- answer )
|
||||
23 100 [a,b] [ dup [ nCk 1000000 > ] with count ] sigma ;
|
||||
|
||||
! [ euler053 ] 100 ave-time
|
||||
! 64 ms run / 2 ms GC ave time - 100 trials
|
||||
|
||||
MAIN: euler053
|
|
@ -0,0 +1,69 @@
|
|||
! Copyright (c) 2008 Aaron Schaefer.
|
||||
! See http://factorcode.org/license.txt for BSD license.
|
||||
USING: kernel math math.parser project-euler.common sequences sequences.lib ;
|
||||
IN: project-euler.055
|
||||
|
||||
! http://projecteuler.net/index.php?section=problems&id=55
|
||||
|
||||
! DESCRIPTION
|
||||
! -----------
|
||||
|
||||
! If we take 47, reverse and add, 47 + 74 = 121, which is palindromic.
|
||||
|
||||
! Not all numbers produce palindromes so quickly. For example,
|
||||
|
||||
! 349 + 943 = 1292,
|
||||
! 1292 + 2921 = 4213
|
||||
! 4213 + 3124 = 7337
|
||||
|
||||
! That is, 349 took three iterations to arrive at a palindrome.
|
||||
|
||||
! Although no one has proved it yet, it is thought that some numbers, like 196,
|
||||
! never produce a palindrome. A number that never forms a palindrome through
|
||||
! the reverse and add process is called a Lychrel number. Due to the
|
||||
! theoretical nature of these numbers, and for the purpose of this problem, we
|
||||
! shall assume that a number is Lychrel until proven otherwise. In addition you
|
||||
! are given that for every number below ten-thousand, it will either (i) become a
|
||||
! palindrome in less than fifty iterations, or, (ii) no one, with all the
|
||||
! computing power that exists, has managed so far to map it to a palindrome. In
|
||||
! fact, 10677 is the first number to be shown to require over fifty iterations
|
||||
! before producing a palindrome: 4668731596684224866951378664 (53 iterations,
|
||||
! 28-digits).
|
||||
|
||||
! Surprisingly, there are palindromic numbers that are themselves Lychrel
|
||||
! numbers; the first example is 4994.
|
||||
|
||||
! How many Lychrel numbers are there below ten-thousand?
|
||||
|
||||
! NOTE: Wording was modified slightly on 24 April 2007 to emphasise the
|
||||
! theoretical nature of Lychrel numbers.
|
||||
|
||||
|
||||
! SOLUTION
|
||||
! --------
|
||||
|
||||
<PRIVATE
|
||||
|
||||
: add-reverse ( n -- m )
|
||||
dup number>digits reverse 10 digits>integer + ;
|
||||
|
||||
: (lychrel?) ( n iteration -- ? )
|
||||
dup 50 < [
|
||||
>r add-reverse dup palindrome?
|
||||
[ r> 2drop f ] [ r> 1+ (lychrel?) ] if
|
||||
] [
|
||||
2drop t
|
||||
] if ;
|
||||
|
||||
: lychrel? ( n -- ? )
|
||||
1 (lychrel?) ;
|
||||
|
||||
PRIVATE>
|
||||
|
||||
: euler055 ( -- answer )
|
||||
10000 [ lychrel? ] count ;
|
||||
|
||||
! [ euler055 ] 100 ave-time
|
||||
! 1370 ms run / 31 ms GC ave time - 100 trials
|
||||
|
||||
MAIN: euler055
|
|
@ -0,0 +1,31 @@
|
|||
! Copyright (c) 2008 Aaron Schaefer.
|
||||
! See http://factorcode.org/license.txt for BSD license.
|
||||
USING: kernel math.functions math.ranges project-euler.common sequences ;
|
||||
IN: project-euler.056
|
||||
|
||||
! http://projecteuler.net/index.php?section=problems&id=56
|
||||
|
||||
! DESCRIPTION
|
||||
! -----------
|
||||
|
||||
! A googol (10^100) is a massive number: one followed by one-hundred zeros;
|
||||
! 100^100 is almost unimaginably large: one followed by two-hundred zeros.
|
||||
! Despite their size, the sum of the digits in each number is only 1.
|
||||
|
||||
! Considering natural numbers of the form, a^b, where a, b < 100, what is the
|
||||
! maximum digital sum?
|
||||
|
||||
|
||||
! SOLUTION
|
||||
! --------
|
||||
|
||||
! Through analysis, you only need to check when a and b > 90
|
||||
|
||||
: euler056 ( -- answer )
|
||||
90 100 [a,b) dup cartesian-product
|
||||
[ first2 ^ number>digits sum ] map supremum ;
|
||||
|
||||
! [ euler056 ] 100 ave-time
|
||||
! 33 ms run / 1 ms GC ave time - 100 trials
|
||||
|
||||
MAIN: euler056
|
|
@ -1,7 +1,7 @@
|
|||
! Copyright (c) 2008 Aaron Schaefer.
|
||||
! See http://factorcode.org/license.txt for BSD license.
|
||||
USING: arrays combinators.lib kernel math math.ranges namespaces
|
||||
project-euler.common sequences ;
|
||||
USING: arrays combinators.cleave combinators.lib kernel math math.ranges
|
||||
namespaces project-euler.common sequences sequences.lib ;
|
||||
IN: project-euler.075
|
||||
|
||||
! http://projecteuler.net/index.php?section=problems&id=75
|
||||
|
@ -56,7 +56,7 @@ SYMBOL: p-count
|
|||
: (count-perimeters) ( seq -- )
|
||||
dup sum max-p < [
|
||||
dup sum adjust-p-count
|
||||
[ u-transform ] keep [ a-transform ] keep d-transform
|
||||
[ u-transform ] [ a-transform ] [ d-transform ] tri
|
||||
[ (count-perimeters) ] 3apply
|
||||
] [
|
||||
drop
|
||||
|
|
|
@ -0,0 +1,54 @@
|
|||
! Copyright (c) 2008 Aaron Schaefer, Slava Pestov.
|
||||
! See http://factorcode.org/license.txt for BSD license.
|
||||
USING: kernel math math.ranges sequences ;
|
||||
IN: project-euler.092
|
||||
|
||||
! http://projecteuler.net/index.php?section=problems&id=92
|
||||
|
||||
! DESCRIPTION
|
||||
! -----------
|
||||
|
||||
! A number chain is created by continuously adding the square of the digits in
|
||||
! a number to form a new number until it has been seen before.
|
||||
|
||||
! For example,
|
||||
|
||||
! 44 -> 32 -> 13 -> 10 -> 1 -> 1
|
||||
! 85 -> 89 -> 145 -> 42 -> 20 -> 4 -> 16 -> 37 -> 58 -> 89
|
||||
|
||||
! Therefore any chain that arrives at 1 or 89 will become stuck in an endless
|
||||
! loop. What is most amazing is that EVERY starting number will eventually
|
||||
! arrive at 1 or 89.
|
||||
|
||||
! How many starting numbers below ten million will arrive at 89?
|
||||
|
||||
|
||||
! SOLUTION
|
||||
! --------
|
||||
|
||||
<PRIVATE
|
||||
|
||||
: next-link ( n -- m )
|
||||
0 swap [ dup zero? not ] [ 10 /mod sq -rot [ + ] dip ] [ ] while drop ;
|
||||
|
||||
: chain-ending ( n -- m )
|
||||
dup 1 = over 89 = or [ next-link chain-ending ] unless ;
|
||||
|
||||
: lower-endings ( -- seq )
|
||||
567 [1,b] [ chain-ending ] map ;
|
||||
|
||||
: fast-chain-ending ( seq n -- m )
|
||||
dup 567 > [ next-link ] when 1- swap nth ;
|
||||
|
||||
: count ( seq quot -- n )
|
||||
0 -rot [ rot >r call [ r> 1+ ] [ r> ] if ] curry each ; inline
|
||||
|
||||
PRIVATE>
|
||||
|
||||
: euler092 ( -- answer )
|
||||
lower-endings 9999999 [1,b] [ fast-chain-ending 89 = ] with count ;
|
||||
|
||||
! [ euler092 ] 10 ave-time
|
||||
! 11169 ms run / 0 ms GC ave time - 10 trials
|
||||
|
||||
MAIN: euler092
|
|
@ -1,6 +1,6 @@
|
|||
USING: arrays combinators.lib kernel math math.functions math.miller-rabin
|
||||
math.matrices math.parser math.primes.factors math.ranges namespaces
|
||||
sequences sorting unicode.case ;
|
||||
USING: arrays kernel math math.functions math.miller-rabin math.matrices
|
||||
math.parser math.primes.factors math.ranges namespaces sequences
|
||||
sequences.lib sorting unicode.case ;
|
||||
IN: project-euler.common
|
||||
|
||||
! A collection of words used by more than one Project Euler solution
|
||||
|
@ -9,13 +9,15 @@ IN: project-euler.common
|
|||
! Problems using each public word
|
||||
! -------------------------------
|
||||
! alpha-value - #22, #42
|
||||
! cartesian-product - #4, #27, #29, #32, #33
|
||||
! cartesian-product - #4, #27, #29, #32, #33, #43, #44, #56
|
||||
! collect-consecutive - #8, #11
|
||||
! log10 - #25, #134
|
||||
! max-path - #18, #67
|
||||
! nth-triangle - #12, #42
|
||||
! number>digits - #16, #20, #30, #34
|
||||
! number>digits - #16, #20, #30, #34, #35, #38, #43, #52, #55, #56
|
||||
! palindrome? - #4, #36, #55
|
||||
! pandigital? - #32, #38
|
||||
! pentagonal? - #44, #45
|
||||
! propagate-all - #18, #67
|
||||
! sum-proper-divisors - #21
|
||||
! tau* - #12
|
||||
|
@ -76,14 +78,20 @@ PRIVATE>
|
|||
] if ;
|
||||
|
||||
: number>digits ( n -- seq )
|
||||
number>string string>digits ;
|
||||
[ dup zero? not ] [ 10 /mod ] [ ] unfold reverse nip ;
|
||||
|
||||
: nth-triangle ( n -- n )
|
||||
dup 1+ * 2 / ;
|
||||
|
||||
: palindrome? ( n -- ? )
|
||||
number>string dup reverse = ;
|
||||
|
||||
: pandigital? ( n -- ? )
|
||||
number>string natural-sort "123456789" = ;
|
||||
|
||||
: pentagonal? ( n -- ? )
|
||||
dup 0 > [ 24 * 1+ sqrt 1+ 6 / 1 mod zero? ] [ drop f ] if ;
|
||||
|
||||
! Not strictly needed, but it is nice to be able to dump the triangle after the
|
||||
! propagation
|
||||
: propagate-all ( triangle -- newtriangle )
|
||||
|
|
|
@ -13,9 +13,10 @@ USING: definitions io io.files kernel math math.parser project-euler.ave-time
|
|||
project-euler.033 project-euler.034 project-euler.035 project-euler.036
|
||||
project-euler.037 project-euler.038 project-euler.039 project-euler.040
|
||||
project-euler.041 project-euler.042 project-euler.043 project-euler.044
|
||||
project-euler.048 project-euler.052 project-euler.067 project-euler.075
|
||||
project-euler.079 project-euler.097 project-euler.134 project-euler.169
|
||||
project-euler.173 project-euler.175 ;
|
||||
project-euler.045 project-euler.046 project-euler.048 project-euler.052
|
||||
project-euler.053 project-euler.056 project-euler.067 project-euler.075
|
||||
project-euler.079 project-euler.092 project-euler.097 project-euler.134
|
||||
project-euler.169 project-euler.173 project-euler.175 ;
|
||||
IN: project-euler
|
||||
|
||||
<PRIVATE
|
||||
|
|
Loading…
Reference in New Issue