ABCD
Jump to navigation
Jump to search
ABCD is an esoteric programming language made by user:Billlam. It's unusable for programming and it's totally Turing incomplete.
Every program has one and only one cell to do anything with.
Basic Commands
Cmd | Description |
---|---|
A |
Cell = Cell + 1 |
B |
Cell = Cell - 1 |
C |
Input to cell |
D |
Output cell |
Examples
For readability, the programs are padded to 64-character rows.
Cat program
There's no loop instruction here, to write a CAT program you must write something like this:
CDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCD CDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCD CDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCD CDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCD ...
Output Example
It's too hard to write a program that outputs a loooooong string (The coding will drive you crazy.) so the example just output FUCK
to the console.
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAADAAAAAAAAAAAAAAADBBBBBBBBBBBBBBBBBBDAAAAAAAAD
Hello, World!
Unless you know how to autogenerate programs, that is.
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAADDAAADBBBBBBBBBBBB BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBDBBBBBBBB BBBBDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAA AAAAAAAAAAAAAAAAAAAAADAAADBBBBBBDBBBBBBBBDBBBBBBBBBBBBBBBBBBBBBB BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBDBBBBBBBBBBBBBBBBBB BBBBBD
Interpreter
Here is an interpreter written in C#. The program is the first line of input. If you pass the -g
parameter followed by a string, it will generate a program to output that string.
using System; using System.Linq; class ABCD { static void Main(string[] args) { char c = '\0'; if (args.Length > 1 && args[0] == "-g") { string gen = String.Join(" ", args.Skip(1)); for (int i = 0; i < gen.Length; i++) { if (gen[i] > c) Console.Write(new String('A', (int)(gen[i] - c))); else Console.Write(new String('B', (int)(c - gen[i]))); c = gen[i]; Console.Write('D'); } return; } string prog = Console.ReadLine(); for (int i = 0; i < prog.Length; i++) switch (prog[i]) { case 'A': c++; break; case 'B': c--; break; case 'C': c = (char)Console.Read(); break; case 'D': Console.Write(c); break; } } }