From 8e87d56e24f7d951be873fe063e17a1b28e13a36 Mon Sep 17 00:00:00 2001 From: Samuel Tardieu Date: Fri, 21 Dec 2007 17:43:26 +0100 Subject: [PATCH] Factor solution to project Euler problem 17 --- extra/project-euler/017/017.factor | 65 ++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 extra/project-euler/017/017.factor diff --git a/extra/project-euler/017/017.factor b/extra/project-euler/017/017.factor new file mode 100644 index 0000000000..7568872743 --- /dev/null +++ b/extra/project-euler/017/017.factor @@ -0,0 +1,65 @@ +! Copyright (c) 2007 Samuel Tardieu. +! See http://factorcode.org/license.txt for BSD license. +USING: kernel math namespaces sequences strings ; +IN: project-euler.017 + +! http://projecteuler.net/index.php?section=problems&id=17 + +! DESCRIPTION +! ----------- + +! If the numbers 1 to 5 are written out in words: one, two, three, four, five; +! there are 3 + 3 + 5 + 4 + 4 = 19 letters used in total. + +! If all the numbers from 1 to 1000 (one thousand) inclusive were written out +! in words, how many letters would be used? + +! NOTE: Do not count spaces or hyphens. For example, 342 (three hundred and +! forty-two) contains 23 letters and 115 (one hundred and fifteen) contains +! 20 letters. + +! SOLUTION +! -------- + + + +: >english ( n -- str ) + [ make-english ] "" make ; + +: euler017 ( -- answer ) + 1000 [ 1 + >english [ letter? ] subset length ] map sum ; + +! [ euler017 ] 100 ave-time +! 9 ms run / 0 ms GC ave time - 100 trials + +MAIN: euler017