factor/extra/project-euler/004/004.factor

38 lines
928 B
Factor
Raw Normal View History

! Copyright (c) 2007 Aaron Schaefer, Daniel Ehrenberg.
! See http://factorcode.org/license.txt for BSD license.
2008-02-08 22:29:12 -05:00
USING: hashtables kernel math math.ranges project-euler.common sequences
2008-04-14 03:40:32 -04:00
sorting sets ;
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
: source-004 ( -- seq )
100 999 [a,b] [ 10 mod 0 = not ] filter ;
: max-palindrome ( seq -- palindrome )
natural-sort [ palindrome? ] find-last nip ;
PRIVATE>
: euler004 ( -- answer )
source-004 dup cartesian-product [ product ] map prune max-palindrome ;
! [ euler004 ] 100 ave-time
2008-11-04 01:04:03 -05:00
! 1164 ms ave run time - 39.35 SD (100 trials)
MAIN: euler004