2008-01-29 12:39:25 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								! Copyright (c) 2007, 2008 Aaron Schaefer, Samuel Tardieu.
							 | 
						
					
						
							
								
									
										
										
										
											2007-12-18 20:57:16 -05:00
										 
									 
								 
							 | 
							
								
							 | 
							
								
							 | 
							
							
								! See http://factorcode.org/license.txt for BSD license.
							 | 
						
					
						
							
								
									
										
										
										
											2008-02-02 13:37:53 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								USING: definitions io io.files kernel math math.parser project-euler.ave-time
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								    sequences vocabs vocabs.loader
							 | 
						
					
						
							
								
									
										
										
										
											2007-12-18 20:57:16 -05:00
										 
									 
								 
							 | 
							
								
							 | 
							
								
							 | 
							
							
								    project-euler.001 project-euler.002 project-euler.003 project-euler.004
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								    project-euler.005 project-euler.006 project-euler.007 project-euler.008
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								    project-euler.009 project-euler.010 project-euler.011 project-euler.012
							 | 
						
					
						
							
								
									
										
										
										
											2007-12-24 04:32:19 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								    project-euler.013 project-euler.014 project-euler.015 project-euler.016
							 | 
						
					
						
							
								
									
										
										
										
											2007-12-24 21:54:39 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								    project-euler.017 project-euler.018 project-euler.019 project-euler.020
							 | 
						
					
						
							
								
									
										
										
										
											2008-01-03 01:49:46 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								    project-euler.021 project-euler.022 project-euler.023 project-euler.024
							 | 
						
					
						
							
								
									
										
										
										
											2008-01-17 23:37:10 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								    project-euler.025 project-euler.026 project-euler.027 project-euler.028
							 | 
						
					
						
							
								
									
										
										
										
											2008-01-28 03:37:14 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								    project-euler.029 project-euler.030 project-euler.031 project-euler.032
							 | 
						
					
						
							
								
									
										
										
										
											2008-01-29 13:31:06 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								    project-euler.033 project-euler.034 project-euler.035 project-euler.036
							 | 
						
					
						
							
								
									
										
										
										
											2008-02-02 18:53:32 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								    project-euler.037 project-euler.038 project-euler.039 project-euler.040
							 | 
						
					
						
							
								
									
										
										
										
											2008-02-06 00:53:18 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								    project-euler.041 project-euler.042 project-euler.043 project-euler.044
							 | 
						
					
						
							
								
									
										
										
										
											2008-02-12 23:02:33 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								    project-euler.045 project-euler.046 project-euler.047 project-euler.048
							 | 
						
					
						
							
								
									
										
										
										
											2008-03-07 21:38:16 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								    project-euler.052 project-euler.053 project-euler.056 project-euler.059
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								    project-euler.067 project-euler.075 project-euler.079 project-euler.092
							 | 
						
					
						
							
								
									
										
										
										
											2008-07-20 21:52:39 -04:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								    project-euler.097 project-euler.100 project-euler.116 project-euler.117
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								    project-euler.134 project-euler.148 project-euler.150 project-euler.151
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								    project-euler.164 project-euler.169 project-euler.173 project-euler.175
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								    project-euler.186 project-euler.190 ;
							 | 
						
					
						
							
								
									
										
										
										
											2007-12-18 20:57:16 -05:00
										 
									 
								 
							 | 
							
								
							 | 
							
								
							 | 
							
							
								IN: project-euler
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								<PRIVATE
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								: problem-prompt ( -- n )
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								    "Which problem number from Project Euler would you like to solve?"
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								    print readln string>number ;
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								: number>euler ( n -- str )
							 | 
						
					
						
							
								
									
										
										
										
											2007-12-28 08:52:11 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								    number>string 3 CHAR: 0 pad-left ;
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								: solution-path ( n -- str/f )
							 | 
						
					
						
							
								
									
										
										
										
											2008-03-19 20:15:32 -04:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								    number>euler "project-euler." prepend
							 | 
						
					
						
							
								
									
										
										
										
											2008-03-27 00:47:51 -04:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								    vocab where dup [ first ] when ;
							 | 
						
					
						
							
								
									
										
										
										
											2007-12-18 20:57:16 -05:00
										 
									 
								 
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								PRIVATE>
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								: problem-solved? ( n -- ? )
							 | 
						
					
						
							
								
									
										
										
										
											2007-12-28 08:52:11 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								    solution-path ;
							 | 
						
					
						
							
								
									
										
										
										
											2007-12-18 20:57:16 -05:00
										 
									 
								 
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								: run-project-euler ( -- )
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								    problem-prompt dup problem-solved? [
							 | 
						
					
						
							
								
									
										
										
										
											2008-03-19 20:15:32 -04:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								        dup number>euler "project-euler." prepend run
							 | 
						
					
						
							
								
									
										
										
										
											2007-12-30 07:08:31 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								        "Answer: " swap dup number? [ number>string ] when append print
							 | 
						
					
						
							
								
									
										
										
										
											2007-12-18 20:57:16 -05:00
										 
									 
								 
							 | 
							
								
							 | 
							
								
							 | 
							
							
								        "Source: " swap solution-path append print
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								    ] [
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								        drop "That problem has not been solved yet..." print
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								    ] if ;
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								MAIN: run-project-euler
							 |