かわいい

From Esolang
Jump to navigation Jump to search

かわいい is a very cute and very Japanese esolang created by User:DifferentDance8, based around the Japanese concept of kawaii (which the esolang shamelessly borrows the name from). As a matter of fact, if your keyboard can not type CJK characters, A] good luck with anything in Category:CJK (including this esolang) and B] Kawaii is also a valid name for this esolang.

Were you to manually handwrite each command and send it to some kind of hypothetical style-recognizing OCR machine to then parse as valid かわいい code, the best way of writing commands would be in mauri-ji (丸い字) but due to a lack of mauri-ji style Japanese characters in unicode, normal Japanese characters also work.

Data Structure

You use a matrix for the data. This also makes this a 2D language in spirit, but not in actual code-wise. In this esolang, the matrix is 39x39 (39 in japanese is "sankyū", which also means "thank you") and can wraparound.

Commands

You have quite a few commands to play around with:

かわいい Command Non-Kawaii Name Description
🐾うごく[↑↓←→] Pointer Move Moves the pointer 1 space in the given direction (↑=up, ↓=down, ←=left, →=right). Wraps around edges of the 39x39 matrix.
🏊‍♀️スイムオン Swim Mode Enable Enables Swim Mode: slows execution, shows debug info, and adds splashy vibes. Gawr is pleased.
🏊‍♀️スイムオフ Swim Mode Disable Disables Swim Mode. Returns to normal execution. Gawr is very disappointed. 😿
➕ぷらす Pointer Increment By 1 Increments the value at the current cell by 1. Very plus. Much cute.
➖まいなす Pointer Decrement By 1 Decrements the value at the current cell by 1. Math but make it aesthetic.
✨これ=数字 Pointer Set To Value Sets the current cell to a specific value (数字 = actual number). Shine bright like a literal assignment.
🔊じかだし Direct Print Prints the current cell as a raw character. No filter. No shame. Not recommended for cute results.
🈲かんじプリント CJK Print Snaps value to CJK Unicode range (19968–40959) if out of bounds, then prints as character. Ideal for kanji chaos.
🔢すうじだし Number Print Prints the raw integer value of the current cell as a decimal number. No frills. Just digits. Very programmer-core.
🎲くりかえしスタート Loop Start Begins a loop. Skips to loop end if the current value is 4, 9, or 49 (unlucky in Japanese culture).
🎲くりかえしエンド Loop End Jumps back to Loop Start if current value ≠ 4, 9, or 49. Otherwise, breaks the loop.
🌟らんだむ Random Number Generates a random number. Re-rolls if number contains 4 or 9. If it contains 7 or 8 (but NOT 4/9), prints it wrapped in 【brackets】. Otherwise prints normally.
(ノ≧ڡ≦)☆ Random Kaomoji Print Randomly selects and prints a Japanese kaomoji from a predefined list. Pure ✨chaotic vibes✨. Instant serotonin delivery.
🧃にゅうりょくすうじ Number Input Prompts user to input a number, which is then stored in the current cell. No floats. No negativity. Just vibes.
🎤にゅうりょくもじ Char Input Prompts user to input a single character. Stores its Unicode value into the current cell. Use wisely or use uwu-ly.
💤おやすみ Program Halt Halts the program. Sweet dreams. Execution ends with a tuck-in and a headpat.


Example Programs

Hello World (with Kaomoji at the end)

✨これ=72         # H
🔊じかだし
🐾うごく→

✨これ=101        # e
🔊じかだし
🐾うごく→

✨これ=108        # l
🔊じかだし
🐾うごく→

✨これ=108        # l
🔊じかだし
🐾うごく→

✨これ=111        # o
🔊じかだし
🐾うごく→

✨これ=44         # ,
🔊じかだし
🐾うごく→

✨これ=32         # space
🔊じかだし
🐾うごく→

✨これ=87         # W
🔊じかだし
🐾うごく→

✨これ=111        # o
🔊じかだし
🐾うごく→

✨これ=114        # r
🔊じかだし
🐾うごく→

✨これ=108        # l
🔊じかだし
🐾うごく→

✨これ=100        # d
🔊じかだし
🐾うごく→

✨これ=33         # !
🔊じかだし
🐾うごく→

(ノ≧ڡ≦)☆          # Random Kaomoji
💤おやすみ

Proof Kawaii is Plushie-complete (micro programs)

Print 4: ✨これ=4🔢すうじだし💤おやすみ

Print 31: ✨これ=31🔢すうじだし💤おやすみ

Store 2 in a variable (assuming "variable" means current cell in 39x39 matrix): ✨これ=2💤おやすみ

Thus, Kawaii is plushie-complete. Of course, this isn't a particularly exciting thing to advertise (there are very few non plushie-complete languages out there), but it's worth mentioning.

Implementations

Try it online! (Python) (Note: Due to how tio.run works, you need to separate input and output by doing __INPUT__ in a new line)