! Copyright (c) 2007 Aaron Schaefer.
! See http://factorcode.org/license.txt for BSD license.
-USING: kernel math math.ranges sequences ;
+USING: kernel math math.ranges sequences project-euler.common ;
IN: project-euler.001
! http://projecteuler.net/index.php?section=problems&id=1
! [ euler001b ] 100 ave-time
! 0 ms run / 0 ms GC ave time - 100 trials
-MAIN: euler001
+SOLUTION: euler001
! Copyright (c) 2007, 2008 Aaron Schaefer, Alexander Solovyov, Vishal Talwar.
! See http://factorcode.org/license.txt for BSD license.
-USING: kernel math sequences ;
+USING: kernel math sequences project-euler.common ;
IN: project-euler.002
! http://projecteuler.net/index.php?section=problems&id=2
! [ euler002b ] 100 ave-time
! 0 ms ave run time - 0.0 SD (100 trials)
-MAIN: euler002b
+SOLUTION: euler002b
! Copyright (c) 2007 Aaron Schaefer.
! See http://factorcode.org/license.txt for BSD license.
-USING: math.primes.factors sequences ;
+USING: math.primes.factors sequences project-euler.common ;
IN: project-euler.003
! http://projecteuler.net/index.php?section=problems&id=3
! [ euler003 ] 100 ave-time
! 1 ms ave run time - 0.49 SD (100 trials)
-MAIN: euler003
+SOLUTION: euler003
! [ euler004 ] 100 ave-time
! 1164 ms ave run time - 39.35 SD (100 trials)
-MAIN: euler004
+SOLUTION: euler004
! Copyright (c) 2007 Aaron Schaefer.
! See http://factorcode.org/license.txt for BSD license.
-USING: math math.functions sequences ;
+USING: math math.functions sequences project-euler.common ;
IN: project-euler.005
! http://projecteuler.net/index.php?section=problems&id=5
! [ euler005 ] 100 ave-time
! 0 ms ave run time - 0.14 SD (100 trials)
-MAIN: euler005
+SOLUTION: euler005
! Copyright (c) 2007, 2008 Aaron Schaefer.
! See http://factorcode.org/license.txt for BSD license.
-USING: kernel math math.ranges sequences ;
+USING: kernel math math.ranges sequences project-euler.common ;
IN: project-euler.006
! http://projecteuler.net/index.php?section=problems&id=6
! [ euler006 ] 100 ave-time
! 0 ms ave run time - 0.24 SD (100 trials)
-MAIN: euler006
+SOLUTION: euler006
! Copyright (c) 2007 Aaron Schaefer.
! See http://factorcode.org/license.txt for BSD license.
-USING: lists math math.primes.lists ;
+USING: lists math math.primes.lists project-euler.common ;
IN: project-euler.007
! http://projecteuler.net/index.php?section=problems&id=7
! [ euler007 ] 100 ave-time
! 5 ms ave run time - 1.13 SD (100 trials)
-MAIN: euler007
+SOLUTION: euler007
! Copyright (c) 2007, 2008 Aaron Schaefer.
! See http://factorcode.org/license.txt for BSD license.
-USING: grouping math.order math.parser sequences ;
+USING: grouping math.order math.parser sequences project-euler.common ;
IN: project-euler.008
! http://projecteuler.net/index.php?section=problems&id=8
! [ euler008 ] 100 ave-time
! 2 ms ave run time - 0.79 SD (100 trials)
-MAIN: euler008
+SOLUTION: euler008
! Copyright (c) 2007, 2008 Aaron Schaefer.
! See http://factorcode.org/license.txt for BSD license.
-USING: kernel make math sequences sorting ;
+USING: kernel make math sequences sorting project-euler.common ;
IN: project-euler.009
! http://projecteuler.net/index.php?section=problems&id=9
! [ euler009 ] 100 ave-time
! 1 ms ave run time - 0.73 SD (100 trials)
-MAIN: euler009
+SOLUTION: euler009
! Copyright (c) 2007 Aaron Schaefer, Samuel Tardieu.
! See http://factorcode.org/license.txt for BSD license.
-USING: math.primes sequences ;
+USING: math.primes sequences project-euler.common ;
IN: project-euler.010
! http://projecteuler.net/index.php?section=problems&id=10
! [ euler010 ] 100 ave-time
! 15 ms ave run time - 0.41 SD (100 trials)
-MAIN: euler010
+SOLUTION: euler010
! Copyright (c) 2007, 2008 Aaron Schaefer.
! See http://factorcode.org/license.txt for BSD license.
-USING: grouping kernel make math.order sequences ;
+USING: grouping kernel make math.order sequences project-euler.common ;
IN: project-euler.011
! http://projecteuler.net/index.php?section=problems&id=11
! [ euler011 ] 100 ave-time
! 3 ms ave run time - 0.77 SD (100 trials)
-MAIN: euler011
+SOLUTION: euler011
! [ euler012 ] 10 ave-time
! 6573 ms ave run time - 346.27 SD (10 trials)
-MAIN: euler012
+SOLUTION: euler012
! Copyright (c) 2007 Aaron Schaefer.
! See http://factorcode.org/license.txt for BSD license.
-USING: math.parser sequences ;
+USING: math.parser sequences project-euler.common ;
IN: project-euler.013
! http://projecteuler.net/index.php?section=problems&id=13
! [ euler013 ] 100 ave-time
! 0 ms ave run time - 0.31 SD (100 trials)
-MAIN: euler013
+SOLUTION: euler013
! Copyright (c) 2007 Aaron Schaefer.
! See http://factorcode.org/license.txt for BSD license.
-USING: combinators.short-circuit kernel make math math.ranges sequences ;
+USING: combinators.short-circuit kernel make math math.ranges
+sequences project-euler.common ;
IN: project-euler.014
! http://projecteuler.net/index.php?section=problems&id=14
! TODO: try using memoization
-MAIN: euler014a
+SOLUTION: euler014a
! Copyright (c) 2007 Aaron Schaefer.
! See http://factorcode.org/license.txt for BSD license.
-USING: kernel math math.combinatorics ;
+USING: kernel math math.combinatorics project-euler.common ;
IN: project-euler.015
! http://projecteuler.net/index.php?section=problems&id=15
! [ euler015 ] 100 ave-time
! 0 ms ave run time - 0.2 SD (100 trials)
-MAIN: euler015
+SOLUTION: euler015
! [ euler016 ] 100 ave-time
! 0 ms ave run time - 0.67 SD (100 trials)
-MAIN: euler016
+SOLUTION: euler016
! Copyright (c) 2007, 2008 Aaron Schaefer.
! See http://factorcode.org/license.txt for BSD license.
-USING: ascii kernel math.ranges math.text.english sequences ;
+USING: ascii kernel math.ranges math.text.english sequences
+project-euler.common ;
IN: project-euler.017
! http://projecteuler.net/index.php?section=problems&id=17
! [ euler017 ] 100 ave-time
! 15 ms ave run time - 1.71 SD (100 trials)
-MAIN: euler017
+SOLUTION: euler017
! [ euler018a ] 100 ave-time
! 0 ms ave run time - 0.39 SD (100 trials)
-MAIN: euler018a
+SOLUTION: euler018a
! Copyright (c) 2007 Samuel Tardieu, Aaron Schaefer.
! See http://factorcode.org/license.txt for BSD license.
USING: calendar combinators kernel math math.ranges namespaces sequences
- math.order ;
+ math.order project-euler.common ;
IN: project-euler.019
! http://projecteuler.net/index.php?section=problems&id=19
! [ euler019a ] 100 ave-time
! 17 ms ave run time - 2.13 SD (100 trials)
-MAIN: euler019
+SOLUTION: euler019
! [ euler020 ] 100 ave-time
! 0 ms ave run time - 0.55 (100 trials)
-MAIN: euler020
+SOLUTION: euler020
! [ euler021 ] 100 ave-time
! 335 ms ave run time - 18.63 SD (100 trials)
-MAIN: euler021
+SOLUTION: euler021
! [ euler022 ] 100 ave-time
! 74 ms ave run time - 5.13 SD (100 trials)
-MAIN: euler022
+SOLUTION: euler022
! [ euler023 ] time
! 52780 ms run / 3839 ms GC
-MAIN: euler023
+SOLUTION: euler023
! Copyright (c) 2008 Aaron Schaefer.
! See http://factorcode.org/license.txt for BSD license.
-USING: kernel math.combinatorics math.parser ;
+USING: kernel math.combinatorics math.parser project-euler.common ;
IN: project-euler.024
! http://projecteuler.net/index.php?section=problems&id=24
! [ euler024 ] 100 ave-time
! 0 ms ave run time - 0.27 SD (100 trials)
-MAIN: euler024
+SOLUTION: euler024
! [ euler025a ] 100 ave-time
! 0 ms ave run time - 0.17 SD (100 trials)
-MAIN: euler025a
+SOLUTION: euler025a
! Copyright (c) 2008 Aaron Schaefer.
! See http://factorcode.org/license.txt for BSD license.
-USING: kernel math math.functions math.primes math.ranges sequences ;
+USING: kernel math math.functions math.primes math.ranges sequences project-euler.common ;
IN: project-euler.026
! http://projecteuler.net/index.php?section=problems&id=26
! [ euler026 ] 100 ave-time
! 290 ms ave run time - 19.2 SD (100 trials)
-MAIN: euler026
+SOLUTION: euler026
! Copyright (c) 2008 Aaron Schaefer.
! See http://factorcode.org/license.txt for BSD license.
-USING: kernel math math.primes project-euler.common sequences ;
+USING: kernel math math.primes project-euler.common sequences
+project-euler.common ;
IN: project-euler.027
! http://projecteuler.net/index.php?section=problems&id=27
! TODO: generalize max-consecutive/max-product (from #26) into a new word
-MAIN: euler027
+SOLUTION: euler027
! Copyright (c) 2008 Aaron Schaefer.
! See http://factorcode.org/license.txt for BSD license.
-USING: kernel math math.ranges sequences ;
+USING: kernel math math.ranges sequences project-euler.common ;
IN: project-euler.028
! http://projecteuler.net/index.php?section=problems&id=28
! [ euler028 ] 100 ave-time
! 0 ms ave run time - 0.39 SD (100 trials)
-MAIN: euler028
+SOLUTION: euler028
! [ euler029 ] 100 ave-time
! 704 ms ave run time - 28.07 SD (100 trials)
-MAIN: euler029
+SOLUTION: euler029
! [ euler030 ] 100 ave-time
! 1700 ms ave run time - 64.84 SD (100 trials)
-MAIN: euler030
+SOLUTION: euler030
! Copyright (c) 2008 Aaron Schaefer.
! See http://factorcode.org/license.txt for BSD license.
-USING: kernel math ;
+USING: kernel math project-euler.common ;
IN: project-euler.031
! http://projecteuler.net/index.php?section=problems&id=31
! TODO: generalize to eliminate duplication; use a sequence to specify denominations?
-MAIN: euler031
+SOLUTION: euler031
! [ euler032a ] 10 ave-time
! 2624 ms ave run time - 131.91 SD (10 trials)
-MAIN: euler032a
+SOLUTION: euler032a
! [ euler033 ] 100 ave-time
! 7 ms ave run time - 1.31 SD (100 trials)
-MAIN: euler033
+SOLUTION: euler033
! [ euler034 ] 10 ave-time
! 5506 ms ave run time - 144.0 SD (10 trials)
-MAIN: euler034
+SOLUTION: euler034
! TODO: try using bit arrays or other methods outlined here:
! http://home.comcast.net/~babdulbaki/Circular_Primes.html
-MAIN: euler035
+SOLUTION: euler035
! [ euler036 ] 100 ave-time
! 1703 ms ave run time - 96.6 SD (100 trials)
-MAIN: euler036
+SOLUTION: euler036
! Copyright (c) 2008 Aaron Schaefer.
! See http://factorcode.org/license.txt for BSD license.
-USING: kernel math math.parser math.primes sequences ;
+USING: kernel math math.parser math.primes sequences project-euler.common ;
IN: project-euler.037
! http://projecteuler.net/index.php?section=problems&id=37
! [ euler037 ] 100 ave-time
! 130 ms ave run time - 6.27 SD (100 trials)
-MAIN: euler037
+SOLUTION: euler037
! [ euler038 ] 100 ave-time
! 11 ms ave run time - 1.5 SD (100 trials)
-MAIN: euler038
+SOLUTION: euler038
! [ euler039 ] 100 ave-time
! 1 ms ave run time - 0.37 SD (100 trials)
-MAIN: euler039
+SOLUTION: euler039
! Copyright (c) 2008 Aaron Schaefer.
! See http://factorcode.org/license.txt for BSD license.
-USING: kernel math math.parser sequences strings ;
+USING: kernel math math.parser sequences strings project-euler.common ;
IN: project-euler.040
! http://projecteuler.net/index.php?section=problems&id=40
! [ euler040 ] 100 ave-time
! 444 ms ave run time - 23.64 SD (100 trials)
-MAIN: euler040
+SOLUTION: euler040
! Copyright (c) 2008 Aaron Schaefer.
! See http://factorcode.org/license.txt for BSD license.
-USING: kernel math.combinatorics math.parser math.primes sequences ;
+USING: kernel math.combinatorics math.parser math.primes sequences project-euler.common ;
IN: project-euler.041
! http://projecteuler.net/index.php?section=problems&id=41
! [ euler041 ] 100 ave-time
! 64 ms ave run time - 4.22 SD (100 trials)
-MAIN: euler041
+SOLUTION: euler041
! [ euler042a ] 100 ave-time
! 21 ms ave run time - 2.2 SD (100 trials)
-MAIN: euler042a
+SOLUTION: euler042a
! [ euler043a ] 100 ave-time
! 10 ms ave run time - 1.37 SD (100 trials)
-MAIN: euler043a
+SOLUTION: euler043a
! TODO: this solution is ugly and not very efficient...find a better algorithm
-MAIN: euler044
+SOLUTION: euler044
! [ euler045 ] 100 ave-time
! 12 ms ave run time - 1.71 SD (100 trials)
-MAIN: euler045
+SOLUTION: euler045
! Copyright (c) 2008 Aaron Schaefer.
! See http://factorcode.org/license.txt for BSD license.
-USING: kernel math math.functions math.primes math.ranges sequences ;
+USING: kernel math math.functions math.primes math.ranges sequences project-euler.common ;
IN: project-euler.046
! http://projecteuler.net/index.php?section=problems&id=46
! [ euler046 ] 100 ave-time
! 37 ms ave run time - 3.39 SD (100 trials)
-MAIN: euler046
+SOLUTION: euler046
! Copyright (c) 2008 Aaron Schaefer.
! See http://factorcode.org/license.txt for BSD license.
USING: arrays kernel math math.primes math.primes.factors
- math.ranges namespaces sequences ;
+ math.ranges namespaces sequences project-euler.common ;
IN: project-euler.047
! http://projecteuler.net/index.php?section=problems&id=47
! TODO: I don't like that you have to specify the upper bound, maybe try making
! this lazy so it could also short-circuit when it finds the answer?
-MAIN: euler047a
+SOLUTION: euler047a
! Copyright (c) 2008 Aaron Schaefer.
! See http://factorcode.org/license.txt for BSD license.
-USING: kernel math math.functions sequences ;
+USING: kernel math math.functions sequences project-euler.common ;
IN: project-euler.048
! http://projecteuler.net/index.php?section=problems&id=48
! [ euler048 ] 100 ave-time
! 276 ms run / 1 ms GC ave time - 100 trials
-MAIN: euler048
+SOLUTION: euler048
! [ euler050 ] 100 ave-time
! 291 ms run / 20.6 ms GC ave time - 100 trials
-MAIN: euler050
+SOLUTION: euler050
! [ euler052 ] 100 ave-time
! 92 ms ave run time - 6.29 SD (100 trials)
-MAIN: euler052
+SOLUTION: euler052
! Copyright (c) 2008 Aaron Schaefer.
! See http://factorcode.org/license.txt for BSD license.
-USING: kernel math math.combinatorics math.ranges sequences ;
+USING: kernel math math.combinatorics math.ranges sequences project-euler.common ;
IN: project-euler.053
! http://projecteuler.net/index.php?section=problems&id=53
! [ euler053 ] 100 ave-time
! 52 ms ave run time - 4.44 SD (100 trials)
-MAIN: euler053
+SOLUTION: euler053
! [ euler055 ] 100 ave-time
! 478 ms ave run time - 30.63 SD (100 trials)
-MAIN: euler055
+SOLUTION: euler055
! [ euler056 ] 100 ave-time
! 22 ms ave run time - 2.13 SD (100 trials)
-MAIN: euler056
+SOLUTION: euler056
! Copyright (c) 2008 Samuel Tardieu
! See http://factorcode.org/license.txt for BSD license.
-USING: kernel math math.functions math.parser sequences ;
+USING: kernel math math.functions math.parser sequences project-euler.common ;
IN: project-euler.057
! http://projecteuler.net/index.php?section=problems&id=57
! [ euler057 ] time
! 3.375118 seconds
-MAIN: euler057
+SOLUTION: euler057
! See http://factorcode.org/license.txt for BSD license.
USING: arrays ascii assocs hashtables io.encodings.ascii io.files kernel math
math.parser namespaces make sequences sequences.private sorting
- splitting grouping strings sets accessors ;
+ splitting grouping strings sets accessors project-euler.common ;
IN: project-euler.059
! http://projecteuler.net/index.php?section=problems&id=59
! [ euler059 ] 100 ave-time
! 8 ms ave run time - 1.4 SD (100 trials)
-MAIN: euler059
+SOLUTION: euler059
! [ euler067a ] 100 ave-time
! 21 ms ave run time - 2.65 SD (100 trials)
-MAIN: euler067a
+SOLUTION: euler067a
! [ euler071 ] 100 ave-time
! 155 ms ave run time - 6.95 SD (100 trials)
-MAIN: euler071
+SOLUTION: euler071
! [ euler073 ] 10 ave-time
! 20506 ms ave run time - 937.07 SD (10 trials)
-MAIN: euler073
+SOLUTION: euler073
! [ euler075 ] 10 ave-time
! 3341 ms ave run timen - 157.77 SD (10 trials)
-MAIN: euler075
+SOLUTION: euler075
! Copyright (c) 2008 Eric Mertens.
! See http://factorcode.org/license.txt for BSD license.
-USING: arrays assocs kernel locals math math.order math.ranges sequences ;
+USING: arrays assocs kernel locals math math.order math.ranges sequences project-euler.common ;
IN: project-euler.076
! http://projecteuler.net/index.php?section=problems&id=76
! [ euler076 ] 100 ave-time
! 560 ms ave run time - 17.74 SD (100 trials)
-MAIN: euler076
+SOLUTION: euler076
! Copyright (c) 2008 Aaron Schaefer.
! See http://factorcode.org/license.txt for BSD license.
USING: assocs io.encodings.ascii io.files kernel make math math.parser
- sequences sets ;
+ sequences sets project-euler.common ;
IN: project-euler.079
! http://projecteuler.net/index.php?section=problems&id=79
! TODO: prune and diff are relatively slow; topological sort could be
! cleaned up and generalized much better, but it works for this problem
-MAIN: euler079
+SOLUTION: euler079
! TODO: this solution is not very efficient, much better optimizations exist
-MAIN: euler092
+SOLUTION: euler092
! Copyright (c) 2008 Aaron Schaefer.
! See http://factorcode.org/license.txt for BSD license.
-USING: math math.functions ;
+USING: math math.functions project-euler.common ;
IN: project-euler.097
! http://projecteuler.net/index.php?section=problems&id=97
! [ euler097 ] 100 ave-time
! 0 ms ave run timen - 0.22 SD (100 trials)
-MAIN: euler097
+SOLUTION: euler097
! Copyright (c) 2008 Aaron Schaefer.
! See http://factorcode.org/license.txt for BSD license.
USING: io.encodings.ascii io.files kernel math math.functions math.parser
- math.vectors sequences splitting ;
+ math.vectors sequences splitting project-euler.common ;
IN: project-euler.099
! http://projecteuler.net/index.php?section=problems&id=99
! [ euler099 ] 100 ave-time
! 16 ms ave run timen - 1.67 SD (100 trials)
-MAIN: euler099
+SOLUTION: euler099
! Copyright (c) 2008 Eric Mertens.
! See http://factorcode.org/license.txt for BSD license.
-USING: kernel math math.functions sequences ;
+USING: kernel math math.functions sequences project-euler.common ;
IN: project-euler.100
! http://projecteuler.net/index.php?section=problems&id=100
! [ euler100 ] 100 ave-time
! 0 ms ave run time - 0.14 SD (100 trials)
-MAIN: euler100
+SOLUTION: euler100
! Copyright (c) 2008 Eric Mertens.
! See http://factorcode.org/license.txt for BSD license.
-USING: kernel math math.ranges sequences ;
+USING: kernel math math.ranges sequences project-euler.common ;
IN: project-euler.116
! http://projecteuler.net/index.php?section=problems&id=116
! [ euler116 ] 100 ave-time
! 0 ms ave run time - 0.34 SD (100 trials)
-MAIN: euler116
+SOLUTION: euler116
! Copyright (c) 2008 Eric Mertens.
! See http://factorcode.org/license.txt for BSD license.
-USING: kernel math math.order sequences splitting ;
+USING: kernel math math.order sequences splitting project-euler.common ;
IN: project-euler.117
! http://projecteuler.net/index.php?section=problems&id=117
! [ euler117 ] 100 ave-time
! 0 ms ave run time - 0.29 SD (100 trials)
-MAIN: euler117
+SOLUTION: euler117
! [ euler134 ] 10 ave-time
! 933 ms ave run timen - 19.58 SD (10 trials)
-MAIN: euler134
+SOLUTION: euler134
! Copyright (c) 2008 Eric Mertens.
! See http://factorcode.org/license.txt for BSD license.
-USING: kernel math math.functions sequences ;
+USING: kernel math math.functions sequences project-euler.common ;
IN: project-euler.148
! http://projecteuler.net/index.php?section=problems&id=148
! [ euler148 ] 100 ave-time
! 0 ms ave run time - 0.17 SD (100 trials)
-MAIN: euler148
+SOLUTION: euler148
! Copyright (c) 2008 Eric Mertens.
! See http://factorcode.org/license.txt for BSD license.
-USING: hints kernel locals math math.order sequences sequences.private ;
+USING: hints kernel locals math math.order sequences sequences.private project-euler.common ;
IN: project-euler.150
! http://projecteuler.net/index.php?section=problems&id=150
! [ euler150 ] 10 ave-time
! 30208 ms ave run time - 593.45 SD (10 trials)
-MAIN: euler150
+SOLUTION: euler150
! Copyright (c) 2008 Eric Mertens.
! See http://factorcode.org/license.txt for BSD license.
-USING: assocs combinators kernel math math.order namespaces sequences ;
+USING: assocs combinators kernel math math.order namespaces sequences project-euler.common ;
IN: project-euler.151
! http://projecteuler.net/index.php?section=problems&id=151
! [ euler151 ] 100 ave-time
! ? ms run time - 100 trials
-MAIN: euler151
+SOLUTION: euler151
! Copyright (c) 2008 Eric Mertens.
! See http://factorcode.org/license.txt for BSD license.
-USING: arrays assocs kernel math math.ranges sequences ;
+USING: arrays assocs kernel math math.ranges sequences project-euler.common ;
IN: project-euler.164
! http://projecteuler.net/index.php?section=problems&id=164
! [ euler164 ] 100 ave-time
! 7 ms ave run time - 1.23 SD (100 trials)
-MAIN: euler164
+SOLUTION: euler164
! Copyright (c) 2007 Samuel Tardieu.
! See http://factorcode.org/license.txt for BSD license.
IN: project-euler.169
-USING: combinators kernel math math.functions memoize ;
+USING: combinators kernel math math.functions memoize project-euler.common ;
! http://projecteuler.net/index.php?section=problems&id=169
! [ euler169 ] 100 ave-time
! 0 ms ave run time - 0.2 SD (100 trials)
-MAIN: euler169
+SOLUTION: euler169
! Copyright (c) 2007 Samuel Tardieu.
! See http://factorcode.org/license.txt for BSD license.
-USING: kernel math math.functions math.ranges sequences ;
+USING: kernel math math.functions math.ranges sequences project-euler.common ;
IN: project-euler.173
! http://projecteuler.net/index.php?section=problems&id=173
! [ euler173 ] 100 ave-time
! 0 ms ave run time - 0.35 SD (100 trials)
-MAIN: euler173
+SOLUTION: euler173
! Copyright (c) 2007 Samuel Tardieu.
! See http://factorcode.org/license.txt for BSD license.
-USING: combinators kernel math math.parser math.ranges sequences vectors ;
+USING: combinators kernel math math.parser math.ranges sequences vectors project-euler.common ;
IN: project-euler.175
! http://projecteuler.net/index.php?section=problems&id=175
! [ euler175 ] 100 ave-time
! 0 ms ave run time - 0.31 SD (100 trials)
-MAIN: euler175
+SOLUTION: euler175
! Copyright (c) 2008 Eric Mertens.
! See http://factorcode.org/license.txt for BSD license.
-USING: circular disjoint-sets kernel math math.ranges sequences ;
+USING: circular disjoint-sets kernel math math.ranges sequences project-euler.common ;
IN: project-euler.186
! http://projecteuler.net/index.php?section=problems&id=186
! [ euler186 ] 10 ave-time
! 18572 ms ave run time - 796.87 SD (10 trials)
-MAIN: euler186
+SOLUTION: euler186
! Copyright (c) 2008 Eric Mertens.
! See http://factorcode.org/license.txt for BSD license.
-USING: kernel sequences math math.functions math.ranges locals ;
+USING: kernel sequences math math.functions math.ranges locals project-euler.common ;
IN: project-euler.190
! http://projecteuler.net/index.php?section=problems&id=190
! [ euler150 ] 100 ave-time
! 5 ms ave run time - 1.01 SD (100 trials)
-MAIN: euler190
+SOLUTION: euler190
! Copyright (c) 2008 Eric Mertens.
! See http://factorcode.org/license.txt for BSD license.
-USING: fry kernel math math.primes.factors sequences sets ;
+USING: fry kernel math math.primes.factors sequences sets project-euler.common ;
IN: project-euler.203
! http://projecteuler.net/index.php?section=problems&id=203
! [ euler203 ] 100 ave-time
! 12 ms ave run time - 1.6 SD (100 trials)
-MAIN: euler203
+SOLUTION: euler203
! Copyright (c) 2008 Eric Mertens.
! See http://factorcode.org/license.txt for BSD license.
-USING: accessors kernel locals math ;
+USING: accessors kernel locals math project-euler.common ;
IN: project-euler.215
! http://projecteuler.net/index.php?section=problems&id=215
! [ euler215 ] 100 ave-time
! 208 ms ave run time - 9.06 SD (100 trials)
-MAIN: euler215
+SOLUTION: euler215
! See http://factorcode.org/license.txt for BSD license.
USING: arrays kernel make math math.functions math.matrices math.miller-rabin
math.order math.parser math.primes.factors math.ranges math.ratios
- sequences sorting strings unicode.case ;
+ sequences sorting strings unicode.case parser accessors vocabs.parser
+ namespaces vocabs words quotations prettyprint ;
IN: project-euler.common
! A collection of words used by more than one Project Euler solution
: d-transform ( triple -- new-triple )
{ { -1 -2 -2 } { 2 1 2 } { 2 2 3 } } transform ;
+: SOLUTION:
+ scan-word
+ [ name>> "-main" append create-in ] keep
+ [ drop in get vocab (>>main) ]
+ [ [ . ] swap prefix (( -- )) define-declared ]
+ 2bi ; parsing
+
: run-project-euler ( -- )
problem-prompt dup problem-solved? [
+ "Answer: " write
dup number>euler "project-euler." prepend run
- "Answer: " write dup number? [ number>string ] when print
"Source: " write solution-path .
] [
drop "That problem has not been solved yet..." print