aboutsummaryrefslogtreecommitdiff
path: root/commentary/sbcs.bqn
diff options
context:
space:
mode:
authorMarshall Lochbaum <mwlochbaum@gmail.com>2021-04-18 14:34:34 -0400
committerMarshall Lochbaum <mwlochbaum@gmail.com>2021-04-18 14:34:34 -0400
commitcd62770ab91790233d49fe440d8e9f88abfa8b1e (patch)
treea0fcaec585cbd2c932ab58814deff9ba62975dfa /commentary/sbcs.bqn
parent225a30537acfeb3efe2a7730e5d1a063cc537047 (diff)
Add script for SBCS encoding, for code golf
Diffstat (limited to 'commentary/sbcs.bqn')
-rw-r--r--commentary/sbcs.bqn26
1 files changed, 26 insertions, 0 deletions
diff --git a/commentary/sbcs.bqn b/commentary/sbcs.bqn
new file mode 100644
index 00000000..1217d919
--- /dev/null
+++ b/commentary/sbcs.bqn
@@ -0,0 +1,26 @@
+# Single-Byte Character System (SBCS) for BQN
+# This file implements an alternative character encoding for BQN, in
+# which each character uses one byte.
+# It must exist in order to count BQN characters as bytes for code golf,
+# but never needs to be used.
+#
+# To use:
+# $ bqn sbcs.bqn -ef infile.bqn outfile.bqn # Encode with SBCS
+# $ bqn sbcs.bqn outfile.bqn # Run with SBCS
+
+cs←"×÷⋆√⌊⌈¬∧∨≠≤≥≡≢⊣⊢⥊∾≍↑↓↕«»⌽⍉⍋⍒⊏⊑⊐⊒∊⍷⊔˙˜˘¨⌜⁼´˝∘○⊸⟜⌾⊘◶⎉⚇⍟⎊⋄⇐←↩⟨⟩‿·𝕊𝕏𝕎𝔽𝔾𝕤𝕩𝕨𝕗𝕘π∞¯•"
+base←@+128
+off←0∾˜cs-base+↕≠cs
+
+Decode ← (off(⊣⊏˜¯1⌈≠⊸⌊)-⟜base)⊸+
+Encode ← -⟜(cs⊸⊐⊏off˙)
+
+WriteFile ← •FBytes⟜Encode
+RunFile ← •BQN Decode∘•FBytes
+
+(⊑"-e"‿"-ef"‿"--"⊐⊏)◶⟨
+ •Out∘Encode 1⊸⊑
+ WriteFile⟜•FChars˜´ 1⊸↓
+ RunFile 1⊸⊑
+ RunFile ⊑
+⟩ •args