/spaghetti-script

SpaghettiScript is an esoteric programming language similar to BF but with functions instead of loops.

Primary LanguageJavaScript

Spaghetti Script Icon

Spaghetti Script

SpaghettiScript is an esoteric programming language similar to bf but with functions instead of loops.

It is tape based, and Turing-complete. View the full language description here!

Code Examples

Hello World (newlines for readability):

[1~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~:OA
⇢~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~:OA
⇢~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~:OA
⇢~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~:OA
⇢~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~:OA
⇢~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~:OA
⇢~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~:OA
⇢~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~:OA
⇢~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~:OA
⇢~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~:OA
⇢~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~:OA
⇢~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~:OA] ---≡1

Count Down:

[0:o---≡1] [1:O-{o=0}===≡2 ---≡1] [2] ---≡0

Add from input:

[0 get input :o⇢:o ---≡1] ---≡0
[1 add -⇠~⇢{o=0}===≡2 ---≡1] [2⇠:O]

Multiply from input:

[0 :o⇢:o ---≡1] ---≡0
[1 {o=0}===≡500 -  ⇠ ---≡100]
[100 dup -⇠~⇠~⇢⇢{o=0}===≡200 ---≡100]
[200 ⇠⇠ ---≡201⇢⇢⇢---≡1]
[201 add back - ⇢⇢ ~ ⇠⇠ {o=0}===≡300 ---≡201]
[300 empty]
[500⇠⇠:O]

Cat Programs

String Cat (end with 0):

[1:o {o=0}===≡11 :OA ---≡1] ---≡1 [11] ---≡100 [100 ⑂]

Multiple Number Cat (end with 0):

[2:o {o=0}===≡21 :O ---≡2] ---≡2 [21] ---≡100 [100 ⑂]

Single Number Cat:

[3:o:O] ---≡3

FizzBuzz

---≡1000
[1000 ~ ---≡990 ⇠ ---≡999]
[999 ---≡1⇢ ---≡980 ~ {o=101}===≡1001 ---≡990 ⇠ ---≡999] [1001]
[990 - ⇠~⇠~⇢⇢{o=0}===≡3 ---≡990]
[980 - ⇢⇢⇢⇢⇢⇢~⇠⇠⇠⇠⇠⇠{o=0}===≡981 ---≡980] [981⇢⇢⇢⇢⇢⇢]
[0 ⇢:o⇠ ---≡10 ]
[10 ~ ⇢ - {o=0}===≡11 ⇠ ---≡1 ---≡10] [11]

[1
 set up the stack (triplicate) ---≡2
 check fizz ---≡4
 ⇠
 check buzz ---≡5
 ~~~~~~~~~~:OA----------
]

[2 - ⇠~⇠~⇠~⇢⇢⇢{o=0}===≡3 ---≡2 ] [3⇠]

[4
 ---
 {o=0}===≡40
 {o=-1}===≡41
 {o=-2}===≡41
 ---≡4
]
[40 Fizz ⇠⇠⇠~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
:OA~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~:OA~~~~~~~~~~~~~~~~~:OA:OA⇢⇢⇢]
[41 set flag ⇠⇠⇠~⇢⇢⇢]

[5
 -----
 {o=0}===≡50
 {o=-1}===≡51
 {o=-2}===≡51
 {o=-3}===≡51
 {o=-4}===≡51
 ---≡5
]
[50 Buzz ⇠⇠⇠~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~:OA
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~:OA~~~~~:OA:OA⇢⇢⇢⇢⇢]
[51 read flag ⇠⇠{o=1}===≡6 ⇢⇢⇢⇢]

[6 print num ⇢:O⇢⇢⇢]