| 
									
										
										
										
											2007-12-18 20:57:16 -05:00
										 |  |  | ! Copyright (c) 2007 Aaron Schaefer. | 
					
						
							|  |  |  | ! See http://factorcode.org/license.txt for BSD license. | 
					
						
							| 
									
										
										
										
											2007-12-30 07:08:31 -05:00
										 |  |  | USING: definitions io io.files kernel math math.parser sequences strings | 
					
						
							| 
									
										
										
										
											2007-12-28 08:52:11 -05:00
										 |  |  |     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-28 08:52:11 -05:00
										 |  |  |     project-euler.013 project-euler.014 project-euler.015 project-euler.016 | 
					
						
							|  |  |  |     project-euler.017 project-euler.018 project-euler.019 | 
					
						
							|  |  |  |     project-euler.067 | 
					
						
							| 
									
										
										
										
											2007-12-28 19:18:00 -05:00
										 |  |  |                       project-euler.134 | 
					
						
							|  |  |  |                                         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 )
 | 
					
						
							|  |  |  |     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 |