We are currently working on new rules for what content should and shouldn't be allowed on this website, and are looking for feedback! See Esolang:2026 topicality proposal to view and give feedback on the current draft.
14
| Designed by | User:Marcus 2n2 |
|---|---|
| Appeared in | 2026 |
| Memory system | Stack-based |
| Dimensions | one-dimensional |
| Computational class | Turing complete |
| Reference implementation | Python |
| Dialects | 41 |
| File extension(s) | .14, .4teen, .fourteen |
14 is an esolang made by User:Marcus 2n2 because he likes esolangs named after numbers
Instructions
| Symbol | What they do |
|---|---|
| 1 | Pops a and pushes 10a+1. If stack is empty, push 1. |
| 4 | Pops a and pushes 10a+4. If stack is empty, push 4. |
| : | Duplicates top of stack. If empty, push 0. |
| - | Pops a and b, and pushes b-a. If there's only one element, negate. If the stack is empty, push 0. |
| / | Skips all instructions (except the matching \) if top of stack is 0. if the stack is empty, interpret as 0 |
| \ | Stop skipping instructions. |
| ( | No-op |
| ) | Go back to the matching ( |
| i | Push input (or 0 on EOF). |
| u | Pop. |
| o | Pop value and output it as ASCII. |
| O | Pop value and output it as number. |
| > | Rotate stack right. |
| < | Rotate stack left. |
There is also an extra DEBUG instruction, #, which dumps the stack. Shout-out to User:Blashyrkh for adding this instruction and other programs!
Basic components
Push 0
::-
Input all
(i/)\
Infinite loop
()
Print a newline
::-1:>1<-o
Comments
::-/any comment can be stored here\u
Set element to 0
:-
Examples
Cat program
btw, this esolang has
(i/o)
A+B problem
>::-<--
Reverse cat
(i/)\(o/)
Truth-machine
4:::-<4--i<-(:O/)
Looping counter
41::-:1:>--<((:::-1-<:o>/)\u ::-1:>1<-o)
Hello
4::4<-<-:::-<--o1:1:1--o1:::11<-<-<-:oo111o
Hello, world!
4::4<-<-:::-<--o1:1:1--o1:::11<-<-<-:oo111o44:o::-11-::-1-o1:1-1-::-:1::1:>->-<-::-<--::-<--o111o114o1:::11<-<-<-o11:1<-o44::-11-o1:1<-o
Kolakoski sequence
58-bytes Kolakoski sequence generator by User:Blashyrkh:
1O1::-:1--::OO(/(/::-1-::-1:>O)\-(/::-1-::-1::-:1--:>O)\-)
Quine
1737-bytes Quine by User:Blashyrkh:
::4>:14>:14>:4>:4>:1>:4>:11>:14>:1>:1>:111>:411>:41>:141>:4>:4>:1>:14>:14>:4>:4>:1>:4>:11>:14>:1>:1>:4>:111>:41>:4>:114>:44>:4>:4>:1>:4>:14>:1>:1>:111>:414>:144>:41>:411>:141>:4>:4>:4>:1>:11>:1>:141>:4>:1>:4>:144>:41>:141>:4>:4>:1>:4>:14>:14>:1>:1>:111>:44>:144>:41>:4>:4>:4>:1>:14>:1>:141>:4>:1>:4>:144>:41>:141>:14>:4>:4>:1>:4>:11>:14>:1>:1>:111>:44>:144>:41>:4>:4>:4>:1>:11>:11>:1>:141>:4>:1>:4>:144>:41>:141>:4>:1>:11>:114>:44>:144>:41>:4>:4>:4>:1>:11>:14>:1>:141>:4>:1>:4>:144>:41>:141>:4>:1>:14>:114>:44>:144>:41>:4>:4>:4>:1>:14>:11>:1>:141>:4>:1>:4>:144>:41>:141>:4>:4>:1>:11>:4>:11>:4>:41>:1>:44>:1>:1>:111>:44>:144>:41>:4>:4>:4>:1>:14>:14>:1>:141>:4>:1>:4>:144>:41>:141>:4>:4>:1>:4>:11>:4>:4>:14>:41>:41>:1>:44>:1>:44>:1>:1>:111>:44>:144>:41>:4>:4>:4>:1>:11>:11>:11>:1>:141>:4>:1>:4>:144>:41>:141>:111>:44>:144>:41>:4>:4>:4>:1>:11>:11>:14>:1>:141>:4>:1>:4>:144>:41>:141>:4>:4>:1>:4>:14>:1>:4>:11>:1>:1>:111>:44>:144>:41>:4>:4>:4>:1>:11>:14>:11>:1>:141>:4>:1>:4>:144>:41>:141>:4>:1>:14>:14>:4>:4>:1>:11>:4>:4>:1>:14>:1>:1>:111>:44>:144>:41>:4>:4>:4>:1>:11>:14>:14>:1>:141>:4>:1>:4>:144>:41>:141>:4>:1>:14>:4>:4>:1>:4>:14>:14>:1>:4>:41>:1>:44>:1>:111>:44>:144>:41>:4>:4>:4>:1>:14>:11>:11>:1>:141>:4>:1>:4>:144>:41>:141>:4>:1>:14>:11>:4>:4>:1>:11>:1>:111>:44>:144>:41>:4>:4>:4>:1>:14>:11>:14>:1>:141>:4>:1>:4>:144>:41>:141>:4>:1>:14>:11>:111>:44>:144>:41>:414>:44::-:14--o(>/::-44::-:14--:o>:O<::-:4--o)\>(/:::-1-/:-:\>/::-:44--o<\>:::-4-/:-:\>/4::-:14--o<\>:::-11-/:-:\>/:-1O<\>:::-14-/:-:\>/:-4O<\>:::-41-/:-:\>/::-1:1:>-<--o<\>:::-44-/:-:\>/::-:1::4>>-<-<--o<\>:::-111-/:-:\>/o<\>:::-114-/:-:\>/::-:4-:1--o<\>:::-141-/:-:\>/:-44::-1::-4--o<\>:::-144-/:-:\>/:-4::-:44-:>-<-o<\>:::-411-/:-:\>/:-41::-1-o<\>:::-414-/:-:\>/:-41o<\>)
Turing completeness proof
14 is Turing-complete because it is able to simulate three cell bf. Every program must start with :::. The following table is applicable:
| bf | 14 |
|---|---|
, |
i
|
. |
o
|
< |
<
|
> |
>
|
[ |
(/
|
] |
)\
|
- |
::-1-
|
+ |
::-:1--
|
41
41 is 14, but with more commands and 41 as a constant
| Symbol | What they do |
|---|---|
| 0 | Pop a, push 10a. If empty, push 0. |
| 1 | If previous symbol is 4, pop and push 41. Else, push 1. |
| 2 - 9 [n] | Push n. |
| : | Duplicates top of stack. If empty, push 0. |
| + | Pops a and b, and pushes b+a. If there's only one element, no-op. If the stack is empty, push 0. |
| - | Pops a and b, and pushes b-a. If there's only one element, negate. If the stack is empty, push 0. |
| * | Pops a and b, and pushes b*a. If there's less than two elements, push 0. |
| ' | Pops a and b, and pushes b//a. If there's less than two elements on the stack or if a=0, push 0. |
| / | Skips all instructions (except the matching \) if top of stack is 0. if top of stack is empty, interpret as 0 |
| \ | Stop skipping instructions. |
| ( | No-op |
| ) | Go back to the matching ( |
| i | Push input. EOF = null |
| u | Pop. |
| o | Output ascii. |
| n | Output number. |
| > | Rotate stack right. |
| < | Rotate stack left. |
| g | Get an instruction, push it. Outside returns null. |
| p | Pop a and b, put b in position a. |
| m | Pop a, move to a. |
| b - f | Push hex codes to stack |
| q | Pop a, enqueue a. |
| r | Dequeue a, push a. |
| l | Push length of the stack. |
| s | If this is called once, pop and store in the accumulator. Call it again, clear and push the accumulator. |
| " | Toggle string mode. |
| ! | Pop a. If a=0, push 1. Else, push 0 |
Basic components
Print text
"Text here!"10o" Newlines are represented as “10o”"l:>(sqs1-/)\u(sros1-/)\u
If else block
True is 1, false is 0.
!!/
::-/
If block
\
u
\
!/
::-/
Else block
\
u
Examples
99 Bottles of Beer
9b*(
:n"elttob "oooooo1-
/
"s"o
\
1+",llaw eht no reeb fo "ooooooooooooooooooooo10o
:n"elttob "oooooo1-
/
"s"o
\
",reeb fo "ooooooooo10o",dnuora ti ssap ,nwod "oooooooooooooooooooooo
/
:n"elttob "oooooo1-
/
"s"o
\
1+",llaw eht no reeb fo "ooooooooooooooooooooo10:oo
)
\
"No more bottles of beer on the wall!"l:>(sqs1-/)\u(sros1-/)\u
(Cheating) quine
0(:g/o1+)
Deadfish interpreter
0s(i/:"i"-!/s1+s\:"d"-!/s1-s\:"s"-!/s:*s\:"o"-!/s:ns10o\8:4**s:s-!/s:-s\u1s:s+!/s:-s\u)
FizzBuzz
1(::3'3*-!/"zziF"oooo\q::5'5*-!/"zzuB"oooo\r+!/>:n<\u1+10o:1001+-/u)
