かわいい
かわいい 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)