Remove unnecessarily complicated PE022 solution
parent
994fe7c142
commit
0dfddab0f6
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue