| 
									
										
										
										
											2008-02-08 21:17:45 -05:00
										 |  |  | ! Copyright (c) 2008 Aaron Schaefer. | 
					
						
							|  |  |  | ! See http://factorcode.org/license.txt for BSD license. | 
					
						
							| 
									
										
										
										
											2009-02-02 16:51:42 -05:00
										 |  |  | USING: kernel math.functions math.ranges project-euler.common | 
					
						
							|  |  |  | sequences math.order ;
 | 
					
						
							| 
									
										
										
										
											2008-02-08 21:17:45 -05:00
										 |  |  | IN: project-euler.056 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ! http://projecteuler.net/index.php?section=problems&id=56 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ! DESCRIPTION | 
					
						
							|  |  |  | ! ----------- | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ! A googol (10^100) is a massive number: one followed by one-hundred zeros; | 
					
						
							|  |  |  | ! 100^100 is almost unimaginably large: one followed by two-hundred zeros. | 
					
						
							|  |  |  | ! Despite their size, the sum of the digits in each number is only 1. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ! Considering natural numbers of the form, a^b, where a, b < 100, what is the | 
					
						
							|  |  |  | ! maximum digital sum? | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ! SOLUTION | 
					
						
							|  |  |  | ! -------- | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ! Through analysis, you only need to check when a and b > 90 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | : euler056 ( -- answer )
 | 
					
						
							|  |  |  |     90 100 [a,b) dup cartesian-product
 | 
					
						
							| 
									
										
										
										
											2009-02-02 04:46:10 -05:00
										 |  |  |     [ first2 ^ number>digits sum ] [ max ] map-reduce ;
 | 
					
						
							| 
									
										
										
										
											2008-02-08 21:17:45 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  | ! [ euler056 ] 100 ave-time | 
					
						
							| 
									
										
										
										
											2008-11-05 01:11:15 -05:00
										 |  |  | ! 22 ms ave run time - 2.13 SD (100 trials) | 
					
						
							| 
									
										
										
										
											2008-02-08 21:17:45 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-03-19 00:05:32 -04:00
										 |  |  | SOLUTION: euler056 |