Remove unnecessarily complicated PE022 solution
parent
994fe7c142
commit
0dfddab0f6
|
@ -43,33 +43,18 @@ IN: project-euler.022
|
||||||
: alpha-value ( str -- n )
|
: alpha-value ( str -- n )
|
||||||
string>digits [ 9 - ] sigma ;
|
string>digits [ 9 - ] sigma ;
|
||||||
|
|
||||||
: name-score ( str seq -- n )
|
: name-scores ( seq -- seq )
|
||||||
over alpha-value -rot index 1+ * ;
|
dup length [ 1+ swap alpha-value * ] 2map ;
|
||||||
|
|
||||||
PRIVATE>
|
PRIVATE>
|
||||||
|
|
||||||
: euler022 ( -- answer )
|
: euler022 ( -- answer )
|
||||||
source-022 natural-sort dup [ over name-score ] sigma nip ;
|
source-022 natural-sort name-scores sum ;
|
||||||
|
|
||||||
! [ euler022 ] 100 ave-time
|
! [ 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
|
! source-022 [ natural-sort name-scores sum ] curry 100 ave-time
|
||||||
! 850 ms run / 0 ms GC ave time - 100 trials
|
! 45 ms run / 1 ms GC ave time - 100 trials
|
||||||
|
|
||||||
|
MAIN: euler022
|
||||||
! 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
|
|
||||||
|
|
Loading…
Reference in New Issue