| 
									
										
										
										
											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. | 
					
						
							| 
									
										
										
										
											2007-12-30 22:41:04 -05:00
										 |  |  | USING: definitions io io.files kernel math.parser sequences vocabs | 
					
						
							| 
									
										
										
										
											2008-01-04 19:51:42 -05:00
										 |  |  |     vocabs.loader project-euler.ave-time project-euler.common math | 
					
						
							| 
									
										
										
										
											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 | 
					
						
							|  |  |  |     project-euler.067 project-euler.134 project-euler.169 project-euler.173 | 
					
						
							|  |  |  |     project-euler.175 ;
 | 
					
						
							| 
									
										
										
										
											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 )
 | 
					
						
							| 
									
										
										
										
											2007-12-30 22:41:04 -05:00
										 |  |  |     number>euler "project-euler." swap append
 | 
					
						
							|  |  |  |     vocab where dup [ first ?resource-path ] 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? [ | 
					
						
							|  |  |  |         dup number>euler "project-euler." swap append 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 |