From b5b207a484afc6fbf647916720192ce7f8adf936 Mon Sep 17 00:00:00 2001 From: Aaron Schaefer Date: Wed, 5 Nov 2008 01:11:15 -0500 Subject: [PATCH] Add test files for all Project Euler solutions --- extra/project-euler/008/008-tests.factor | 4 ++++ extra/project-euler/009/009-tests.factor | 4 ++++ extra/project-euler/010/010-tests.factor | 4 ++++ extra/project-euler/010/010.factor | 11 +++++++---- extra/project-euler/011/011-tests.factor | 4 ++++ extra/project-euler/012/012-tests.factor | 4 ++++ extra/project-euler/012/012.factor | 2 +- extra/project-euler/013/013-tests.factor | 4 ++++ extra/project-euler/013/013.factor | 2 +- extra/project-euler/014/014-tests.factor | 5 +++++ extra/project-euler/015/015-tests.factor | 4 ++++ extra/project-euler/015/015.factor | 2 +- extra/project-euler/016/016-tests.factor | 4 ++++ extra/project-euler/017/017-tests.factor | 4 ++++ extra/project-euler/018/018-tests.factor | 5 +++++ extra/project-euler/018/018.factor | 4 ++-- extra/project-euler/019/019-tests.factor | 5 +++++ extra/project-euler/019/019.factor | 4 ++-- extra/project-euler/020/020-tests.factor | 4 ++++ extra/project-euler/021/021-tests.factor | 4 ++++ extra/project-euler/021/021.factor | 2 +- extra/project-euler/022/022-tests.factor | 4 ++++ extra/project-euler/022/022.factor | 2 +- extra/project-euler/023/023-tests.factor | 4 ++++ extra/project-euler/024/024-tests.factor | 4 ++++ extra/project-euler/024/024.factor | 2 +- extra/project-euler/025/025-tests.factor | 5 +++++ extra/project-euler/025/025.factor | 4 ++-- extra/project-euler/026/026-tests.factor | 4 ++++ extra/project-euler/026/026.factor | 2 +- extra/project-euler/027/027-tests.factor | 4 ++++ extra/project-euler/027/027.factor | 2 +- extra/project-euler/028/028-tests.factor | 4 ++++ extra/project-euler/029/029-tests.factor | 4 ++++ extra/project-euler/029/029.factor | 2 +- extra/project-euler/030/030-tests.factor | 4 ++++ extra/project-euler/030/030.factor | 2 +- extra/project-euler/031/031-tests.factor | 4 ++++ extra/project-euler/032/032-tests.factor | 5 +++++ extra/project-euler/032/032.factor | 6 +++--- extra/project-euler/033/033-tests.factor | 4 ++++ extra/project-euler/033/033.factor | 2 +- extra/project-euler/034/034-tests.factor | 4 ++++ extra/project-euler/034/034.factor | 2 +- extra/project-euler/035/035-tests.factor | 4 ++++ extra/project-euler/035/035.factor | 2 +- extra/project-euler/036/036-tests.factor | 4 ++++ extra/project-euler/036/036.factor | 2 +- extra/project-euler/037/037-tests.factor | 4 ++++ extra/project-euler/037/037.factor | 2 +- extra/project-euler/038/038-tests.factor | 4 ++++ extra/project-euler/038/038.factor | 2 +- extra/project-euler/039/039-tests.factor | 4 ++++ extra/project-euler/039/039.factor | 2 +- extra/project-euler/040/040-tests.factor | 4 ++++ extra/project-euler/040/040.factor | 2 +- extra/project-euler/041/041-tests.factor | 4 ++++ extra/project-euler/041/041.factor | 2 +- extra/project-euler/042/042-tests.factor | 5 +++++ extra/project-euler/042/042.factor | 4 ++-- extra/project-euler/043/043-tests.factor | 5 +++++ extra/project-euler/043/043.factor | 4 ++-- extra/project-euler/044/044-tests.factor | 4 ++++ extra/project-euler/044/044.factor | 2 +- extra/project-euler/045/045-tests.factor | 4 ++++ extra/project-euler/045/045.factor | 2 +- extra/project-euler/046/046-tests.factor | 4 ++++ extra/project-euler/046/046.factor | 2 +- extra/project-euler/047/047-tests.factor | 5 +++++ extra/project-euler/047/047.factor | 4 ++-- extra/project-euler/048/048-tests.factor | 4 ++++ extra/project-euler/052/052-tests.factor | 4 ++++ extra/project-euler/052/052.factor | 2 +- extra/project-euler/053/053-tests.factor | 4 ++++ extra/project-euler/053/053.factor | 2 +- extra/project-euler/055/055-tests.factor | 4 ++++ extra/project-euler/055/055.factor | 2 +- extra/project-euler/056/056-tests.factor | 4 ++++ extra/project-euler/056/056.factor | 2 +- extra/project-euler/059/059-tests.factor | 4 ++++ extra/project-euler/059/059.factor | 2 +- extra/project-euler/067/067-tests.factor | 5 +++++ extra/project-euler/067/067.factor | 4 ++-- extra/project-euler/075/075-tests.factor | 4 ++++ extra/project-euler/075/075.factor | 12 ++++++------ extra/project-euler/076/076-tests.factor | 4 ++++ extra/project-euler/079/079-tests.factor | 4 ++++ extra/project-euler/079/079.factor | 2 +- extra/project-euler/092/092-tests.factor | 4 ++++ extra/project-euler/097/097-tests.factor | 4 ++++ extra/project-euler/097/097.factor | 2 +- extra/project-euler/100/100-tests.factor | 4 ++++ extra/project-euler/100/100.factor | 6 +++--- extra/project-euler/116/116-tests.factor | 4 ++++ extra/project-euler/116/116.factor | 2 +- extra/project-euler/117/117-tests.factor | 4 ++++ extra/project-euler/117/117.factor | 2 +- extra/project-euler/134/134-tests.factor | 4 ++++ extra/project-euler/134/134.factor | 2 +- extra/project-euler/148/148-tests.factor | 4 ++++ extra/project-euler/148/148.factor | 2 +- extra/project-euler/150/150-tests.factor | 4 ++++ extra/project-euler/150/150.factor | 2 +- extra/project-euler/164/164-tests.factor | 4 ++++ extra/project-euler/164/164.factor | 2 +- extra/project-euler/169/169-tests.factor | 4 ++++ extra/project-euler/169/169.factor | 4 ++-- extra/project-euler/173/173-tests.factor | 4 ++++ extra/project-euler/173/173.factor | 2 +- extra/project-euler/175/175-tests.factor | 4 ++++ extra/project-euler/175/175.factor | 2 +- extra/project-euler/186/186-tests.factor | 4 ++++ extra/project-euler/186/186.factor | 5 ++--- extra/project-euler/190/190-tests.factor | 4 ++++ extra/project-euler/190/190.factor | 2 +- 115 files changed, 340 insertions(+), 73 deletions(-) create mode 100644 extra/project-euler/008/008-tests.factor create mode 100644 extra/project-euler/009/009-tests.factor create mode 100644 extra/project-euler/010/010-tests.factor create mode 100644 extra/project-euler/011/011-tests.factor create mode 100644 extra/project-euler/012/012-tests.factor create mode 100644 extra/project-euler/013/013-tests.factor create mode 100644 extra/project-euler/014/014-tests.factor create mode 100644 extra/project-euler/015/015-tests.factor create mode 100644 extra/project-euler/016/016-tests.factor create mode 100644 extra/project-euler/017/017-tests.factor create mode 100644 extra/project-euler/018/018-tests.factor create mode 100644 extra/project-euler/019/019-tests.factor create mode 100644 extra/project-euler/020/020-tests.factor create mode 100644 extra/project-euler/021/021-tests.factor create mode 100644 extra/project-euler/022/022-tests.factor create mode 100644 extra/project-euler/023/023-tests.factor create mode 100644 extra/project-euler/024/024-tests.factor create mode 100644 extra/project-euler/025/025-tests.factor create mode 100644 extra/project-euler/026/026-tests.factor create mode 100644 extra/project-euler/027/027-tests.factor create mode 100644 extra/project-euler/028/028-tests.factor create mode 100644 extra/project-euler/029/029-tests.factor create mode 100644 extra/project-euler/030/030-tests.factor create mode 100644 extra/project-euler/031/031-tests.factor create mode 100644 extra/project-euler/032/032-tests.factor create mode 100644 extra/project-euler/033/033-tests.factor create mode 100644 extra/project-euler/034/034-tests.factor create mode 100644 extra/project-euler/035/035-tests.factor create mode 100644 extra/project-euler/036/036-tests.factor create mode 100644 extra/project-euler/037/037-tests.factor create mode 100644 extra/project-euler/038/038-tests.factor create mode 100644 extra/project-euler/039/039-tests.factor create mode 100644 extra/project-euler/040/040-tests.factor create mode 100644 extra/project-euler/041/041-tests.factor create mode 100644 extra/project-euler/042/042-tests.factor create mode 100644 extra/project-euler/043/043-tests.factor create mode 100644 extra/project-euler/044/044-tests.factor create mode 100644 extra/project-euler/045/045-tests.factor create mode 100644 extra/project-euler/046/046-tests.factor create mode 100644 extra/project-euler/047/047-tests.factor create mode 100644 extra/project-euler/048/048-tests.factor create mode 100644 extra/project-euler/052/052-tests.factor create mode 100644 extra/project-euler/053/053-tests.factor create mode 100644 extra/project-euler/055/055-tests.factor create mode 100644 extra/project-euler/056/056-tests.factor create mode 100644 extra/project-euler/059/059-tests.factor create mode 100644 extra/project-euler/067/067-tests.factor create mode 100644 extra/project-euler/075/075-tests.factor create mode 100644 extra/project-euler/076/076-tests.factor create mode 100644 extra/project-euler/079/079-tests.factor create mode 100644 extra/project-euler/092/092-tests.factor create mode 100644 extra/project-euler/097/097-tests.factor create mode 100644 extra/project-euler/100/100-tests.factor create mode 100644 extra/project-euler/116/116-tests.factor create mode 100644 extra/project-euler/117/117-tests.factor create mode 100644 extra/project-euler/134/134-tests.factor create mode 100644 extra/project-euler/148/148-tests.factor create mode 100644 extra/project-euler/150/150-tests.factor create mode 100644 extra/project-euler/164/164-tests.factor create mode 100644 extra/project-euler/169/169-tests.factor create mode 100644 extra/project-euler/173/173-tests.factor create mode 100644 extra/project-euler/175/175-tests.factor create mode 100644 extra/project-euler/186/186-tests.factor create mode 100644 extra/project-euler/190/190-tests.factor diff --git a/extra/project-euler/008/008-tests.factor b/extra/project-euler/008/008-tests.factor new file mode 100644 index 0000000000..15fd9f4648 --- /dev/null +++ b/extra/project-euler/008/008-tests.factor @@ -0,0 +1,4 @@ +USING: project-euler.008 tools.test ; +IN: project-euler.008.tests + +[ 40824 ] [ euler008 ] unit-test diff --git a/extra/project-euler/009/009-tests.factor b/extra/project-euler/009/009-tests.factor new file mode 100644 index 0000000000..20be369818 --- /dev/null +++ b/extra/project-euler/009/009-tests.factor @@ -0,0 +1,4 @@ +USING: project-euler.009 tools.test ; +IN: project-euler.009.tests + +[ 31875000 ] [ euler009 ] unit-test diff --git a/extra/project-euler/010/010-tests.factor b/extra/project-euler/010/010-tests.factor new file mode 100644 index 0000000000..b110ce8824 --- /dev/null +++ b/extra/project-euler/010/010-tests.factor @@ -0,0 +1,4 @@ +USING: project-euler.010 tools.test ; +IN: project-euler.010.tests + +[ 142913828922 ] [ euler010 ] unit-test diff --git a/extra/project-euler/010/010.factor b/extra/project-euler/010/010.factor index 172bb9d290..c8bbe3d72e 100644 --- a/extra/project-euler/010/010.factor +++ b/extra/project-euler/010/010.factor @@ -10,16 +10,19 @@ IN: project-euler.010 ! The sum of the primes below 10 is 2 + 3 + 5 + 7 = 17. -! Find the sum of all the primes below one million. +! Find the sum of all the primes below two million. ! SOLUTION ! -------- : euler010 ( -- answer ) - 1000000 primes-upto sum ; + 2000000 primes-upto sum ; -! [ euler010 ] 100 ave-time -! 14 ms run / 0 ms GC ave time - 100 trials +! [ euler010 ] time +! 266425 ms run / 10001 ms GC time + +! TODO: this takes well over one minute now that they changed the problem to +! two million instead of one. the primes vocab could use some improvements MAIN: euler010 diff --git a/extra/project-euler/011/011-tests.factor b/extra/project-euler/011/011-tests.factor new file mode 100644 index 0000000000..5c48320f56 --- /dev/null +++ b/extra/project-euler/011/011-tests.factor @@ -0,0 +1,4 @@ +USING: project-euler.011 tools.test ; +IN: project-euler.011.tests + +[ 70600674 ] [ euler011 ] unit-test diff --git a/extra/project-euler/012/012-tests.factor b/extra/project-euler/012/012-tests.factor new file mode 100644 index 0000000000..c2d9730f05 --- /dev/null +++ b/extra/project-euler/012/012-tests.factor @@ -0,0 +1,4 @@ +USING: project-euler.012 tools.test ; +IN: project-euler.012.tests + +[ 76576500 ] [ euler012 ] unit-test diff --git a/extra/project-euler/012/012.factor b/extra/project-euler/012/012.factor index 583bad8f72..b25bfc90f1 100644 --- a/extra/project-euler/012/012.factor +++ b/extra/project-euler/012/012.factor @@ -37,6 +37,6 @@ IN: project-euler.012 8 [ dup nth-triangle tau* 500 < ] [ 1+ ] [ ] while nth-triangle ; ! [ euler012 ] 10 ave-time -! 5413 ms run / 1 ms GC ave time - 10 trials +! 6573 ms ave run time - 346.27 SD (10 trials) MAIN: euler012 diff --git a/extra/project-euler/013/013-tests.factor b/extra/project-euler/013/013-tests.factor new file mode 100644 index 0000000000..3d9f88d84e --- /dev/null +++ b/extra/project-euler/013/013-tests.factor @@ -0,0 +1,4 @@ +USING: project-euler.013 tools.test ; +IN: project-euler.013.tests + +[ 5537376230 ] [ euler013 ] unit-test diff --git a/extra/project-euler/013/013.factor b/extra/project-euler/013/013.factor index 907029cfb2..857bd62cc4 100644 --- a/extra/project-euler/013/013.factor +++ b/extra/project-euler/013/013.factor @@ -228,6 +228,6 @@ PRIVATE> source-013 sum number>string 10 head string>number ; ! [ euler013 ] 100 ave-time -! 0 ms run / 0 ms GC ave time - 100 trials +! 0 ms ave run time - 0.31 SD (100 trials) MAIN: euler013 diff --git a/extra/project-euler/014/014-tests.factor b/extra/project-euler/014/014-tests.factor new file mode 100644 index 0000000000..b423c90323 --- /dev/null +++ b/extra/project-euler/014/014-tests.factor @@ -0,0 +1,5 @@ +USING: project-euler.014 tools.test ; +IN: project-euler.014.tests + +[ 837799 ] [ euler014 ] unit-test +[ 837799 ] [ euler014a ] unit-test diff --git a/extra/project-euler/015/015-tests.factor b/extra/project-euler/015/015-tests.factor new file mode 100644 index 0000000000..9c86421889 --- /dev/null +++ b/extra/project-euler/015/015-tests.factor @@ -0,0 +1,4 @@ +USING: project-euler.015 tools.test ; +IN: project-euler.015.tests + +[ 137846528820 ] [ euler015 ] unit-test diff --git a/extra/project-euler/015/015.factor b/extra/project-euler/015/015.factor index 305426902b..fb720c7e7c 100644 --- a/extra/project-euler/015/015.factor +++ b/extra/project-euler/015/015.factor @@ -28,6 +28,6 @@ PRIVATE> 20 grid-paths ; ! [ euler015 ] 100 ave-time -! 0 ms run / 0 ms GC ave time - 100 trials +! 0 ms ave run time - 0.2 SD (100 trials) MAIN: euler015 diff --git a/extra/project-euler/016/016-tests.factor b/extra/project-euler/016/016-tests.factor new file mode 100644 index 0000000000..e75a114e68 --- /dev/null +++ b/extra/project-euler/016/016-tests.factor @@ -0,0 +1,4 @@ +USING: project-euler.016 tools.test ; +IN: project-euler.016.tests + +[ 1366 ] [ euler016 ] unit-test diff --git a/extra/project-euler/017/017-tests.factor b/extra/project-euler/017/017-tests.factor new file mode 100644 index 0000000000..3c2b2d5487 --- /dev/null +++ b/extra/project-euler/017/017-tests.factor @@ -0,0 +1,4 @@ +USING: project-euler.017 tools.test ; +IN: project-euler.017.tests + +[ 21124 ] [ euler017 ] unit-test diff --git a/extra/project-euler/018/018-tests.factor b/extra/project-euler/018/018-tests.factor new file mode 100644 index 0000000000..1d4d65079e --- /dev/null +++ b/extra/project-euler/018/018-tests.factor @@ -0,0 +1,5 @@ +USING: project-euler.018 tools.test ; +IN: project-euler.018.tests + +[ 1074 ] [ euler018 ] unit-test +[ 1074 ] [ euler018a ] unit-test diff --git a/extra/project-euler/018/018.factor b/extra/project-euler/018/018.factor index eb2df5e0da..21831b90d4 100644 --- a/extra/project-euler/018/018.factor +++ b/extra/project-euler/018/018.factor @@ -74,7 +74,7 @@ PRIVATE> source-018 propagate-all first first ; ! [ euler018 ] 100 ave-time -! 0 ms run / 0 ms GC ave time - 100 trials +! 0 ms ave run time - 0.29 SD (100 trials) ! ALTERNATE SOLUTIONS @@ -84,6 +84,6 @@ PRIVATE> source-018 max-path ; ! [ euler018a ] 100 ave-time -! 0 ms run / 0 ms GC ave time - 100 trials +! 0 ms ave run time - 0.39 SD (100 trials) MAIN: euler018a diff --git a/extra/project-euler/019/019-tests.factor b/extra/project-euler/019/019-tests.factor new file mode 100644 index 0000000000..543c01b06e --- /dev/null +++ b/extra/project-euler/019/019-tests.factor @@ -0,0 +1,5 @@ +USING: project-euler.019 tools.test ; +IN: project-euler.019.tests + +[ 171 ] [ euler019 ] unit-test +[ 171 ] [ euler019a ] unit-test diff --git a/extra/project-euler/019/019.factor b/extra/project-euler/019/019.factor index 9482b337bb..62e2e066ff 100644 --- a/extra/project-euler/019/019.factor +++ b/extra/project-euler/019/019.factor @@ -36,7 +36,7 @@ IN: project-euler.019 ] map concat [ zero? ] count ; ! [ euler019 ] 100 ave-time -! 1 ms run / 0 ms GC ave time - 100 trials +! 1 ms ave run time - 0.51 SD (100 trials) ! ALTERNATE SOLUTIONS @@ -61,6 +61,6 @@ PRIVATE> end-date start-date first-days [ zero? ] count ; ! [ euler019a ] 100 ave-time -! 131 ms run / 3 ms GC ave time - 100 trials +! 17 ms ave run time - 2.13 SD (100 trials) MAIN: euler019 diff --git a/extra/project-euler/020/020-tests.factor b/extra/project-euler/020/020-tests.factor new file mode 100644 index 0000000000..2d9175bb18 --- /dev/null +++ b/extra/project-euler/020/020-tests.factor @@ -0,0 +1,4 @@ +USING: project-euler.020 tools.test ; +IN: project-euler.020.tests + +[ 648 ] [ euler020 ] unit-test diff --git a/extra/project-euler/021/021-tests.factor b/extra/project-euler/021/021-tests.factor new file mode 100644 index 0000000000..f20ae562c2 --- /dev/null +++ b/extra/project-euler/021/021-tests.factor @@ -0,0 +1,4 @@ +USING: project-euler.021 tools.test ; +IN: project-euler.021.tests + +[ 31626 ] [ euler021 ] unit-test diff --git a/extra/project-euler/021/021.factor b/extra/project-euler/021/021.factor index af6bb3270b..2e2f6a6453 100644 --- a/extra/project-euler/021/021.factor +++ b/extra/project-euler/021/021.factor @@ -33,6 +33,6 @@ IN: project-euler.021 10000 [1,b] [ dup amicable? [ drop 0 ] unless ] sigma ; ! [ euler021 ] 100 ave-time -! 328 ms run / 10 ms GC ave time - 100 trials +! 335 ms ave run time - 18.63 SD (100 trials) MAIN: euler021 diff --git a/extra/project-euler/022/022-tests.factor b/extra/project-euler/022/022-tests.factor new file mode 100644 index 0000000000..bcd5c18166 --- /dev/null +++ b/extra/project-euler/022/022-tests.factor @@ -0,0 +1,4 @@ +USING: project-euler.022 tools.test ; +IN: project-euler.022.tests + +[ 871198282 ] [ euler022 ] unit-test diff --git a/extra/project-euler/022/022.factor b/extra/project-euler/022/022.factor index a508ddea6c..a12838406a 100644 --- a/extra/project-euler/022/022.factor +++ b/extra/project-euler/022/022.factor @@ -40,6 +40,6 @@ PRIVATE> source-022 natural-sort name-scores sum ; ! [ euler022 ] 100 ave-time -! 123 ms run / 4 ms GC ave time - 100 trials +! 74 ms ave run time - 5.13 SD (100 trials) MAIN: euler022 diff --git a/extra/project-euler/023/023-tests.factor b/extra/project-euler/023/023-tests.factor new file mode 100644 index 0000000000..bba4173147 --- /dev/null +++ b/extra/project-euler/023/023-tests.factor @@ -0,0 +1,4 @@ +USING: project-euler.023 tools.test ; +IN: project-euler.023.tests + +[ 4179871 ] [ euler023 ] unit-test diff --git a/extra/project-euler/024/024-tests.factor b/extra/project-euler/024/024-tests.factor new file mode 100644 index 0000000000..fe722e587e --- /dev/null +++ b/extra/project-euler/024/024-tests.factor @@ -0,0 +1,4 @@ +USING: project-euler.024 tools.test ; +IN: project-euler.024.tests + +[ 2783915460 ] [ euler024 ] unit-test diff --git a/extra/project-euler/024/024.factor b/extra/project-euler/024/024.factor index 0cc0c39e07..c10ce418c4 100755 --- a/extra/project-euler/024/024.factor +++ b/extra/project-euler/024/024.factor @@ -26,6 +26,6 @@ IN: project-euler.024 999999 10 permutation 10 digits>integer ; ! [ euler024 ] 100 ave-time -! 0 ms run / 0 ms GC ave time - 100 trials +! 0 ms ave run time - 0.27 SD (100 trials) MAIN: euler024 diff --git a/extra/project-euler/025/025-tests.factor b/extra/project-euler/025/025-tests.factor new file mode 100644 index 0000000000..0de6820de9 --- /dev/null +++ b/extra/project-euler/025/025-tests.factor @@ -0,0 +1,5 @@ +USING: project-euler.025 tools.test ; +IN: project-euler.025.tests + +[ 4782 ] [ euler025 ] unit-test +[ 4782 ] [ euler025a ] unit-test diff --git a/extra/project-euler/025/025.factor b/extra/project-euler/025/025.factor index 6d15a9f6ec..a2934c23c7 100644 --- a/extra/project-euler/025/025.factor +++ b/extra/project-euler/025/025.factor @@ -55,7 +55,7 @@ PRIVATE> 1000 digit-fib ; ! [ euler025 ] 10 ave-time -! 5237 ms run / 72 ms GC ave time - 10 trials +! 5345 ms ave run time - 105.91 SD (10 trials) ! ALTERNATE SOLUTIONS @@ -76,6 +76,6 @@ PRIVATE> 1000 digit-fib* ; ! [ euler025a ] 100 ave-time -! 0 ms run / 0 ms GC ave time - 100 trials +! 0 ms ave run time - 0.17 SD (100 trials) MAIN: euler025a diff --git a/extra/project-euler/026/026-tests.factor b/extra/project-euler/026/026-tests.factor new file mode 100644 index 0000000000..1b9b953c26 --- /dev/null +++ b/extra/project-euler/026/026-tests.factor @@ -0,0 +1,4 @@ +USING: project-euler.026 tools.test ; +IN: project-euler.026.tests + +[ 983 ] [ euler026 ] unit-test diff --git a/extra/project-euler/026/026.factor b/extra/project-euler/026/026.factor index 8cbf20d0bf..cf30d0ee42 100644 --- a/extra/project-euler/026/026.factor +++ b/extra/project-euler/026/026.factor @@ -66,6 +66,6 @@ PRIVATE> source-026 max-period drop denominator ; ! [ euler026 ] 100 ave-time -! 724 ms run / 7 ms GC ave time - 100 trials +! 290 ms ave run time - 19.2 SD (100 trials) MAIN: euler026 diff --git a/extra/project-euler/027/027-tests.factor b/extra/project-euler/027/027-tests.factor new file mode 100644 index 0000000000..614d8a547d --- /dev/null +++ b/extra/project-euler/027/027-tests.factor @@ -0,0 +1,4 @@ +USING: project-euler.027 tools.test ; +IN: project-euler.027.tests + +[ -59231 ] [ euler027 ] unit-test diff --git a/extra/project-euler/027/027.factor b/extra/project-euler/027/027.factor index 7680112af7..5bf753074e 100644 --- a/extra/project-euler/027/027.factor +++ b/extra/project-euler/027/027.factor @@ -68,7 +68,7 @@ PRIVATE> source-027 max-consecutive drop product ; ! [ euler027 ] 100 ave-time -! 687 ms run / 23 ms GC ave time - 100 trials +! 111 ms ave run time - 6.07 SD (100 trials) ! TODO: generalize max-consecutive/max-product (from #26) into a new word diff --git a/extra/project-euler/028/028-tests.factor b/extra/project-euler/028/028-tests.factor new file mode 100644 index 0000000000..fea5ef1c80 --- /dev/null +++ b/extra/project-euler/028/028-tests.factor @@ -0,0 +1,4 @@ +USING: project-euler.028 tools.test ; +IN: project-euler.028.tests + +[ 669171001 ] [ euler028 ] unit-test diff --git a/extra/project-euler/029/029-tests.factor b/extra/project-euler/029/029-tests.factor new file mode 100644 index 0000000000..5fd064fb0b --- /dev/null +++ b/extra/project-euler/029/029-tests.factor @@ -0,0 +1,4 @@ +USING: project-euler.029 tools.test ; +IN: project-euler.029.tests + +[ 9183 ] [ euler029 ] unit-test diff --git a/extra/project-euler/029/029.factor b/extra/project-euler/029/029.factor index 9cfe0aacff..2586e6182a 100644 --- a/extra/project-euler/029/029.factor +++ b/extra/project-euler/029/029.factor @@ -32,6 +32,6 @@ IN: project-euler.029 2 100 [a,b] dup cartesian-product [ first2 ^ ] map prune length ; ! [ euler029 ] 100 ave-time -! 951 ms run / 12 ms GC ave time - 100 trials +! 704 ms ave run time - 28.07 SD (100 trials) MAIN: euler029 diff --git a/extra/project-euler/030/030-tests.factor b/extra/project-euler/030/030-tests.factor new file mode 100644 index 0000000000..3b0d03025b --- /dev/null +++ b/extra/project-euler/030/030-tests.factor @@ -0,0 +1,4 @@ +USING: project-euler.030 tools.test ; +IN: project-euler.030.tests + +[ 443839 ] [ euler030 ] unit-test diff --git a/extra/project-euler/030/030.factor b/extra/project-euler/030/030.factor index 250494c0dc..63693f96d8 100644 --- a/extra/project-euler/030/030.factor +++ b/extra/project-euler/030/030.factor @@ -41,6 +41,6 @@ PRIVATE> 325537 [ dup sum-fifth-powers = ] filter sum 1- ; ! [ euler030 ] 100 ave-time -! 2537 ms run / 125 ms GC ave time - 100 trials +! 1700 ms ave run time - 64.84 SD (100 trials) MAIN: euler030 diff --git a/extra/project-euler/031/031-tests.factor b/extra/project-euler/031/031-tests.factor new file mode 100644 index 0000000000..5e81717368 --- /dev/null +++ b/extra/project-euler/031/031-tests.factor @@ -0,0 +1,4 @@ +USING: project-euler.031 tools.test ; +IN: project-euler.031.tests + +[ 73682 ] [ euler031 ] unit-test diff --git a/extra/project-euler/032/032-tests.factor b/extra/project-euler/032/032-tests.factor new file mode 100644 index 0000000000..039c31df1b --- /dev/null +++ b/extra/project-euler/032/032-tests.factor @@ -0,0 +1,5 @@ +USING: project-euler.032 tools.test ; +IN: project-euler.032.tests + +[ 45228 ] [ euler032 ] unit-test +[ 45228 ] [ euler032a ] unit-test diff --git a/extra/project-euler/032/032.factor b/extra/project-euler/032/032.factor index 02c1d44e43..07c643659c 100755 --- a/extra/project-euler/032/032.factor +++ b/extra/project-euler/032/032.factor @@ -49,7 +49,7 @@ PRIVATE> source-032 [ valid? ] filter products prune sum ; ! [ euler032 ] 10 ave-time -! 23922 ms run / 1505 ms GC ave time - 10 trials +! 16361 ms ave run time - 417.8 SD (10 trials) ! ALTERNATE SOLUTIONS @@ -72,7 +72,7 @@ PRIVATE> : euler032a ( -- answer ) source-032a [ mmp ] map [ pandigital? ] filter products prune sum ; -! [ euler032a ] 100 ave-time -! 5978 ms run / 327 ms GC ave time - 100 trials +! [ euler032a ] 10 ave-time +! 2624 ms ave run time - 131.91 SD (10 trials) MAIN: euler032a diff --git a/extra/project-euler/033/033-tests.factor b/extra/project-euler/033/033-tests.factor new file mode 100644 index 0000000000..e57d623692 --- /dev/null +++ b/extra/project-euler/033/033-tests.factor @@ -0,0 +1,4 @@ +USING: project-euler.033 tools.test ; +IN: project-euler.033.tests + +[ 100 ] [ euler033 ] unit-test diff --git a/extra/project-euler/033/033.factor b/extra/project-euler/033/033.factor index 8cb0dc45c3..d0c79c220a 100644 --- a/extra/project-euler/033/033.factor +++ b/extra/project-euler/033/033.factor @@ -50,6 +50,6 @@ PRIVATE> source-033 curious-fractions product denominator ; ! [ euler033 ] 100 ave-time -! 5 ms run / 0 ms GC ave time - 100 trials +! 7 ms ave run time - 1.31 SD (100 trials) MAIN: euler033 diff --git a/extra/project-euler/034/034-tests.factor b/extra/project-euler/034/034-tests.factor new file mode 100644 index 0000000000..56d2bbb517 --- /dev/null +++ b/extra/project-euler/034/034-tests.factor @@ -0,0 +1,4 @@ +USING: project-euler.034 tools.test ; +IN: project-euler.034.tests + +[ 40730 ] [ euler034 ] unit-test diff --git a/extra/project-euler/034/034.factor b/extra/project-euler/034/034.factor index 28c4fa5dc7..11b7efa8b5 100644 --- a/extra/project-euler/034/034.factor +++ b/extra/project-euler/034/034.factor @@ -42,6 +42,6 @@ PRIVATE> 3 2000000 [a,b] [ factorion? ] filter sum ; ! [ euler034 ] 10 ave-time -! 15089 ms run / 725 ms GC ave time - 10 trials +! 5506 ms ave run time - 144.0 SD (10 trials) MAIN: euler034 diff --git a/extra/project-euler/035/035-tests.factor b/extra/project-euler/035/035-tests.factor new file mode 100644 index 0000000000..0ede690e17 --- /dev/null +++ b/extra/project-euler/035/035-tests.factor @@ -0,0 +1,4 @@ +USING: project-euler.035 tools.test ; +IN: project-euler.035.tests + +[ 55 ] [ euler035 ] unit-test diff --git a/extra/project-euler/035/035.factor b/extra/project-euler/035/035.factor index 8e8b654d28..517e5211d2 100755 --- a/extra/project-euler/035/035.factor +++ b/extra/project-euler/035/035.factor @@ -53,7 +53,7 @@ PRIVATE> source-035 [ possible? ] filter [ circular? ] count ; ! [ euler035 ] 100 ave-time -! 904 ms run / 86 ms GC ave time - 100 trials +! 538 ms ave run time - 17.16 SD (100 trials) ! TODO: try using bit arrays or other methods outlined here: ! http://home.comcast.net/~babdulbaki/Circular_Primes.html diff --git a/extra/project-euler/036/036-tests.factor b/extra/project-euler/036/036-tests.factor new file mode 100644 index 0000000000..07c2d76915 --- /dev/null +++ b/extra/project-euler/036/036-tests.factor @@ -0,0 +1,4 @@ +USING: project-euler.036 tools.test ; +IN: project-euler.036.tests + +[ 872187 ] [ euler036 ] unit-test diff --git a/extra/project-euler/036/036.factor b/extra/project-euler/036/036.factor index fc9df9a8fe..02d9372a8b 100644 --- a/extra/project-euler/036/036.factor +++ b/extra/project-euler/036/036.factor @@ -35,6 +35,6 @@ PRIVATE> 1 1000000 2 [ both-bases? ] filter sum ; ! [ euler036 ] 100 ave-time -! 3891 ms run / 173 ms GC ave time - 100 trials +! 1703 ms ave run time - 96.6 SD (100 trials) MAIN: euler036 diff --git a/extra/project-euler/037/037-tests.factor b/extra/project-euler/037/037-tests.factor new file mode 100644 index 0000000000..b661e5be08 --- /dev/null +++ b/extra/project-euler/037/037-tests.factor @@ -0,0 +1,4 @@ +USING: project-euler.037 tools.test ; +IN: project-euler.037.tests + +[ 748317 ] [ euler037 ] unit-test diff --git a/extra/project-euler/037/037.factor b/extra/project-euler/037/037.factor index a5bc0581e6..4562c4588f 100755 --- a/extra/project-euler/037/037.factor +++ b/extra/project-euler/037/037.factor @@ -47,6 +47,6 @@ PRIVATE> 23 1000000 primes-between [ r-trunc? ] filter [ l-trunc? ] filter sum ; ! [ euler037 ] 100 ave-time -! 768 ms run / 9 ms GC ave time - 100 trials +! 130 ms ave run time - 6.27 SD (100 trials) MAIN: euler037 diff --git a/extra/project-euler/038/038-tests.factor b/extra/project-euler/038/038-tests.factor new file mode 100644 index 0000000000..0bad869943 --- /dev/null +++ b/extra/project-euler/038/038-tests.factor @@ -0,0 +1,4 @@ +USING: project-euler.038 tools.test ; +IN: project-euler.038.tests + +[ 932718654 ] [ euler038 ] unit-test diff --git a/extra/project-euler/038/038.factor b/extra/project-euler/038/038.factor index 05bab5fc36..2df993b341 100755 --- a/extra/project-euler/038/038.factor +++ b/extra/project-euler/038/038.factor @@ -51,6 +51,6 @@ PRIVATE> 9123 9876 [a,b] [ concat-product ] map [ pandigital? ] filter supremum ; ! [ euler038 ] 100 ave-time -! 37 ms run / 1 ms GC ave time - 100 trials +! 11 ms ave run time - 1.5 SD (100 trials) MAIN: euler038 diff --git a/extra/project-euler/039/039-tests.factor b/extra/project-euler/039/039-tests.factor new file mode 100644 index 0000000000..742550a6cf --- /dev/null +++ b/extra/project-euler/039/039-tests.factor @@ -0,0 +1,4 @@ +USING: project-euler.039 tools.test ; +IN: project-euler.039.tests + +[ 840 ] [ euler039 ] unit-test diff --git a/extra/project-euler/039/039.factor b/extra/project-euler/039/039.factor index d0caa6d0e4..6b56015667 100755 --- a/extra/project-euler/039/039.factor +++ b/extra/project-euler/039/039.factor @@ -60,6 +60,6 @@ PRIVATE> ] with-scope ; ! [ euler039 ] 100 ave-time -! 2 ms run / 0 ms GC ave time - 100 trials +! 1 ms ave run time - 0.37 SD (100 trials) MAIN: euler039 diff --git a/extra/project-euler/040/040-tests.factor b/extra/project-euler/040/040-tests.factor new file mode 100644 index 0000000000..5934e65ed6 --- /dev/null +++ b/extra/project-euler/040/040-tests.factor @@ -0,0 +1,4 @@ +USING: project-euler.040 tools.test ; +IN: project-euler.040.tests + +[ 210 ] [ euler040 ] unit-test diff --git a/extra/project-euler/040/040.factor b/extra/project-euler/040/040.factor index e2df1df2c9..6b8a3f267a 100755 --- a/extra/project-euler/040/040.factor +++ b/extra/project-euler/040/040.factor @@ -46,6 +46,6 @@ PRIVATE> [ swap nth-integer ] with map product ; ! [ euler040 ] 100 ave-time -! 1002 ms run / 43 ms GC ave time - 100 trials +! 444 ms ave run time - 23.64 SD (100 trials) MAIN: euler040 diff --git a/extra/project-euler/041/041-tests.factor b/extra/project-euler/041/041-tests.factor new file mode 100644 index 0000000000..5226860bd0 --- /dev/null +++ b/extra/project-euler/041/041-tests.factor @@ -0,0 +1,4 @@ +USING: project-euler.041 tools.test ; +IN: project-euler.041.tests + +[ 7652413 ] [ euler041 ] unit-test diff --git a/extra/project-euler/041/041.factor b/extra/project-euler/041/041.factor index 14084cc01d..d6d428a11f 100644 --- a/extra/project-euler/041/041.factor +++ b/extra/project-euler/041/041.factor @@ -35,6 +35,6 @@ IN: project-euler.041 [ 10 digits>integer ] map [ prime? ] find nip ; ! [ euler041 ] 100 ave-time -! 107 ms run / 7 ms GC ave time - 100 trials +! 64 ms ave run time - 4.22 SD (100 trials) MAIN: euler041 diff --git a/extra/project-euler/042/042-tests.factor b/extra/project-euler/042/042-tests.factor new file mode 100644 index 0000000000..ef8f06f9e0 --- /dev/null +++ b/extra/project-euler/042/042-tests.factor @@ -0,0 +1,5 @@ +USING: project-euler.042 tools.test ; +IN: project-euler.042.tests + +[ 162 ] [ euler042 ] unit-test +[ 162 ] [ euler042a ] unit-test diff --git a/extra/project-euler/042/042.factor b/extra/project-euler/042/042.factor index 009570d92c..c8236db118 100644 --- a/extra/project-euler/042/042.factor +++ b/extra/project-euler/042/042.factor @@ -50,7 +50,7 @@ PRIVATE> triangle-upto [ member? ] curry count ; ! [ euler042 ] 100 ave-time -! 27 ms run / 1 ms GC ave time - 100 trials +! 19 ms ave run time - 1.97 SD (100 trials) ! ALTERNATE SOLUTIONS @@ -69,6 +69,6 @@ PRIVATE> source-042 [ alpha-value ] map [ triangle? ] count ; ! [ euler042a ] 100 ave-time -! 25 ms run / 1 ms GC ave time - 100 trials +! 21 ms ave run time - 2.2 SD (100 trials) MAIN: euler042a diff --git a/extra/project-euler/043/043-tests.factor b/extra/project-euler/043/043-tests.factor new file mode 100644 index 0000000000..4c96721db2 --- /dev/null +++ b/extra/project-euler/043/043-tests.factor @@ -0,0 +1,5 @@ +USING: project-euler.043 tools.test ; +IN: project-euler.043.tests + +[ 16695334890 ] [ euler043 ] unit-test +[ 16695334890 ] [ euler043a ] unit-test diff --git a/extra/project-euler/043/043.factor b/extra/project-euler/043/043.factor index 9eb78e5153..28dc0b8bd6 100644 --- a/extra/project-euler/043/043.factor +++ b/extra/project-euler/043/043.factor @@ -56,7 +56,7 @@ PRIVATE> [ interesting? ] filter [ 10 digits>integer ] map sum ; ! [ euler043 ] time -! 125196 ms run / 19548 ms GC time +! 104526 ms run / 42735 ms GC time ! ALTERNATE SOLUTIONS @@ -92,6 +92,6 @@ PRIVATE> interesting-pandigitals [ 10 digits>integer ] sigma ; ! [ euler043a ] 100 ave-time -! 12 ms ave run time - 2.32 SD (100 trials) +! 10 ms ave run time - 1.37 SD (100 trials) MAIN: euler043a diff --git a/extra/project-euler/044/044-tests.factor b/extra/project-euler/044/044-tests.factor new file mode 100644 index 0000000000..df93dd6a1b --- /dev/null +++ b/extra/project-euler/044/044-tests.factor @@ -0,0 +1,4 @@ +USING: project-euler.044 tools.test ; +IN: project-euler.044.tests + +[ 5482660 ] [ euler044 ] unit-test diff --git a/extra/project-euler/044/044.factor b/extra/project-euler/044/044.factor index 0af3a3167e..e7b1959023 100644 --- a/extra/project-euler/044/044.factor +++ b/extra/project-euler/044/044.factor @@ -40,7 +40,7 @@ PRIVATE> [ first2 sum-and-diff? ] filter [ first2 - abs ] map infimum ; ! [ euler044 ] 10 ave-time -! 5727 ms ave run time - 1102.38 SD (10 trials) +! 4996 ms ave run time - 87.46 SD (10 trials) ! TODO: this solution is ugly and not very efficient...find a better algorithm diff --git a/extra/project-euler/045/045-tests.factor b/extra/project-euler/045/045-tests.factor new file mode 100644 index 0000000000..4beb8f8e3c --- /dev/null +++ b/extra/project-euler/045/045-tests.factor @@ -0,0 +1,4 @@ +USING: project-euler.045 tools.test ; +IN: project-euler.045.tests + +[ 1533776805 ] [ euler045 ] unit-test diff --git a/extra/project-euler/045/045.factor b/extra/project-euler/045/045.factor index d9cf8c99f8..ca5cd83f41 100644 --- a/extra/project-euler/045/045.factor +++ b/extra/project-euler/045/045.factor @@ -44,6 +44,6 @@ PRIVATE> 143 next-solution ; ! [ euler045 ] 100 ave-time -! 18 ms run / 1 ms GC ave time - 100 trials +! 12 ms ave run time - 1.71 SD (100 trials) MAIN: euler045 diff --git a/extra/project-euler/046/046-tests.factor b/extra/project-euler/046/046-tests.factor new file mode 100644 index 0000000000..ecfff9dd77 --- /dev/null +++ b/extra/project-euler/046/046-tests.factor @@ -0,0 +1,4 @@ +USING: project-euler.046 tools.test ; +IN: project-euler.046.tests + +[ 5777 ] [ euler046 ] unit-test diff --git a/extra/project-euler/046/046.factor b/extra/project-euler/046/046.factor index 1e7630c142..7f5ad9e0d8 100644 --- a/extra/project-euler/046/046.factor +++ b/extra/project-euler/046/046.factor @@ -47,6 +47,6 @@ PRIVATE> 9 disprove-conjecture ; ! [ euler046 ] 100 ave-time -! 150 ms run / 2 ms GC ave time - 100 trials +! 37 ms ave run time - 3.39 SD (100 trials) MAIN: euler046 diff --git a/extra/project-euler/047/047-tests.factor b/extra/project-euler/047/047-tests.factor new file mode 100644 index 0000000000..fb3c72f736 --- /dev/null +++ b/extra/project-euler/047/047-tests.factor @@ -0,0 +1,5 @@ +USING: project-euler.047 tools.test ; +IN: project-euler.047.tests + +[ 134043 ] [ euler047 ] unit-test +[ 134043 ] [ euler047a ] unit-test diff --git a/extra/project-euler/047/047.factor b/extra/project-euler/047/047.factor index 87a1387887..84041babb7 100644 --- a/extra/project-euler/047/047.factor +++ b/extra/project-euler/047/047.factor @@ -49,7 +49,7 @@ PRIVATE> 4 646 consecutive ; ! [ euler047 ] time -! 542708 ms run / 60548 ms GC time +! 344688 ms run / 20727 ms GC time ! ALTERNATE SOLUTIONS @@ -88,7 +88,7 @@ PRIVATE> 4 200000 consecutive-under ; ! [ euler047a ] 100 ave-time -! 503 ms run / 5 ms GC ave time - 100 trials +! 331 ms ave run time - 19.14 SD (100 trials) ! TODO: I don't like that you have to specify the upper bound, maybe try making ! this lazy so it could also short-circuit when it finds the answer? diff --git a/extra/project-euler/048/048-tests.factor b/extra/project-euler/048/048-tests.factor new file mode 100644 index 0000000000..172623ab05 --- /dev/null +++ b/extra/project-euler/048/048-tests.factor @@ -0,0 +1,4 @@ +USING: project-euler.048 tools.test ; +IN: project-euler.048.tests + +[ 9110846700 ] [ euler048 ] unit-test diff --git a/extra/project-euler/052/052-tests.factor b/extra/project-euler/052/052-tests.factor new file mode 100644 index 0000000000..be032c86a3 --- /dev/null +++ b/extra/project-euler/052/052-tests.factor @@ -0,0 +1,4 @@ +USING: project-euler.052 tools.test ; +IN: project-euler.052.tests + +[ 142857 ] [ euler052 ] unit-test diff --git a/extra/project-euler/052/052.factor b/extra/project-euler/052/052.factor index 3f562baa85..cfbb718200 100644 --- a/extra/project-euler/052/052.factor +++ b/extra/project-euler/052/052.factor @@ -46,6 +46,6 @@ PRIVATE> 6 123456 next-all-same ; ! [ euler052 ] 100 ave-time -! 403 ms run / 7 ms GC ave time - 100 trials +! 92 ms ave run time - 6.29 SD (100 trials) MAIN: euler052 diff --git a/extra/project-euler/053/053-tests.factor b/extra/project-euler/053/053-tests.factor new file mode 100644 index 0000000000..6c9ffaea97 --- /dev/null +++ b/extra/project-euler/053/053-tests.factor @@ -0,0 +1,4 @@ +USING: project-euler.053 tools.test ; +IN: project-euler.053.tests + +[ 4075 ] [ euler053 ] unit-test diff --git a/extra/project-euler/053/053.factor b/extra/project-euler/053/053.factor index b2a50e4ac7..d264bca4bf 100644 --- a/extra/project-euler/053/053.factor +++ b/extra/project-euler/053/053.factor @@ -30,6 +30,6 @@ IN: project-euler.053 23 100 [a,b] [ dup [ nCk 1000000 > ] with count ] sigma ; ! [ euler053 ] 100 ave-time -! 64 ms run / 2 ms GC ave time - 100 trials +! 52 ms ave run time - 4.44 SD (100 trials) MAIN: euler053 diff --git a/extra/project-euler/055/055-tests.factor b/extra/project-euler/055/055-tests.factor new file mode 100644 index 0000000000..ad23695da6 --- /dev/null +++ b/extra/project-euler/055/055-tests.factor @@ -0,0 +1,4 @@ +USING: project-euler.055 tools.test ; +IN: project-euler.055.tests + +[ 249 ] [ euler055 ] unit-test diff --git a/extra/project-euler/055/055.factor b/extra/project-euler/055/055.factor index bf1dd43b97..d07d0c8e31 100644 --- a/extra/project-euler/055/055.factor +++ b/extra/project-euler/055/055.factor @@ -64,6 +64,6 @@ PRIVATE> 10000 [ lychrel? ] count ; ! [ euler055 ] 100 ave-time -! 1370 ms run / 31 ms GC ave time - 100 trials +! 478 ms ave run time - 30.63 SD (100 trials) MAIN: euler055 diff --git a/extra/project-euler/056/056-tests.factor b/extra/project-euler/056/056-tests.factor new file mode 100644 index 0000000000..b1f37514d1 --- /dev/null +++ b/extra/project-euler/056/056-tests.factor @@ -0,0 +1,4 @@ +USING: project-euler.056 tools.test ; +IN: project-euler.056.tests + +[ 972 ] [ euler056 ] unit-test diff --git a/extra/project-euler/056/056.factor b/extra/project-euler/056/056.factor index 0efe32b254..34626b796d 100644 --- a/extra/project-euler/056/056.factor +++ b/extra/project-euler/056/056.factor @@ -26,6 +26,6 @@ IN: project-euler.056 [ first2 ^ number>digits sum ] map supremum ; ! [ euler056 ] 100 ave-time -! 33 ms run / 1 ms GC ave time - 100 trials +! 22 ms ave run time - 2.13 SD (100 trials) MAIN: euler056 diff --git a/extra/project-euler/059/059-tests.factor b/extra/project-euler/059/059-tests.factor new file mode 100644 index 0000000000..231c7339a3 --- /dev/null +++ b/extra/project-euler/059/059-tests.factor @@ -0,0 +1,4 @@ +USING: project-euler.059 tools.test ; +IN: project-euler.059.tests + +[ 107359 ] [ euler059 ] unit-test diff --git a/extra/project-euler/059/059.factor b/extra/project-euler/059/059.factor index e3ab9762d8..bbeeff1eec 100644 --- a/extra/project-euler/059/059.factor +++ b/extra/project-euler/059/059.factor @@ -87,6 +87,6 @@ PRIVATE> source-059 dup 3 crack-key decrypt sum ; ! [ euler059 ] 100 ave-time -! 13 ms run / 0 ms GC ave time - 100 trials +! 8 ms ave run time - 1.4 SD (100 trials) MAIN: euler059 diff --git a/extra/project-euler/067/067-tests.factor b/extra/project-euler/067/067-tests.factor new file mode 100644 index 0000000000..1e8940f91e --- /dev/null +++ b/extra/project-euler/067/067-tests.factor @@ -0,0 +1,5 @@ +USING: project-euler.067 tools.test ; +IN: project-euler.067.tests + +[ 7273 ] [ euler067 ] unit-test +[ 7273 ] [ euler067a ] unit-test diff --git a/extra/project-euler/067/067.factor b/extra/project-euler/067/067.factor index 3e16996e04..3f9d67091d 100644 --- a/extra/project-euler/067/067.factor +++ b/extra/project-euler/067/067.factor @@ -47,7 +47,7 @@ PRIVATE> source-067 propagate-all first first ; ! [ euler067 ] 100 ave-time -! 18 ms run / 0 ms GC time +! 20 ms ave run time - 2.12 SD (100 trials) ! ALTERNATE SOLUTIONS @@ -57,6 +57,6 @@ PRIVATE> source-067 max-path ; ! [ euler067a ] 100 ave-time -! 14 ms run / 0 ms GC ave time - 100 trials +! 21 ms ave run time - 2.65 SD (100 trials) MAIN: euler067a diff --git a/extra/project-euler/075/075-tests.factor b/extra/project-euler/075/075-tests.factor new file mode 100644 index 0000000000..8c69a99e1b --- /dev/null +++ b/extra/project-euler/075/075-tests.factor @@ -0,0 +1,4 @@ +USING: project-euler.075 tools.test ; +IN: project-euler.075.tests + +[ 214954 ] [ euler075 ] unit-test diff --git a/extra/project-euler/075/075.factor b/extra/project-euler/075/075.factor index 76f2a2a26e..2b5b931165 100755 --- a/extra/project-euler/075/075.factor +++ b/extra/project-euler/075/075.factor @@ -26,7 +26,7 @@ IN: project-euler.075 ! 120 cm: (30,40,50), (20,48,52), (24,45,51) -! Given that L is the length of the wire, for how many values of L ≤ 1,000,000 +! Given that L is the length of the wire, for how many values of L ≤ 2,000,000 ! can exactly one right angle triangle be formed? @@ -36,9 +36,9 @@ IN: project-euler.075 ! Algorithm adapted from http://mathworld.wolfram.com/PythagoreanTriple.html ! Identical implementation as problem #39 -! Basically, this makes an array of 1000000 zeros, recursively creates +! Basically, this makes an array of 2000000 zeros, recursively creates ! primitive triples using the three transforms and then increments the array at -! index [a+b+c] by one for each triple's sum AND its multiples under 1000000 +! index [a+b+c] by one for each triple's sum AND its multiples under 2000000 ! (to account for non-primitive triples). The answer is just the total number ! of indexes that are equal to one. @@ -69,10 +69,10 @@ PRIVATE> : euler075 ( -- answer ) [ - 1000000 count-perimeters p-count get [ 1 = ] count + 2000000 count-perimeters p-count get [ 1 = ] count ] with-scope ; -! [ euler075 ] 100 ave-time -! 1873 ms run / 123 ms GC ave time - 100 trials +! [ euler075 ] 10 ave-time +! 3341 ms ave run timen - 157.77 SD (10 trials) MAIN: euler075 diff --git a/extra/project-euler/076/076-tests.factor b/extra/project-euler/076/076-tests.factor new file mode 100644 index 0000000000..9d435b1f30 --- /dev/null +++ b/extra/project-euler/076/076-tests.factor @@ -0,0 +1,4 @@ +USING: project-euler.076 tools.test ; +IN: project-euler.076.tests + +[ 190569291 ] [ euler076 ] unit-test diff --git a/extra/project-euler/079/079-tests.factor b/extra/project-euler/079/079-tests.factor new file mode 100644 index 0000000000..d9f47cffb8 --- /dev/null +++ b/extra/project-euler/079/079-tests.factor @@ -0,0 +1,4 @@ +USING: project-euler.079 tools.test ; +IN: project-euler.079.tests + +[ 73162890 ] [ euler079 ] unit-test diff --git a/extra/project-euler/079/079.factor b/extra/project-euler/079/079.factor index 29b76c7ba4..ad75c43c42 100644 --- a/extra/project-euler/079/079.factor +++ b/extra/project-euler/079/079.factor @@ -58,7 +58,7 @@ PRIVATE> source-079 >edges topological-sort 10 digits>integer ; ! [ euler079 ] 100 ave-time -! 1 ms ave run time - 1.41 SD (100 trials) +! 1 ms ave run time - 0.46 SD (100 trials) ! TODO: prune and diff are relatively slow; topological sort could be ! cleaned up and generalized much better, but it works for this problem diff --git a/extra/project-euler/092/092-tests.factor b/extra/project-euler/092/092-tests.factor new file mode 100644 index 0000000000..0a89e18504 --- /dev/null +++ b/extra/project-euler/092/092-tests.factor @@ -0,0 +1,4 @@ +USING: project-euler.092 tools.test ; +IN: project-euler.092.tests + +[ 8581146 ] [ euler092 ] unit-test diff --git a/extra/project-euler/097/097-tests.factor b/extra/project-euler/097/097-tests.factor new file mode 100644 index 0000000000..3a484032ae --- /dev/null +++ b/extra/project-euler/097/097-tests.factor @@ -0,0 +1,4 @@ +USING: project-euler.097 tools.test ; +IN: project-euler.097.tests + +[ 8739992577 ] [ euler097 ] unit-test diff --git a/extra/project-euler/097/097.factor b/extra/project-euler/097/097.factor index 50e7af563d..6e6547a7e9 100644 --- a/extra/project-euler/097/097.factor +++ b/extra/project-euler/097/097.factor @@ -26,6 +26,6 @@ IN: project-euler.097 2 7830457 10 10 ^ ^mod 28433 * 10 10 ^ mod 1+ ; ! [ euler097 ] 100 ave-time -! 0 ms run / 0 ms GC ave time - 100 trials +! 0 ms ave run timen - 0.22 SD (100 trials) MAIN: euler097 diff --git a/extra/project-euler/100/100-tests.factor b/extra/project-euler/100/100-tests.factor new file mode 100644 index 0000000000..bbe84eb86e --- /dev/null +++ b/extra/project-euler/100/100-tests.factor @@ -0,0 +1,4 @@ +USING: project-euler.100 tools.test ; +IN: project-euler.100.tests + +[ 756872327473 ] [ euler100 ] unit-test diff --git a/extra/project-euler/100/100.factor b/extra/project-euler/100/100.factor index fca1bf8af8..98dbba19fd 100644 --- a/extra/project-euler/100/100.factor +++ b/extra/project-euler/100/100.factor @@ -28,9 +28,9 @@ IN: project-euler.100 [ dup dup 1- * 2 * 10 24 ^ <= ] [ tuck 6 * swap - 2 - ] [ ] while nip ; -! TODO: solution is incredibly slow (>30 minutes) and needs generalization +! TODO: solution needs generalization -! [ euler100 ] time -! ? ms run time +! [ euler100 ] 100 ave-time +! 0 ms ave run time - 0.14 SD (100 trials) MAIN: euler100 diff --git a/extra/project-euler/116/116-tests.factor b/extra/project-euler/116/116-tests.factor new file mode 100644 index 0000000000..fae67f3d2d --- /dev/null +++ b/extra/project-euler/116/116-tests.factor @@ -0,0 +1,4 @@ +USING: project-euler.116 tools.test ; +IN: project-euler.116.tests + +[ 20492570929 ] [ euler116 ] unit-test diff --git a/extra/project-euler/116/116.factor b/extra/project-euler/116/116.factor index 0e3633dc9a..742fe9d625 100644 --- a/extra/project-euler/116/116.factor +++ b/extra/project-euler/116/116.factor @@ -55,6 +55,6 @@ PRIVATE> 50 (euler116) ; ! [ euler116 ] 100 ave-time -! 0 ms run time - 100 trials +! 0 ms ave run time - 0.34 SD (100 trials) MAIN: euler116 diff --git a/extra/project-euler/117/117-tests.factor b/extra/project-euler/117/117-tests.factor new file mode 100644 index 0000000000..ba677cf49d --- /dev/null +++ b/extra/project-euler/117/117-tests.factor @@ -0,0 +1,4 @@ +USING: project-euler.117 tools.test ; +IN: project-euler.117.tests + +[ 100808458960497 ] [ euler117 ] unit-test diff --git a/extra/project-euler/117/117.factor b/extra/project-euler/117/117.factor index cc5dea8f37..7174066227 100644 --- a/extra/project-euler/117/117.factor +++ b/extra/project-euler/117/117.factor @@ -42,6 +42,6 @@ PRIVATE> 50 (euler117) ; ! [ euler117 ] 100 ave-time -! 0 ms run time - 100 trials +! 0 ms ave run time - 0.29 SD (100 trials) MAIN: euler117 diff --git a/extra/project-euler/134/134-tests.factor b/extra/project-euler/134/134-tests.factor new file mode 100644 index 0000000000..63c25eaf58 --- /dev/null +++ b/extra/project-euler/134/134-tests.factor @@ -0,0 +1,4 @@ +USING: project-euler.134 tools.test ; +IN: project-euler.134.tests + +[ 18613426663617118 ] [ euler134 ] unit-test diff --git a/extra/project-euler/134/134.factor b/extra/project-euler/134/134.factor index 4e54a18f19..7bdf17ef68 100644 --- a/extra/project-euler/134/134.factor +++ b/extra/project-euler/134/134.factor @@ -43,6 +43,6 @@ PRIVATE> [ [ s + ] keep ] leach drop ; ! [ euler134 ] 10 ave-time -! 2430 ms run / 36 ms GC ave time - 10 trials +! 933 ms ave run timen - 19.58 SD (10 trials) MAIN: euler134 diff --git a/extra/project-euler/148/148-tests.factor b/extra/project-euler/148/148-tests.factor new file mode 100644 index 0000000000..66c8f6c45c --- /dev/null +++ b/extra/project-euler/148/148-tests.factor @@ -0,0 +1,4 @@ +USING: project-euler.148 tools.test ; +IN: project-euler.148.tests + +[ 2129970655314432 ] [ euler148 ] unit-test diff --git a/extra/project-euler/148/148.factor b/extra/project-euler/148/148.factor index 0509936e52..533874fa67 100644 --- a/extra/project-euler/148/148.factor +++ b/extra/project-euler/148/148.factor @@ -49,6 +49,6 @@ PRIVATE> 10 9 ^ (euler148) ; ! [ euler148 ] 100 ave-time -! 0 ms run time - 100 trials +! 0 ms ave run time - 0.17 SD (100 trials) MAIN: euler148 diff --git a/extra/project-euler/150/150-tests.factor b/extra/project-euler/150/150-tests.factor new file mode 100644 index 0000000000..19fb31b3eb --- /dev/null +++ b/extra/project-euler/150/150-tests.factor @@ -0,0 +1,4 @@ +USING: project-euler.150 tools.test ; +IN: project-euler.150.tests + +[ -271248680 ] [ euler150 ] unit-test diff --git a/extra/project-euler/150/150.factor b/extra/project-euler/150/150.factor index c7d878edcb..1b84b25d37 100644 --- a/extra/project-euler/150/150.factor +++ b/extra/project-euler/150/150.factor @@ -73,6 +73,6 @@ PRIVATE> 1000 (euler150) ; ! [ euler150 ] 10 ave-time -! 32858 ms run time - 10 trials +! 30208 ms ave run time - 593.45 SD (10 trials) MAIN: euler150 diff --git a/extra/project-euler/164/164-tests.factor b/extra/project-euler/164/164-tests.factor new file mode 100644 index 0000000000..013e8bd872 --- /dev/null +++ b/extra/project-euler/164/164-tests.factor @@ -0,0 +1,4 @@ +USING: project-euler.164 tools.test ; +IN: project-euler.164.tests + +[ 378158756814587 ] [ euler164 ] unit-test diff --git a/extra/project-euler/164/164.factor b/extra/project-euler/164/164.factor index 9d88e49e0e..5bc4fdc74e 100644 --- a/extra/project-euler/164/164.factor +++ b/extra/project-euler/164/164.factor @@ -33,6 +33,6 @@ PRIVATE> init-table 19 [ next-table ] times values sum ; ! [ euler164 ] 100 ave-time -! 8 ms run time - 100 trials +! 7 ms ave run time - 1.23 SD (100 trials) MAIN: euler164 diff --git a/extra/project-euler/169/169-tests.factor b/extra/project-euler/169/169-tests.factor new file mode 100644 index 0000000000..0722e7fa16 --- /dev/null +++ b/extra/project-euler/169/169-tests.factor @@ -0,0 +1,4 @@ +USING: project-euler.169 tools.test ; +IN: project-euler.169.tests + +[ 178653872807 ] [ euler169 ] unit-test diff --git a/extra/project-euler/169/169.factor b/extra/project-euler/169/169.factor index 4387662c90..ef43fc3c34 100644 --- a/extra/project-euler/169/169.factor +++ b/extra/project-euler/169/169.factor @@ -20,7 +20,7 @@ USING: combinators kernel math math.functions memoize ; ! 2 + 4 + 4 ! 2 + 8 -! What is f(1025)? +! What is f(10^25)? ! SOLUTION @@ -37,6 +37,6 @@ MEMO: fn ( n -- x ) 10 25 ^ fn ; ! [ euler169 ] 100 ave-time -! 0 ms run / 0 ms GC ave time - 100 trials +! 0 ms ave run time - 0.2 SD (100 trials) MAIN: euler169 diff --git a/extra/project-euler/173/173-tests.factor b/extra/project-euler/173/173-tests.factor new file mode 100644 index 0000000000..9417ba862f --- /dev/null +++ b/extra/project-euler/173/173-tests.factor @@ -0,0 +1,4 @@ +USING: project-euler.173 tools.test ; +IN: project-euler.173.tests + +[ 1572729 ] [ euler173 ] unit-test diff --git a/extra/project-euler/173/173.factor b/extra/project-euler/173/173.factor index 9f2984d37d..757dfb017a 100644 --- a/extra/project-euler/173/173.factor +++ b/extra/project-euler/173/173.factor @@ -33,6 +33,6 @@ PRIVATE> 1000000 laminae ; ! [ euler173 ] 100 ave-time -! 0 ms run / 0 ms GC ave time - 100 trials +! 0 ms ave run time - 0.35 SD (100 trials) MAIN: euler173 diff --git a/extra/project-euler/175/175-tests.factor b/extra/project-euler/175/175-tests.factor new file mode 100644 index 0000000000..541aa7dc47 --- /dev/null +++ b/extra/project-euler/175/175-tests.factor @@ -0,0 +1,4 @@ +USING: project-euler.175 tools.test ; +IN: project-euler.175.tests + +[ "1,13717420,8" ] [ euler175 ] unit-test diff --git a/extra/project-euler/175/175.factor b/extra/project-euler/175/175.factor index 853bf9a10f..9aebcf565c 100644 --- a/extra/project-euler/175/175.factor +++ b/extra/project-euler/175/175.factor @@ -53,6 +53,6 @@ PRIVATE> V{ 1 } clone dup 123456789/987654321 compute [ number>string ] map "," join ; ! [ euler175 ] 100 ave-time -! 0 ms run / 0 ms GC ave time - 100 trials +! 0 ms ave run time - 0.31 SD (100 trials) MAIN: euler175 diff --git a/extra/project-euler/186/186-tests.factor b/extra/project-euler/186/186-tests.factor new file mode 100644 index 0000000000..71d2f1c59b --- /dev/null +++ b/extra/project-euler/186/186-tests.factor @@ -0,0 +1,4 @@ +USING: project-euler.186 tools.test ; +IN: project-euler.186.tests + +[ 2325629 ] [ euler186 ] unit-test diff --git a/extra/project-euler/186/186.factor b/extra/project-euler/186/186.factor index b86f3675a1..679748b3c2 100644 --- a/extra/project-euler/186/186.factor +++ b/extra/project-euler/186/186.factor @@ -51,11 +51,10 @@ IN: project-euler.186 [ first ] [ advance ] bi ; : 2unless? ( x y ?quot quot -- ) - >r 2keep rot [ 2drop ] r> if ; inline + [ 2keep rot [ 2drop ] ] dip if ; inline : (p186) ( generator counter unionfind -- counter ) - 524287 over equiv-set-size 990000 < - [ + 524287 over equiv-set-size 990000 < [ pick [ next ] [ next ] bi [ = ] [ pick equate diff --git a/extra/project-euler/190/190-tests.factor b/extra/project-euler/190/190-tests.factor new file mode 100644 index 0000000000..edcfa981bb --- /dev/null +++ b/extra/project-euler/190/190-tests.factor @@ -0,0 +1,4 @@ +USING: project-euler.190 tools.test ; +IN: project-euler.190.tests + +[ 371048281 ] [ euler190 ] unit-test diff --git a/extra/project-euler/190/190.factor b/extra/project-euler/190/190.factor index c0b7cb577f..84ab74bb03 100644 --- a/extra/project-euler/190/190.factor +++ b/extra/project-euler/190/190.factor @@ -49,6 +49,6 @@ PRIVATE> 2 15 [a,b] [ P_m truncate ] sigma ; ! [ euler150 ] 100 ave-time -! 7 ms run time - 100 trials +! 5 ms ave run time - 1.01 SD (100 trials) MAIN: euler190