fractran
This commit is contained in:
parent
00ef532602
commit
c3a73e60bb
35
fractran.bqn
Normal file
35
fractran.bqn
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
# Fractran interpreter
|
||||||
|
|
||||||
|
# Helpers
|
||||||
|
_while_ ← {𝔽⍟𝔾∘𝔽_𝕣_𝔾∘𝔽⍟𝔾𝕩}
|
||||||
|
ToInt ← 10⊸×⊸+˜´·⌽-⟜'0'
|
||||||
|
ToFrac ← {
|
||||||
|
i ← ⊑/'/'=𝕩
|
||||||
|
ToInt¨i(↑⋈1⊸+⊸↓)𝕩
|
||||||
|
}
|
||||||
|
Split ← ((¬-˜⊢×·+`»⊸>)∘≠⊔⊢)
|
||||||
|
|
||||||
|
Fractran ← {
|
||||||
|
𝕊 n‿num‿den:
|
||||||
|
ind ← ⊑/0=den|num×n
|
||||||
|
⟨(n×ind⊑num)÷ind⊑den ⋄ num ⋄ den⟩
|
||||||
|
}
|
||||||
|
|
||||||
|
RunFractran ← {
|
||||||
|
steps 𝕊 inp‿prg:
|
||||||
|
num‿den ← <˘⍉>ToFrac¨' 'Split prg
|
||||||
|
step ← 1
|
||||||
|
list ← ⟨inp⟩
|
||||||
|
{
|
||||||
|
step +↩ 1
|
||||||
|
out ← Fractran 𝕩
|
||||||
|
list ∾↩ ⊑out
|
||||||
|
out
|
||||||
|
} _while_ {𝕊 n‿num‿den: (step<steps)∧ ∨´0=den|num} inp‿num‿den
|
||||||
|
list
|
||||||
|
}
|
||||||
|
|
||||||
|
seq ← 200 RunFractran 2‿"17/91 78/85 19/51 23/38 29/33 77/29 95/23 77/19 1/17 11/13 13/11 15/14 15/2 55/1"
|
||||||
|
•Out "Generated numbers: "∾•Repr seq
|
||||||
|
•Out "Primes: "∾•Repr (⌈=⌊)∘(2⊸(⋆⁼))⊸/ seq
|
||||||
|
|
Loading…
x
Reference in New Issue
Block a user