! Copyright (C) 2008 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
-USING: math math.ranges math.parser sequences kernel io locals ;
+USING: kernel math sequences ;
IN: benchmark.beust2
! http://crazybob.org/BeustSequence.java.html
:: (count-numbers) ( remaining first value used max listener: ( -- ) -- ? )
- 10 first - iota [| i |
+ 10 first - <iota> [| i |
i first + :> digit
digit 2^ :> mask
i value + :> value'
] any? ; inline recursive
:: count-numbers ( max listener -- )
- 10 iota [ 1 + 1 1 0 max listener (count-numbers) ] any? drop ;
- inline
+ 10 <iota> [ 1 + 1 1 0 max listener (count-numbers) ] any? drop ; inline
-:: beust ( -- )
+:: beust2-benchmark ( -- )
0 :> i!
5000000000 [ i 1 + i! ] count-numbers
- i number>string " unique numbers." append print ;
+ i 7063290 assert= ;
-MAIN: beust
+MAIN: beust2-benchmark