]> gitweb.factorcode.org Git - factor.git/blob - extra/project-euler/project-euler.factor
Support Link Time Optimization (off by default)
[factor.git] / extra / project-euler / project-euler.factor
1 ! Copyright (c) 2007-2010 Aaron Schaefer, Samuel Tardieu.
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: io kernel math.parser prettyprint sequences
4 vocabs.loader ;
5 IN: project-euler
6
7 <PRIVATE
8
9 : problem-prompt ( -- n )
10     "Which problem number from Project Euler would you like to solve?"
11     print flush readln string>number ;
12
13 : number>euler ( n -- str )
14     number>string 3 CHAR: 0 pad-head ;
15
16 : solution-path ( n -- str/f )
17     number>euler "project-euler." prepend vocab-source-path ;
18
19 PRIVATE>
20
21 : problem-solved? ( n -- ? )
22     solution-path ;
23
24 : run-project-euler ( -- )
25     problem-prompt dup problem-solved? [
26         "Answer: " write
27         dup number>euler "project-euler." prepend run
28         "Source: " write solution-path .
29     ] [
30         drop "That problem has not been solved yet..." print
31     ] if ;
32
33 MAIN: run-project-euler