From 0dfddab0f609a8093c6f70e3301ef49f6e3de72b Mon Sep 17 00:00:00 2001 From: Aaron Schaefer Date: Wed, 26 Dec 2007 09:06:52 -0500 Subject: [PATCH] Remove unnecessarily complicated PE022 solution --- extra/project-euler/022/022.factor | 29 +++++++---------------------- 1 file changed, 7 insertions(+), 22 deletions(-) diff --git a/extra/project-euler/022/022.factor b/extra/project-euler/022/022.factor index fb9930df67..1c8c8743f9 100644 --- a/extra/project-euler/022/022.factor +++ b/extra/project-euler/022/022.factor @@ -43,33 +43,18 @@ IN: project-euler.022 : alpha-value ( str -- n ) string>digits [ 9 - ] sigma ; -: name-score ( str seq -- n ) - over alpha-value -rot index 1+ * ; +: name-scores ( seq -- seq ) + dup length [ 1+ swap alpha-value * ] 2map ; PRIVATE> : euler022 ( -- answer ) - source-022 natural-sort dup [ over name-score ] sigma nip ; + source-022 natural-sort name-scores sum ; ! [ euler022 ] 100 ave-time -! 906 ms run / 1 ms GC ave time - 100 trials +! 59 ms run / 1 ms GC ave time - 100 trials -! source-022 [ natural-sort dup [ over name-score ] sigma nip ] curry 100 ave-time -! 850 ms run / 0 ms GC ave time - 100 trials +! source-022 [ natural-sort name-scores sum ] curry 100 ave-time +! 45 ms run / 1 ms GC ave time - 100 trials - -! ALTERNATE SOLUTIONS -! ------------------- - -! Take advantage of the names being ordered and eliminate calls to name-score - -: euler022a ( -- answer ) - source-022 natural-sort dup length [ 1+ swap alpha-value * ] 2map sum ; - -! [ euler022 ] 100 ave-time -! 60 ms run / 1 ms GC ave time - 100 trials - -! source-022 [ natural-sort dup length [ 1+ swap alpha-value * ] 2map sum ] curry 100 ave-time -! 47 ms run / 1 ms GC ave time - 100 trials - -MAIN: euler022a +MAIN: euler022