]> gitweb.factorcode.org Git - factor.git/commitdiff
Merge branch 'master' of git://factorcode.org/git/factor
authorAaron Schaefer <aaron@elasticdog.com>
Wed, 1 Apr 2009 04:43:23 +0000 (00:43 -0400)
committerAaron Schaefer <aaron@elasticdog.com>
Wed, 1 Apr 2009 04:43:23 +0000 (00:43 -0400)
* 'master' of git://factorcode.org/git/factor: (66 commits)
  Better error message for syntax error in : foo ( : bar
  remove some dead code, make spider use count and max-count again
  left and right arrow keys move between graphemes in UI
  Adding functionality to unicode breaks API for future UI changes
  state-parser works with sequences, not strings
  rename word
  redo spider without dynamic variables
  remove duplication, refactor html.parser to use new state parser
  redo state parser to avoid dynamic variables
  fix help-lint for syndication
  Small speedup for code using H{ } clone and with-scope
  Small size reduction for deployed images
  Tweak some code to reduce deployed image size
  syndication: fix help lint
  Fix parse-feed for byte arrays
  refactor some error handling in peg, more unit tests
  Fix C99 complex number support in FFI on Mac OS X/PPC
  add unit tests for quoting
  Fix model docs
  Some cleanup in documents.elements
  ...

extra/project-euler/001/001-tests.factor
extra/project-euler/001/001.factor
extra/project-euler/033/033.factor
extra/project-euler/common/common.factor

index 8d2461a510972947306a36688820cddb34c25124..1cab2756192b690b3ded1aa9fb4a207714873760 100644 (file)
@@ -4,3 +4,4 @@ IN: project-euler.001.tests
 [ 233168 ] [ euler001 ] unit-test
 [ 233168 ] [ euler001a ] unit-test
 [ 233168 ] [ euler001b ] unit-test
+[ 233168 ] [ euler001c ] unit-test
index de4345db689e8f3dfc5b5b395c007a46c20f5042..17f8d0386d80dbbb591530f0892f041ae7eb709f 100644 (file)
@@ -1,4 +1,4 @@
-! Copyright (c) 2007 Aaron Schaefer.
+! Copyright (c) 2007, 2008 Aaron Schaefer, Slava Pestov.
 ! See http://factorcode.org/license.txt for BSD license.
 USING: kernel math math.ranges sequences project-euler.common ;
 IN: project-euler.001
@@ -51,4 +51,11 @@ PRIVATE>
 ! [ euler001b ] 100 ave-time
 ! 0 ms run / 0 ms GC ave time - 100 trials
 
+
+: euler001c ( -- answer )
+    1000 [ { 3 5 } [ mod 0 = ] with contains? ] filter sum ;
+
+! [ euler001c ] 100 ave-time
+! 0 ms ave run time - 0.06 SD (100 trials)
+
 SOLUTION: euler001
index c7c3fea5da7d52e6e100776d2f03e131e1202e98..780015ab77b8b6e90a96559036c2d69b0c4a20f8 100644 (file)
@@ -33,7 +33,7 @@ IN: project-euler.033
     10 99 [a,b] dup cartesian-product [ first2 < ] filter ;
 
 : safe? ( ax xb -- ? )
-    [ 10 /mod ] bi@ -roll = rot zero? not and nip ;
+    [ 10 /mod ] bi@ [ = ] dip zero? not and nip ;
 
 : ax/xb ( ax xb -- z/f )
     2dup safe? [ [ 10 /mod ] bi@ 2nip / ] [ 2drop f ] if ;
index 423512465eda8cf7d1d0fa312411c046f6c8db84..0ad3225e3ed056c587cc2cd79003b9b75f9ca0c1 100644 (file)
@@ -57,7 +57,7 @@ PRIVATE>
     >lower [ CHAR: a - 1+ ] sigma ;
 
 : cartesian-product ( seq1 seq2 -- seq1xseq2 )
-    swap [ swap [ 2array ] with map ] with map concat ;
+    [ [ 2array ] with map ] curry map concat ;
 
 : log10 ( m -- n )
     log 10 log / ;
@@ -75,6 +75,9 @@ PRIVATE>
 : number>digits ( n -- seq )
     [ dup 0 = not ] [ 10 /mod ] produce reverse nip ;
 
+: number-length ( n -- m )
+    log10 floor 1+ >integer ;
+
 : nth-triangle ( n -- n )
     dup 1+ * 2 / ;