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