]> gitweb.factorcode.org Git - factor.git/blobdiff - extra/project-euler/059/059.factor
factor: trim using lists
[factor.git] / extra / project-euler / 059 / 059.factor
index 0abd753c0989adca62db594e097c945a7c6ac2c3..96323d7715b2013050ef80d9f28866d78e89cdcc 100644 (file)
@@ -1,8 +1,8 @@
 ! Copyright (c) 2008 Aaron Schaefer, Slava Pestov.
 ! See http://factorcode.org/license.txt for BSD license.
-USING: arrays ascii assocs hashtables io.encodings.ascii io.files kernel math
-    math.parser namespaces make sequences sequences.private sorting
-    splitting grouping strings sets accessors ;
+USING: accessors arrays ascii assocs grouping io.encodings.ascii
+io.files kernel make math math.parser project-euler.common
+sequences sequences.private sets sorting splitting ;
 IN: project-euler.059
 
 ! http://projecteuler.net/index.php?section=problems&id=59
@@ -70,12 +70,12 @@ INSTANCE: rollover immutable-sequence
     over length <rollover> swap [ bitxor ] 2map ;
 
 : frequency-analysis ( seq -- seq )
-    dup prune [
+    dup members [
         [ 2dup [ = ] curry count 2array , ] each
     ] { } make nip ; inline
 
 : most-frequent ( seq -- elt )
-    frequency-analysis sort-values keys peek ;
+    frequency-analysis sort-values keys last ;
 
 : crack-key ( seq key-length -- key )
     [ " " decrypt ] dip group but-last-slice
@@ -89,4 +89,4 @@ PRIVATE>
 ! [ euler059 ] 100 ave-time
 ! 8 ms ave run time - 1.4 SD (100 trials)
 
-MAIN: euler059
+SOLUTION: euler059