2007-12-18 20:57:16 -05:00
|
|
|
! Copyright (c) 2007 Aaron Schaefer, Daniel Ehrenberg.
|
|
|
|
! See http://factorcode.org/license.txt for BSD license.
|
2009-04-01 21:53:18 -04:00
|
|
|
USING: hashtables kernel math math.functions math.ranges project-euler.common
|
|
|
|
sequences sorting sets ;
|
2007-12-18 20:57:16 -05:00
|
|
|
IN: project-euler.004
|
|
|
|
|
|
|
|
! http://projecteuler.net/index.php?section=problems&id=4
|
|
|
|
|
|
|
|
! DESCRIPTION
|
|
|
|
! -----------
|
|
|
|
|
|
|
|
! A palindromic number reads the same both ways. The largest palindrome made
|
|
|
|
! from the product of two 2-digit numbers is 9009 = 91 * 99.
|
|
|
|
|
|
|
|
! Find the largest palindrome made from the product of two 3-digit numbers.
|
|
|
|
|
|
|
|
|
|
|
|
! SOLUTION
|
|
|
|
! --------
|
|
|
|
|
|
|
|
<PRIVATE
|
|
|
|
|
2008-01-06 21:18:59 -05:00
|
|
|
: source-004 ( -- seq )
|
2015-05-12 21:50:34 -04:00
|
|
|
100 999 [a,b] [ 10 divisor? ] reject ;
|
2008-01-06 21:18:59 -05:00
|
|
|
|
2007-12-18 20:57:16 -05:00
|
|
|
: max-palindrome ( seq -- palindrome )
|
|
|
|
natural-sort [ palindrome? ] find-last nip ;
|
|
|
|
|
|
|
|
PRIVATE>
|
|
|
|
|
|
|
|
: euler004 ( -- answer )
|
2010-02-27 14:52:24 -05:00
|
|
|
source-004 dup [ * ] cartesian-map combine max-palindrome ;
|
2007-12-18 20:57:16 -05:00
|
|
|
|
|
|
|
! [ euler004 ] 100 ave-time
|
2008-11-04 01:04:03 -05:00
|
|
|
! 1164 ms ave run time - 39.35 SD (100 trials)
|
2007-12-18 20:57:16 -05:00
|
|
|
|
2009-03-19 00:05:32 -04:00
|
|
|
SOLUTION: euler004
|