diff --git a/extra/project-euler/023/023.factor b/extra/project-euler/023/023.factor index 79aeccd8b4..1f45c5d88f 100644 --- a/extra/project-euler/023/023.factor +++ b/extra/project-euler/023/023.factor @@ -1,6 +1,7 @@ ! Copyright (c) 2008 Aaron Schaefer. ! See http://factorcode.org/license.txt for BSD license. -USING: kernel math math.ranges project-euler.common sequences sets sorting assocs fry ; +USING: fry kernel math math.ranges project-euler.common +sequences sets ; IN: project-euler.023 ! http://projecteuler.net/index.php?section=problems&id=23 @@ -42,9 +43,9 @@ IN: project-euler.023 [1,b] [ abundant? ] filter ; : possible-sums ( seq -- seq ) - H{ } clone - [ dupd '[ _ [ + _ conjoin ] with each ] each ] - keep keys ; + HS{ } clone + [ dupd '[ _ [ + _ adjoin ] with each ] each ] + keep members ; PRIVATE> diff --git a/extra/project-euler/051/051.factor b/extra/project-euler/051/051.factor index 40d53109cb..7ade217789 100644 --- a/extra/project-euler/051/051.factor +++ b/extra/project-euler/051/051.factor @@ -26,16 +26,16 @@ ! for each prime number, count the families it belongs to. When one reaches count of 8, stop, and get the smallest number by replacing * with ones. -USING: assocs kernel math math.combinatorics math.functions -math.parser math.primes namespaces project-euler.common -sequences sets strings grouping math.ranges arrays fry math.order ; +USING: assocs fry kernel math math.combinatorics math.functions +math.order math.parser math.primes math.ranges namespaces +project-euler.common sequences sets ; IN: project-euler.051 string families [ handle-family ] each ] each - large-families get ; + large-families get members ; : fill-*-with-ones ( str -- str ) [ dup CHAR: * = [ drop CHAR: 1 ] when ] map ; ! recursively test all primes by length until we find an answer : (euler051) ( i -- answer ) - dup test-n-digits-primes - dup assoc-size 0 > - [ nip values [ fill-*-with-ones string>number ] [ min ] map-reduce ] - [ drop 1 + (euler051) ] if ; + dup test-n-digits-primes [ + 1 + (euler051) + ] [ + nip [ fill-*-with-ones string>number ] [ min ] map-reduce + ] if-empty ; + PRIVATE> : euler051 ( -- answer ) diff --git a/extra/project-euler/074/074.factor b/extra/project-euler/074/074.factor index 9962847b75..df062631cf 100644 --- a/extra/project-euler/074/074.factor +++ b/extra/project-euler/074/074.factor @@ -1,7 +1,7 @@ ! Copyright (c) 2009 Guillaume Nargeot. ! See http://factorcode.org/license.txt for BSD license. -USING: assocs hashtables kernel math math.ranges -project-euler.common sequences sets ; +USING: hash-sets kernel math.ranges project-euler.common +sequences sets ; IN: project-euler.074 ! http://projecteuler.net/index.php?section=problems&id=074 @@ -51,10 +51,9 @@ IN: project-euler.074 number>digits [ digit-factorial ] map-sum ; : chain-length ( n -- n ) - 61 - [ 2dup key? not ] - [ [ conjoin ] [ [ digits-factorial-sum ] dip ] 2bi ] - while nip assoc-size ; + 61 [ 2dup ?adjoin ] [ + [ digits-factorial-sum ] dip + ] while nip cardinality ; PRIVATE> diff --git a/extra/trees/splay/splay-tests.factor b/extra/trees/splay/splay-tests.factor index b108f23824..40083da465 100644 --- a/extra/trees/splay/splay-tests.factor +++ b/extra/trees/splay/splay-tests.factor @@ -1,6 +1,6 @@ ! Copyright (c) 2005 Mackenzie Straight. ! See http://factorcode.org/license.txt for BSD license. -USING: assocs grouping kernel math random sequences sets +USING: assocs fry grouping kernel math random sequences sets tools.test trees.splay ; IN: trees.splay.tests @@ -8,7 +8,7 @@ IN: trees.splay.tests 100 iota [ drop 100 random of drop ] with each ; : make-numeric-splay-tree ( n -- splay-tree ) - iota [ [ conjoin ] curry each ] keep ; + iota [ '[ dup _ set-at ] each ] keep ; { t } [ 100 make-numeric-splay-tree dup randomize-numeric-splay-tree