Paste: Project Euler problem 4
Author: | pozorvlak |
Mode: | factor |
Date: | Wed, 14 Oct 2009 20:51:34 |
Plain Text |
USING: math math.parser math.functions math.ranges kernel sequences lists.lazy ;
IN: project-euler.problem4
: palindrome? dup reverse = ;
: numeric-palindrome? number>string palindrome? ;
: 10to 10 swap ^ ;
: digit-nums [ 1 - ] keep [ 10to ] bi@ 1 - [a,b] reverse ;
: a*b [ first ] keep second * ;
Author: | pozorvlak |
Mode: | factor |
Date: | Wed, 14 Oct 2009 22:50:27 |
Plain Text |
USING: math math.parser math.functions math.ranges kernel sequences lists.lazy
lists ;
IN: project-euler.problem4
: palindrome? dup reverse = ;
: numeric-palindrome? number>string palindrome? ;
: digit-nums [ 1 - ] keep [ 10^ ] bi@ 1 - [a,b] reverse ;
: a*b [ first ] keep second * ;
: digit-nums-list digit-nums sequence>list ;
: pair-digit-nums digit-nums-list dup ;
: digit-num-pairs pair-digit-nums lcartesian-product ;
: products [ a*b ] lazy-map ;
: first-palindrome [ palindrome? ] lfilter car ;
: solution digit-num-pairs products first-palindrome ;
New Annotation