Emoji-gramming

From Esolang
Jump to navigation Jump to search

Emoji-gramming (proper name πŸ’») is a simple emoji-based esolang.

Variables

There are 24 normal variables, each indicated by a specific emoji:
β™ˆ ♉ β™Š β™‹ β™Œ ♍ β™Ž ♏ ♐ β™‘ β™’ β™“
πŸ• πŸ•‘ πŸ•’ πŸ•“ πŸ•” πŸ•• πŸ•– πŸ•— πŸ•˜ πŸ•™ πŸ•š πŸ•›
All 24 store unbounded, signed, integers and are initialized to 0.

There is 1 special variable: 🚨
It is the Instruction Counter and stores the current line number being run.
Lines without commands are still counted.
It can be used like any other variable.
Setting it to another value jumps code execution to that line.
The Instruction Counter starts at 0 and increases by 1 before each command.

Commands

There are four commands; each command must be on its own line.
Any line that doesn't start with a command is treated as a comment.
The first command is on line 1.
In all commands, replace πŸ”³ and πŸ”² with variables.

πŸ˜ŠπŸ”³πŸ”² Set πŸ”³ to πŸ”².
πŸ˜‡πŸ”³πŸ”² Set πŸ”³ to πŸ”³ plus πŸ”².
πŸ˜ˆπŸ”³πŸ”² Set πŸ”³ to πŸ”³ minus πŸ”².
πŸ˜΅πŸ”³πŸ”² If πŸ”³ equals πŸ”², skip the next command.

Constants

Hearts can be used as constants, as desired.
Use a constant instead of variable πŸ”².

πŸ’” is 0
πŸ’œ is 1
πŸ’• is 2
πŸ’ž is 4
πŸ’– is 8

Input/Output

Input and Output can only be used as part of 😊 commands, replacing the indicated variable. Using both in the same command is forbidden.
🎀 Replace πŸ”²; input one ASCII/Unicode character and store value into variable πŸ”³.
πŸ“’ Replace πŸ”³; output the ASCII/Unicode character matching variable πŸ”².

Sample Code

Cat:

πŸ˜Šβ™’πŸŽ€
πŸ˜΅β™’πŸ’”
πŸ˜΅β™‹β™‹
πŸ˜‡πŸš¨πŸ’•
πŸ˜ŠπŸ“’β™’
πŸ˜ŠπŸš¨πŸ’”

Hello world:

πŸ˜ŠπŸ•πŸ’–
πŸ˜‡πŸ•πŸ•
πŸ˜ŠπŸ•‘πŸ•
πŸ˜‡πŸ•‘πŸ•‘
πŸ˜ŠπŸ•’πŸ•‘
πŸ˜‡πŸ•’πŸ•’
πŸ˜Šβ™ˆπŸ’–
πŸ˜‡β™ˆπŸ•’
πŸ˜ŠπŸ“’β™ˆ
πŸ˜Šβ™ˆπŸ’œ
πŸ˜‡β™ˆπŸ’ž
πŸ˜‡β™ˆπŸ•‘
πŸ˜‡β™ˆπŸ•’
πŸ˜ŠπŸ“’β™ˆ
πŸ˜Šβ™‰πŸ’ž
πŸ˜‡β™‰πŸ’–
πŸ˜‡β™‰πŸ•‘
πŸ˜‡β™‰πŸ•’
πŸ˜ŠπŸ“’β™‰
πŸ˜ŠπŸ“’β™‰
πŸ˜Šβ™ŠπŸ’œ
πŸ˜‡β™ŠπŸ’•
πŸ˜‡β™ŠπŸ’ž
πŸ˜‡β™ŠπŸ’–
πŸ˜‡β™ŠπŸ•‘
πŸ˜‡β™ŠπŸ•’
πŸ˜ŠπŸ“’β™Š
πŸ˜Šβ™ˆπŸ’ž
πŸ˜‡β™ˆπŸ’–
πŸ˜‡β™ˆπŸ•‘
πŸ˜ŠπŸ“’β™ˆ
πŸ˜ŠπŸ“’πŸ•‘
πŸ˜Šβ™ˆπŸ’œ
πŸ˜‡β™ˆπŸ’•
πŸ˜‡β™ˆπŸ’ž
πŸ˜‡β™ˆπŸ•
πŸ˜‡β™ˆπŸ•’
πŸ˜ŠπŸ“’β™ˆ
πŸ˜ŠπŸ“’β™Š
πŸ˜Šβ™ˆπŸ’•
πŸ˜‡β™ˆπŸ•
πŸ˜‡β™ˆπŸ•‘
πŸ˜‡β™ˆπŸ•’
πŸ˜ŠπŸ“’β™ˆ
πŸ˜ŠπŸ“’β™‰
πŸ˜Šβ™ˆπŸ’ž
πŸ˜‡β™ˆπŸ•‘
πŸ˜‡β™ˆπŸ•’
πŸ˜ŠπŸ“’β™ˆ
πŸ˜Šβ™ˆπŸ’œ
πŸ˜‡β™ˆπŸ•‘
πŸ˜ŠπŸ“’β™ˆ
πŸ˜Šβ™ˆπŸ’–
πŸ˜‡β™ˆπŸ’•
πŸ˜ŠπŸ“’β™ˆ

A+B problem, only supports one-digit numbers separated by any character:

πŸ˜Šβ™ŠπŸŽ€
πŸ˜ˆβ™ŠπŸ’–
πŸ˜ˆβ™ŠπŸ’–
πŸ˜ˆβ™ŠπŸ’–
πŸ˜ˆβ™ŠπŸ’–
πŸ˜ˆβ™ŠπŸ’–
πŸ˜ˆβ™ŠπŸ’–
πŸ˜Šβ™ŽπŸŽ€
πŸ˜Šβ™ŽπŸŽ€
πŸ˜‡β™Šβ™Ž
πŸ˜ŠπŸ“’β™Š

Because of a bug in the interpreter, the input command only reads the first character in each line, so you can remove line 8 to get a better experience, but I found a way to fix the bug in talk page.

See also

Interpreter