From c3a73e60bb19ea1d9ec2dc8f2506c86fdb2fdc26 Mon Sep 17 00:00:00 2001 From: razetime Date: Fri, 18 Mar 2022 11:43:02 +0530 Subject: [PATCH] fractran --- fractran.bqn | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 fractran.bqn diff --git a/fractran.bqn b/fractran.bqn new file mode 100644 index 0000000..34033e7 --- /dev/null +++ b/fractran.bqn @@ -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