Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
35
Task/Hamming-numbers/Lambdatalk/hamming-numbers-1.lambdatalk
Normal file
35
Task/Hamming-numbers/Lambdatalk/hamming-numbers-1.lambdatalk
Normal file
|
|
@ -0,0 +1,35 @@
|
|||
{def hamming
|
||||
{def hamming.loop
|
||||
{lambda {:h :a :i :b :j :c :k :m :n}
|
||||
{if {>= :n :m}
|
||||
then {A.last :h}
|
||||
else {let { {:h {A.set! :n {min :a :b :c} :h}}
|
||||
{:a :a} {:i :i}
|
||||
{:b :b} {:j :j}
|
||||
{:c :c} {:k :k}
|
||||
{:m :m} {:n :n}
|
||||
} {hamming.loop :h
|
||||
{if {= :a {A.get :n :h}}
|
||||
then {* 2 {A.get {+ :i 1} :h}} {+ :i 1}
|
||||
else :a :i}
|
||||
{if {= :b {A.get :n :h}}
|
||||
then {* 3 {A.get {+ :j 1} :h}} {+ :j 1}
|
||||
else :b :j}
|
||||
{if {= :c {A.get :n :h}}
|
||||
then {* 5 {A.get {+ :k 1} :h}} {+ :k 1}
|
||||
else :c :k}
|
||||
:m
|
||||
{+ :n 1} }
|
||||
}}}}
|
||||
{lambda {:n}
|
||||
{hamming.loop {A.new {S.serie 1 :n}} 2 0 3 0 5 0 :n 1}
|
||||
}}
|
||||
-> hamming
|
||||
|
||||
{S.map hamming {S.serie 1 20}}
|
||||
-> 1 2 3 4 5 6 8 9 10 12 15 16 18 20 24 25 27 30 32 36
|
||||
|
||||
{hamming 1691}
|
||||
-> 2125764000 // < 200ms
|
||||
|
||||
Currently limited to javascript's integers and by stackoverflow on some computers.
|
||||
21
Task/Hamming-numbers/Lambdatalk/hamming-numbers-2.lambdatalk
Normal file
21
Task/Hamming-numbers/Lambdatalk/hamming-numbers-2.lambdatalk
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
{def ham
|
||||
{lambda {:n}
|
||||
{S.sort <
|
||||
{S.map {{lambda {:n :i}
|
||||
{S.map {{lambda {:n :i :j}
|
||||
{S.map {{lambda {:i :j :k}
|
||||
{* {pow 2 :i} {pow 3 :j} {pow 5 :k}}} :i :j}
|
||||
{S.serie 0 :n} } } :n :i}
|
||||
{S.serie 0 :n} } } :n}
|
||||
{S.serie 0 :n} }
|
||||
}}}
|
||||
-> ham
|
||||
|
||||
{def H {ham 30}}
|
||||
-> H
|
||||
|
||||
{S.slice 0 19 {H}}
|
||||
-> 1 2 3 4 5 6 8 9 10 12 15 16 18 20 24 25 27 30 32 36
|
||||
|
||||
{S.get 1690 {H}}
|
||||
-> 2125764000 // on my macbook pro
|
||||
57
Task/Hamming-numbers/Lambdatalk/hamming-numbers-3.lambdatalk
Normal file
57
Task/Hamming-numbers/Lambdatalk/hamming-numbers-3.lambdatalk
Normal file
|
|
@ -0,0 +1,57 @@
|
|||
{def factor
|
||||
{def factor.r
|
||||
{lambda {:n :i}
|
||||
{if {> :i :n}
|
||||
then
|
||||
else {if {= {% :n :i} 0}
|
||||
then :i {factor.r {/ :n :i} :i}
|
||||
else {factor.r :n {+ :i 1}} }}}}
|
||||
{lambda {:n}
|
||||
:n is the product of 1 {factor.r :n 2} }}
|
||||
-> factor
|
||||
|
||||
{def asproductofpowers
|
||||
{def asproductofpowers.loop
|
||||
{lambda {:a :b :c :n}
|
||||
{if {= {S.first :n} 1}
|
||||
then 2{sup :a}•3{sup :b}•5{sup :c}
|
||||
else {asproductofpowers.loop
|
||||
{if {= {S.first :n} 2} then {+ :a 1} else :a}
|
||||
{if {= {S.first :n} 3} then {+ :b 1} else :b}
|
||||
{if {= {S.first :n} 5} then {+ :c 1} else :c}
|
||||
{W.rest :n} }
|
||||
}}}
|
||||
{lambda {:n}
|
||||
{asproductofpowers.loop 0 0 0 {S.reverse :n}}}}
|
||||
-> asproductofpowers
|
||||
|
||||
{factor 2125764000}
|
||||
-> 2125764000 is the product of 1 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 3 3 5 5 5
|
||||
|
||||
{asproductofpowers {factor 2125764000}}
|
||||
-> 2^5•3^12•5^3
|
||||
|
||||
{S.map {lambda {:i} {div}:i: {S.get :i {H}} =
|
||||
{asproductofpowers {factor {S.get :i {H}}}}}
|
||||
{S.serie 0 19}}
|
||||
->
|
||||
0: 1 = 2^0•3^0•5^0
|
||||
1: 2 = 2^1•3^0•5^0
|
||||
2: 3 = 2^0•3^1•5^0
|
||||
3: 4 = 2^2•3^0•5^0
|
||||
4: 5 = 2^0•3^0•5^1
|
||||
5: 6 = 2^1•3^1•5^0
|
||||
6: 8 = 2^3•3^0•5^0
|
||||
7: 9 = 2^0•3^2•5^0
|
||||
8: 10 = 2^1•3^0•5^1
|
||||
9: 12 = 2^2•3^1•5^0
|
||||
10: 15 = 2^0•3^1•5^1
|
||||
11: 16 = 2^4•3^0•5^0
|
||||
12: 18 = 2^1•3^2•5^0
|
||||
13: 20 = 2^2•3^0•5^1
|
||||
14: 24 = 2^3•3^1•5^0
|
||||
15: 25 = 2^0•3^0•5^2
|
||||
16: 27 = 2^0•3^3•5^0
|
||||
17: 30 = 2^1•3^1•5^1
|
||||
18: 32 = 2^5•3^0•5^0
|
||||
19: 36 = 2^2•3^2•5^0
|
||||
Loading…
Add table
Add a link
Reference in a new issue