Esolang:Sandbox

From Esolang
Jump to navigation Jump to search

Konfyne

Konfyneis an esolang by User:PythonshellDebugwindow where both the code and the memory are two-dimensional.

Memory

Memory is two-dimensional.Thememory pointer(MP) has an X position,a Y position,and a direction.

Syntax

The code is also two-dimensional.Theinstruction pointer(IP) has an X position,a Y position,and a direction.Each character is its own command.

Commands

Command Effect
Set the IP direction to right
Set the MP direction to right
Set the IP direction to left
Set the MP direction to left
Set the IP direction to down
Set the MP direction to down
Set the IP direction to up
Set the MP direction to up
Increment memory at MP,then set the MP direction to up
Decrement memory at MP,then set the MP direction to up
Jump if nonzero
Jump if zero
[[Category:Languages]][[Category:2020]][[Category:Cell-based]][[Category:Unimplemented]]

kcufniarB

.ecnetnes a fo trats eht ta,netfo,tpecxe desacrewol yllacipyt sikcufniarbtaht etoN

.selcitra emos ni lla ta desu eb ton thgim eman reporp eht sa,bew eht no kcufniarb gnidrager noitamrofni rof hcraes ot tluciffid tib a ti ekam nac sihT.fb ro,kcirfniarb,fooniarb,sekalfnarb,k**fniarb,(ekojasa)kcuf****b,kcsfniarb,kc*fniarb,***fniarb sa ot derrefer semitemos si ti,egaugnal hsilgnE eht ni sdrow evisneffo tsom eht fo eno deredisnoc netfo si eman sti fo flah tsal eht taht tcaf eht ot euD.segaugnal rehto fo tsoh a fo noitaerc eht deripsni sah dna,egaugnal gnimmargorp ciretosesuomaf tsom eht sikcufniarB

weivrevo egaugnaL

:era sdnammoc ehT.llec yromem tsrif eht ot gnitniop yllaitini,retniop a si erehT.(egaugnal eht fo stnairav tnereffid evig ezis llec dna htgnel yarra eht rof sezis tnereffid;noitacificeps egaugnal eht fo trap eb ton yam siht tub,gnol sllec 00003 saw yarra eht,noitatnemelpmi lanigiro eht nI).orez ot tes yllaitini hcae,sllec yromem fo yarra na no setarepo kcufniarB

dnammoC noitpircseD
> thgir eht ot retniop eht evoM
< tfel eht ot retniop eht evoM
+ retniop eht ta llec yromem eht tnemercnI
- retniop eht ta llec yromem eht tnemerceD
. retniop eht ta llec eht yb deifingis retcarahc eht tuptuO
, retniop eht ta llec eht ni ti erots dna retcarahc a tupnI
[ 0 si retniop eht ta llec eht fi]gnihctam eht tsap pmuJ
] oreznon si retniop eht ta llec eht fi[gnihctam eht ot kcab pmuJ

.woleb snoisnetxe ees, tuB. derongi dna stnemmoc deredisnoc eb dluohs][,.-+<>naht rehto sretcarahc llA

yrotsiH

.(desilatipac netfo won si ti hguohtla,esac rewol ni rettel laitini eht htiw)kcufniarbegaugnal eht eman ot esohc rellüM.relipmoc etyb-4201 a dah hcihw,ESLAF yb deripsni saw egaugnal ehT.relipmoc etyb-042 a etirw ot deganam eH.0.2 noisrev,SO agimA eht rof relipmoc elbissop tsellams eht etirw dluoc eh hcihw rof egaugnal a ekam ot tpmetta na ni,3991:yrogetaC: ni rellüM nabrU yb detnevni saw kcufniarB

.noitairav ronim a deredisnoc eb nac kcufniarb hcihw fo,4691 ni dehsilbup ''P egaugnal s'mhöB yb decneulfni ro fo erawa saw rellüM tnetxe tahw ot nwonk ton si tI

Stackomp

```bash v>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>v > rstack.....v >.p..v > p >OO d v >Smpv v ^ S p<<<<< A CCC , K O^ O bM p< p lR v ^ SSS T A A C SK O O y MM v .Qpu< v ^ S T rcomp..C.> ^ K O O v v S v ^ SSSS > T A^ < CCC K K OOO > > ^ v ^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< ```

  1. STACKOMP: A "Stack based" 2d, reflective, esoteric programming language

, short for stack compression, or maybe stack computation, is a fungoid esoteric language, meaning symbols exist on a 2d playfield, in which the insruction pointer (IP) traverses. The starts at the top left of the playfield, and moves right. Just like Befunge, Stackomp uses the <>^v characters to change the direction of the IP's movement. The IP also loops around, if it moves off of the playfield. But unlike Befunge, Stackomp does not have a stack based memory system at its disposal- instead the IP only has single cell value as memory, which it can write to, and read from.

          1. The Stackomp playfield

The Stackomp playfield contains a 2d array of cells (at most 1000 wide and 100 tall). Each cell either stores a character, a number, or white space. The playfield is loaded from a .sk text file. Space and newline characters are considered whitespace. The characters 0 through 9, X, C and M are considered numbers. Everything else is considered a character. Of these characters, several of them are instruction characters (like <>^v), but they behave and can be manipulate in the same way as other characters.

          1. Data manipulation

The S, u, r, d, l characters are used for reading data off of the playfield. _S:_ When the IP runs into the S character, it'll store the next (non whitespace) cell into it's memory. This includes instruction characters also, effectivley ignoring them. _u,r,d,l:_ Passing by these lower case directional instuction "pulls" from the stack pointing in that direction, storing the nearest cell into memory, and shifting all cells following it toards the character (stopping at whitespace). Pulling cells will also loop around the playfield, so insure there is always whitespace between things you want to keep seperate. For example (& represents the IP): If the IP is moving right in this example, ```bash &> d

  H
  I
  >

``` the result would be ```bash

> d  &
  I
  >

``` with the IP storing an H character. The main gimmic of Stackomp is, the items in the playfield act as stacks that the IP can manipulate.

The U,R,D,L characters (Upper case directional instructions) push from the stack pointing in each direction. If the memory and stack contain only characters, it acts exactly like you would expect (the opposite of pushing), other than the fact that the IP retains its memory. So if the IP was storing K in this example: ```bash &> D

  H
  I
  >

``` the result would be ```bash

> D &
  K
  H
  I
  >

``` But the interaction is different for number cells. Numbers and characters will never interact, but if a smaller number is pushed into the cell of a larger number, the larger number will subtract the smaller (and the push will stop) So if the IP was storing numerical 2 in this case: ```bash &> D

  5
  9
  >

``` the result would be ```bash

> D  &  
  3
  9
  >

``` , but if the IP was storing numerical 8, the result would be: ```bash

> D  &  
  8
  4
  >

``` (the 5 gets pushed into the 9) This operation is the only means of doing calculations, or logical branching. An example of logical branching would be if pushing a larger number into a smaller one moves a 'v' out of the way of the IP's path, causing a branch, compared to if the original number was smaller. Doing conditional branching requires the code to change itself, and most of the time, destroy itself.

          1. Input and output

The K character is used for user input, and the p and P characters are used for displaying to the screen.

      1. Full instruction Breakdown:

Character| Instruction ---|--- _< > ^ v_: | Change the direction of the intruction pointer movement _0 1 ... 9_: | Numerical cell of the specified value _X C M_:| Numerical cell of value 10, 100 and 1000 respectivley _S_:|Read the following cell into memory _u r d l_:| Pull from the stack in the specified direction _U R D L_:| Push into the stack in specified direction (with conditional subtractions) _K_:| Read the askii value of the user inputed character as a numerical value _p_:| Print the current value in memory as a character _P_:| Print the current value in memory as a decimal number

    1. Installation

Inside of the folder, there are 3 versions of the STACKOMP interpreter. All three work. The first two use pure c, and can be compiled into an EXE file to run by using make. ```bash make STACKOMP_interpreter ``` ```bash make STACKOMP_interpreter_ver2 ``` The third version uses c++ so it can use the ncursors library, compile by running ```bash g++ -o int_v3 STACKOMP_interpreter_ver3.cpp -lncurses ``` If your computer complains about a lack of the ncurses library you can homebrew it. At this point you should have the executable.

    1. Usage

Versons 1 and 2 take no parameters, and can be run like so ```bash ./STACKOMP_interpreter ``` ```bash ./STACKOMP_interpreter_ver2 ``` They will then ask for a filename. Input the name of an existing .sk file. Several come predownloaded, but you can of course make your own. Once you inputted that, It should begin to run. Versions 1 and 2 are functionally identical, and flicker a lot, so I would recommend using version 3. Version three takes four parameters- the filename, the framedelay in microseconds, 1/0 boolean for drawing the rendering, and a boolean for drawing the debug info. Here is an example: ```bash ./int_v3 logo.sk 40000 1 1 ``` It'll display some debug info, enter through it and the code should start running.

          1. Have some fun, and see what you can do with it,
          2. - Martin lu
    1. Contributing

Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.

    1. License

[MIT](https://choosealicense.com/licenses/mit/)

Ini

Ini test ascii art atau apa-apa yang art bisa di lihat dari texts atau browser

⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⣀⡀⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄
⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⢰⣶⣶⣶⣶⣶⣶⣶⣶⣶⣶⣶⣶⣶⣶⣶⣶⣶⣶⣿⣿⣿⣿⣿⣿⣶⣶⣶⣶⣤⣤⣤⣤⣀⣀⣀⡀⠄⠄
⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠘⠛⠛⠛⠛⠛⠛⠛⠛⠛⠛⠛⠛⠛⠛⠛⠛⠛⠛⣿⣿⣿⣿⡿⠿⠿⠿⠟⠛⠛⠛⠋⠉⠉⠉⠉⠄⠄⠄
⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠁⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄
⠄⠄⠄⣀⣀⣀⡀⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄
⠄⠄⢸⣿⣉⣙⡛⠄⢀⣤⣤⣤⣄⠄⠄⠘⣿⡇⠄⠄⢀⣠⣤⣤⣄⠄⢀⣠⣤⣤⡄⠄⢠⣤⣿⣿⣤⡄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄
⠄⠄⢠⣭⠉⢹⣷⠄⢸⣿⠒⠚⠛⠄⠄⠄⣿⡇⠄⠄⢸⣿⠖⠚⠛⠄⢸⣿⡇⠄⠄⠄⠄⠄⣿⣿⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄
⠄⠄⠄⠉⠉⠉⠁⠄⠄⠉⠉⠉⠁⠄⢀⣈⣉⣉⣁⠄⠄⠈⠉⠉⠁⠄⠄⠈⠉⠉⠁⠄⠄⠄⠄⠉⠉⠁⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄
⠄⠄⠄⠤⠤⢤⣄⠄⠄⠄⠄⠄⠄⠄⢸⣿⣀⡀⠄⠄⠄⢀⣛⡃⠄⠄⠄⠘⣿⡇⠄⠄⢀⣠⡤⢤⣄⡀⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄
⠄⠄⢠⣶⣒⣺⣿⠄⠄⠄⠄⠄⠄⠄⢸⣿⠉⠁⠄⠄⠄⢈⣿⣇⡀⠄⠄⢀⣿⣇⡀⠄⢸⣿⣗⣚⡛⠃⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄
⠄⠄⠄⠉⠉⠉⠉⠄⠄⠄⠄⠄⠄⠄⠈⠉⠄⠄⠄⠄⠄⠈⠉⠉⠁⠄⠄⠈⠉⠉⠁⠄⠄⠈⠉⠉⠁⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄
⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄
⠄⠄⠄⣀⠄⢀⡀⢀⡀⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄
⠄⠄⣾⠁⠄⠘⢧⡼⠃⢠⡖⢲⡄⢰⡆⢰⡆⠄⠄⠄⠄⢠⣶⠒⠂⠄⣒⣲⣦⠄⣶⠒⣦⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄
⠄⠄⠈⠓⠄⠄⠘⠃⠄⠈⠓⠚⠁⠈⠓⠚⠃⠄⠄⠄⠄⠈⠛⠒⠂⠈⠛⠚⠛⠄⠛⠄⠛⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄
⠄⢀⡤⢼⡇⢰⡖⠲⠄⠄⣒⣲⡄⢠⡖⢲⡆⠄⠄⠄⠄⠄⣒⣲⣦⢰⣶⢲⣦⠄⣠⠤⣿⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄
⠄⠈⠓⠚⠃⠘⠃⠄⠄⠈⠓⠚⠃⠠⠭⠽⠃⠄⠄⠄⠄⠈⠛⠚⠛⠘⠛⠘⠛⠄⠙⠒⠛⠄⠄⠄⠄⠄⢀⡀⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄
⠄⢀⡤⢼⡇⢰⡖⠲⠄⢠⡖⢲⡄⢰⡖⢲⡄⠄⠄⠄⠄⠄⠄⠄⠄⠐⢺⣿⠒⠄⣴⠒⣦⠄⣴⠒⣦⠄⠄⢹⡆⠄⠄⠄⠄⠄⠄⠄⠄⠄
⠄⠈⠓⠚⠃⠘⠃⠄⠄⠈⠓⠚⠁⠸⠏⠉⠄⠄⠼⠃⠄⠄⠄⠄⠄⠄⠈⠛⠒⠄⠙⠒⠋⠄⠙⠒⠋⠄⠐⠋⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄
⠄⠄⣠⠄⠄⢀⣤⡀⠄⠄⠄⠄⠄⠄⠄⣀⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄
⠄⠸⣇⠄⠄⣿⠒⣿⠄⣿⠉⣷⠄⣴⠒⣿⠄⠄⠄⠄⠄⣿⡏⣿⡆⢰⡏⢹⡆⠸⣧⣦⡿⠄⠄⠄⠄⠸⣇⣸⡇⢰⡏⢹⡆⢸⡇⢸⡇⠄
⠄⠄⠈⠁⠄⠉⠄⠉⠄⠉⠄⠉⠄⠈⠉⠉⠄⠄⠄⠄⠄⠉⠁⠉⠁⠄⠉⠉⠄⠄⢉⡈⠁⠄⠄⠄⠄⠐⢶⡋⠄⠄⠉⠉⠄⠄⠉⠉⠁⠄
⠄⣾⠉⠁⠄⣨⠭⣷⠄⣿⠉⣷⠄⠄⠄⠄⠄⣿⣏⣿⠆⣨⡭⣿⡆⠐⠯⢭⡁⠈⢹⡏⠁⢰⡯⠽⠆⠄⢀⡿⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄
⠄⠈⠉⠁⠄⠈⠉⠉⠄⠉⠄⠉⠄⠄⠄⠄⠄⠛⠃⠄⠄⠈⠉⠉⠁⠈⠉⠉⠄⠄⠄⠉⠁⠄⠉⠉⠄⠄⠉⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄
 ________  ________  _____ ______   ________  ________  ___             ___  ___  ___  _____ ______   ________  ________  ___  ___             ___  ________        ___  ________  ___  ___  ___
|\   ____\|\   __  \|\   _ \  _   \|\   __  \|\   __  \|\  \           |\  \|\  \|\  \|\   _ \  _   \|\   __  \|\   __  \|\  \|\  \           |\  \|\   __  \      |\  \|\   __  \|\  \|\  \|\  \
\ \  \___|\ \  \|\  \ \  \\\__\ \  \ \  \|\  \ \  \|\  \ \  \          \ \  \ \  \\\  \ \  \\\__\ \  \ \  \|\  \ \  \|\  \ \  \\\  \          \ \  \ \  \|\  \     \ \  \ \  \|\  \ \  \ \  \ \  \
 \ \_____  \ \   __  \ \  \\|__| \  \ \   ____\ \   __  \ \  \       __ \ \  \ \  \\\  \ \  \\|__| \  \ \   ____\ \   __  \ \   __  \       __ \ \  \ \  \\\  \  __ \ \  \ \  \\\  \ \  \ \  \ \  \
  \|____|\  \ \  \ \  \ \  \    \ \  \ \  \___|\ \  \ \  \ \  \     |\  \\_\  \ \  \\\  \ \  \    \ \  \ \  \___|\ \  \ \  \ \  \ \  \     |\  \\_\  \ \  \\\  \|\  \\_\  \ \  \\\  \ \__\ \__\ \__\
    ____\_\  \ \__\ \__\ \__\    \ \__\ \__\    \ \__\ \__\ \__\    \ \________\ \_______\ \__\    \ \__\ \__\    \ \__\ \__\ \__\ \__\    \ \________\ \_______\ \________\ \_______\|__|\|__|\|__|
   |\_________\|__|\|__|\|__|     \|__|\|__|     \|__|\|__|\|__|     \|________|\|_______|\|__|     \|__|\|__|     \|__|\|__|\|__|\|__|     \|________|\|_______|\|________|\|_______|   ___  ___  ___
   \|_________|                                                                                                                                                                         |\__\|\__\|\__\
                                                                                                                                                                                        \|__|\|__|\|__|
⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄

⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⢀⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⢠⠄⣾⠄⣴⣿⡀⢀⣀⣤⣴⣶⣶⣶⣦⣄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⣿⣮⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⢿⣿⣿⣄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⣰⣿⣿⣿⣿⣿⣿⣿⣿⡟⡋⠉⠛⣿⣷⣎⢫⣻⣿⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠸⢹⣿⣿⣿⣿⣿⣿⣿⣿⣿⣧⣀⢀⣿⢻⣶⣬⣿⡏⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⡄⣸⣿⣿⣿⣻⣿⣽⣷⣶⣷⣶⣶⣾⣭⣔⡠⢽⣿⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⢹⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⠥⢠⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⡾⣿⢛⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣯⣜⣀⣈⣃⡀⠠⠌⠃⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠁⠃⢩⣾⣿⣿⣿⣽⣟⣽⣿⣿⣿⡿⡿⠿⣿⣿⣿⣿⣿⠷⠦⠄⠅⠠⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⢄⣰⡸⢷⠉⠙⠛⠻⣿⣟⠋⢉⠿⢻⡿⡿⡿⠋⢰⣇⡥⠄⠐⠄⢠⠘⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⢰⣶⣶⣦⣤⣄⣀⣀⠄⢀⣽⣿⣯⠄⠨⠄⠄⠄⠄⠐⢾⠔⠈⠄⢠⡇⠄⠊⡇⢤⣤⠄⢆⠈⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠈⣿⡄⠄⠈⠉⠉⠉⠛⢻⡿⡟⠸⡆⠄⠄⠄⣠⡤⠤⣤⣄⠄⢀⣾⣟⢻⡀⠱⢿⣿⠄⠘⡇⢰⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⣿⣇⠄⠠⠄⢠⠄⢀⠠⠇⠁⠄⣿⣦⡀⠄⠐⠠⠤⡤⠂⢀⣾⡟⢤⡀⠻⢿⢳⡿⠄⠄⠄⡄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⢸⣷⠄⠄⡀⢸⠄⠍⢀⠄⠄⠄⡟⢿⣿⣦⡀⠄⠄⠎⢀⣾⣿⡀⠄⠩⡀⡄⠈⡇⠄⠄⠄⢸⡄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠈⣿⡄⡉⠁⢌⢜⣴⣿⠄⠄⠄⠇⠄⠘⡿⣿⣶⣶⣶⣾⣿⣿⣿⣆⠄⡂⠃⢠⣿⡂⠄⠄⠄⠄⢧⣤⣤⣤⣤⣀⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⣀⡹⠗⢒⢎⣫⣿⡿⠃⠘⠄⠄⠄⠄⠄⠄⠈⡻⣿⣿⣿⣿⣿⣿⣿⣧⢫⡄⣼⣿⢿⣄⠄⠄⠄⣸⣿⣿⣿⣿⣿⣿⣷⣄⡀⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⣀⣤⣶⣿⣿⣿⣿⠿⠛⠉⠄⠄⡰⢋⣴⣿⠋⠄⣠⠃⠄⢸⠄⠄⠄⠄⠄⠁⡘⢿⣿⣿⣿⣿⣿⣿⣏⣷⣿⠋⣼⣀⢀⣠⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣆⠄⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⣠⣾⣿⣿⣿⣿⣿⣿⠁⠄⠄⠄⠄⡜⢁⣺⣿⣯⡐⠛⠁⠄⠄⢀⢧⠄⠄⠄⢀⣔⣀⣘⣿⣿⣿⣿⣿⣿⣿⡿⢡⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣧⡀⠄⠄ ⠄⠄⠄⠄⠄⠄⢀⣼⣿⣿⣿⣿⣿⣿⣿⣿⠄⠄⠄⠄⠄⢠⣏⣿⣿⣿⣿⣷⣶⣖⣀⡀⠁⢋⠄⠐⠈⠄⠄⢐⣺⣿⣿⣿⣿⣿⣿⢃⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⠄⠄ ⠄⠄⠄⠄⠄⠄⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⠄⠄⠄⢠⣧⣸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣶⣿⣿⣿⣿⣿⣿⡏⣼⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠄⠄ ⠄⠄⠄⠄⠄⠄⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⠄⠄⠄⣭⠉⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⢿⣻⣿⣿⣿⣿⣿⣿⣿⣷⣽⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠄⠄ ⠄⠄⠄⠄⠄⠄⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⠄⠄⣠⠄⢻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⡏⢻⣽⣿⡿⢟⡫⠚⠁⢸⣿⣿⣿⣿⣧⠿⢻⠙⢿⣷⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡄⠄ ⠄⠄⠄⠄⠄⢰⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠄⠄⠁⠰⣾⣿⣿⣿⣿⣿⣿⣿⣿⢯⠂⣣⣶⣿⣿⣏⠰⠽⣒⣩⣴⣾⣿⣿⣿⡟⠁⠄⡜⠄⢨⣿⣿⣷⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠁⠄ ⠄⠄⠄⠄⠄⠄⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠄⠄⠄⢀⣿⣿⣿⣿⣿⣿⣿⣿⠧⣪⣾⣿⣿⣿⣿⣿⣯⣿⣾⣿⣿⣿⣿⣿⣿⠁⠄⣼⣷⣶⠃⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠄⠄ ⠄⠄⠄⠄⠄⠄⠈⢿⣿⣿⣿⣿⣿⣿⣿⣿⡟⠄⠄⠄⢸⣿⣿⣿⣿⣿⣿⣿⣷⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡏⠄⢀⠛⠿⡿⢰⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⣼⣿⣿⣿⣿⣿⣿⣿⣿⠃⠄⠄⠄⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣄⣴⡆⠄⢡⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⠄ ⠄⠄⠄⠄⠄⠄⠄⠘⣿⣿⣿⣿⣿⣿⣿⡏⠄⠄⠄⢠⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⣼⣿⡇⠄⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠃⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⣿⣿⣿⣿⣿⣿⣿⠄⠄⠄⠄⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣭⣙⠛⠿⡿⢯⢿⣿⣿⣿⣿⣿⣿⣿⣿⡇⣿⣿⠇⠄⣸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠏⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⣿⣿⣿⣿⣿⣿⠇⠄⠄⠄⣰⡿⢛⣽⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣦⡀⠄⢿⣿⣿⣿⣿⣿⣿⣿⣿⣇⠘⠋⠄⢠⣿⣿⣿⣿⣿⠉⠿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡟⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⣿⣿⣿⣿⣿⡿⠄⠄⠄⢀⣿⢰⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣦⣀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣶⣤⣶⣿⣿⣿⣿⣿⡇⠄⠄⠈⠻⣿⣿⣿⣿⣿⣿⣿⡇⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⠻⣿⣿⣿⣿⠇⠄⠄⠄⣼⣷⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡟⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡟⠄⠄⠄⠄⠄⠈⠻⣿⣿⠿⠟⠋⠄⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⠄⠹⣿⣿⡿⠄⠄⠄⢰⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠘⢿⡇⠄⠄⠄⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠄⠄⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠟⠁⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⣰⣿⡇⠄⠄⢰⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠄⢸⡼⣿⣿⣿⣿⣿⣿⣿⣿⡿⠛⠉⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠹⣿⣷⢡⠄⠸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠄⢈⣶⣻⣿⣿⣿⣿⣿⣿⣿⣷⣶⣤⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⣰⣿⣿⣧⠻⣄⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⣟⣿⣿⣷⣣⢐⣚⣆⠻⣿⣿⣿⣿⣿⣿⣿⣿⣿⡄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⣿⣿⣿⣿⣯⣨⣶⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠟⣫⣵⣾⣿⣿⣿⣿⣿⣧⢢⣐⣤⣿⣿⣿⣿⣿⣿⣿⣿⣿⣧⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⠄⢠⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣄⠉⠛⠛⢋⣡⣶⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠏⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⠄⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣶⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡁⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⠄⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣆⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⣼⣿⣿⣿⣿⡝⡿⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣦⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⣼⣿⣿⣿⣿⣿⢳⡰⣼⣿⣿⣿⣿⢫⣭⣭⣭⣟⢻⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣧⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⠄⢀⣾⣿⣿⣿⣿⣿⣿⡶⠘⡝⢻⢿⣿⣿⠱⣾⣿⣿⣿⢸⣿⣿⣿⣿⣿⣿⣿⣽⢿⠿⠿⡛⣻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣇⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⢀⣾⣿⣿⣿⣿⣿⣿⣿⣿⣧⣥⡮⡇⣨⣿⠉⡥⠤⢖⢒⢺⠿⢿⠛⣯⠿⣿⣽⣿⣷⠁⢲⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⢸⢹⡿⠛⠛⠿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠱⣟⣠⣯⣞⣾⡇⣠⠁⠉⣢⠿⢿⣿⣿⣾⣶⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⠄⢀⠣⠄⢄⠄⢨⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣶⣶⣶⣶⣿⣿⣿⣿⣾⢽⢀⢴⠉⢻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⢂⠑⠈⠃⣼⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣠⣦⣽⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄

⠄⠄⠄⠄⠄⠄⠄⠠⠈⠢⢹⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄
WWWWWWWWWWWWWWWWWWWWWWWWWW@@@@WWWWWWWWWWWWWWWWWWWWWWWWWW

WWWWWWWWWWWWWWWWWWWWW@@@@@@@@@@@@@@WWWWWWWWWWWWWWWWWWWWW WWWWWWWWWWWWWWWWWWWWWWWW@@#**++*=@@@WWWWWWWWWWWWWWWWWWWW WWWWWWWWWWWWWWWWWWWWWW@##=*+::-:+:=WWWWWWWWWWWWWWWWWWWWW WWWWWWWWWWWWWWWWWWWWWW@###=*::---::=WWWWWWWWWWWWWWWWWWWW WWWWWWWWWWWWWWWWWWWWWW@@@@#@@##+=###@WWWWWWWWWWWWWWWWWWW WWWWWWWWWWWWWWWWWWWWWW@#######=+:#@@@WWWWWWWWWWWWWWWWWWW WWWWWWWWWWWWWWW@W@WW@###=*+:-:+*:-:+WWWWWWWWWWWWWWWWWWWW WWWWWWWWWWWWWW@#=#@=@####=*+::=##=:+WWWWWWWWWWWWWWWWWWWW WWWWWWWWW@#===*==++*+#####==****+++=WWWWWWWWWWWWWWWWWWWW WWWWWWW@W@W#**+:+*+:=#######*=##==*WWWWWWWWWWWWWWWWWWWWW WWWW@@W@@@#*+-:**:+*#@@@@@@#=*+:::=WWWWWWWWWWWWWWWWWWWWW WW@@#@@==@=##+=+:+=**=#@WWWW@@@@##WWWWWWWWWWWWWWWWWWWWWW WW##=@WWW#:##=:::**#@@#===@@@@@@WWWWWWWWWWWWWWWWWWWWWWWW W@##=WWWWW*=#=+*#*=@@WW#=***##*=WWWWWWWWWWWWWWWWWWWWWWWW W@=#=#WWW#*=#*+*##@@@W@=*+:::***@@WWWWWWWWWWWWWWWWWWWWWW WWW===####==*+**++*@WW#++:+++***@@@###WWWWWWWWWWWWWWWWWW WWW==##=*=**+#*+++:+=W=+::+=****#@@@@##=#@@WWWWWWWWWWWWW WWW###@@@*@*##**=*+*=@*+::=@@@@@@@@@@@#=##==@WWWWWWWWWWW WWW@===#===##=*:::+++**=**##@@@@@@@@@W##W@#===@WWWWWWWWW WWWW@@=*=#W@#+++::::::+@WWW@####@@@@@@#====#===@@WWWWWWW WWWW@@@WWW@#*****++++++=W#=#W#######@###====#==#@#WWWWWW WWWW@WW@@@##=****+::::+=@@#=*=*#########@======@@@=@WWWW WWWWW@WWW@@#=*++++++:+*==@W@===*#######@@@=====#@@##@WWW WWWWWWW@#@@@#===****+*====@W@==#=#####@@@@#====#W@@@@WWW WWWWWWWW@@=***++++++@#=====@W#=####@@@@@@@@==#=#@@@@@WWW WWWWWWWWWW#====***=#@#=#====@@==#@#@@@@@@@@@=#==@W@WW@WW WWWWWWWWWWWW@@@###@@@####====W@==###@@@@@@@W#=#@#WWWW@WW WWWWWWWWWWWWWW@@W@@@@@#@#=====W#=#@#@@@@@WWWW#####@WW@@W

WWWWWWWWWWWWW@@@@##@@@#@@#====@@===#@@@@@@@@WW=####WWW@W
⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⣀⣀⣴⣶⡟⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄

⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⢀⣤⣶⣶⣾⣿⣿⡟⣿⡿⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⣰⣿⣿⣿⣿⣿⡿⠛⣧⣿⡇⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⣰⣿⣿⣿⣿⣿⡟⠻⡆⢻⣿⣿⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⢀⡀⠔⠒⠒⠺⠿⢿⣿⣾⣿⣿⣿⣿⣿⣿⡟⡆⢁⣼⣿⣿⢀⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⣠⣶⡟⠄⠄⠄⠄⠄⠄⠄⠈⠙⠻⢿⣿⣿⠿⣿⣿⣶⣿⣿⠟⢁⣿⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⣾⣿⣿⡇⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠈⠻⣦⣨⣿⣿⣛⣁⣴⣿⣿⣷⣦⣄⡀⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⠄⣀⣤⡖⠂⠄⠄⠄⠐⠒⢾⣿⣿⣿⡇⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠸⡿⢿⡇⠈⡙⡻⣿⣿⣿⡿⢻⣿⠗⢄⠄⠄⡐⠒⠢⣀⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⢀⣾⣿⣿⣿⣦⣄⣀⣀⣀⠄⠈⣿⣿⣿⡇⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⢰⣧⣼⡑⣷⣿⣿⣯⡿⡿⣰⣿⣿⣴⣈⣦⣴⣷⣄⡀⠙⠷⠶⠦⠄⢀⡀⠄ ⠄⠄⢀⣾⣿⣿⣿⣿⣿⣿⠿⢻⣿⣿⣿⣿⣿⣿⣿⣄⡀⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⢀⣿⣟⠁⢧⠸⡿⢉⣉⣻⡇⣿⣿⣿⣿⣿⣎⣿⣿⣿⠟⠉⠑⠂⠠⠄⢀⢀⡦ ⣠⣶⣿⣿⣿⣿⡿⠟⠛⢿⣄⠘⠿⣿⣋⡹⣿⣿⣿⣿⣿⣷⣦⣤⣤⣤⣀⣀⡀⠄⠄⢺⣿⣃⣠⣿⣧⠃⣿⣿⣿⣷⢻⣿⣿⣿⣿⣿⣿⣿⡇⠄⠄⠄⠄⠄⠄⠄⠁⠄ ⠄⠉⠛⢿⣿⣯⠄⠄⠄⠄⠉⠓⠒⠒⣫⣿⣿⣿⣿⣿⣿⣿⣿⣿⡟⡟⠉⢹⡇⠄⡀⣀⣽⠟⠛⠻⣿⢸⣿⣿⣿⣿⡞⣿⣿⣿⣿⣿⣿⣿⣿⣦⡀⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⠈⠻⣿⣿⣶⣯⣭⣭⣭⣭⣽⡿⠛⣿⣿⣿⣿⣿⣷⣛⣛⣁⣤⠟⠁⠄⠉⠉⠋⠄⠄⢀⣟⣾⣿⣿⣿⣿⣽⣮⣿⣿⣿⣿⣿⡟⢏⠉⠘⣦⡀⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠈⠉⠛⠛⠛⠛⠋⠁⠄⠄⠘⣿⣿⡻⣿⣿⣿⣿⣿⡇⠄⠄⠄⠠⠂⠄⣀⣴⣿⣿⣿⣿⣿⣿⠛⢿⣿⣿⣿⣿⣿⠟⠄⠄⠑⠄⠈⠣⠒⢄⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠙⣿⣿⣶⣿⣿⠿⣟⣛⠂⠤⣄⠒⡲⠿⠿⠯⢶⣾⣿⣿⣿⣿⠄⠄⠄⠉⠉⠁⠄⠄⠄⠄⠄⠄⠐⡀⡀⣠⣥⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠙⢿⣿⣿⣷⣮⣤⣉⣉⡡⠊⠄⠄⠄⠄⠄⢙⣿⡿⠟⠋⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠈⠛⠋⠁⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠙⢿⣿⣿⠟⠁⠈⠄⠄⠄⣀⠔⠊⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⢀⠟⠁⠄⠄⠄⠄⢈⣽⣿⣧⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⡇⡠⠄⠄⢀⠄⢠⣿⣿⠿⠿⣷⣄⡀⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠑⠧⠼⠤⠷⠒⠙⠿⢷⡄⡀⠄⠄⠄⠁⠠⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠉⠢⢀⠄⠄⠄⠄⢣⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠑⢀⠄⠄⠈⠳⣀⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⢠⠄⠄⠄⠄⠘⣆⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄

⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠘⠧⣰⣀⣼⠾⠏⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄

I enjoy eating lemons.This is something I enjoy

Turing Completeness

WIP?Because IPEL uses 2 data stacks,the one stack can be used for values to the left of and under the pointer,and the other for values to the right.If one assumes the following,brainfuck instructions can be transpiled to IPEL:

  • THe unvoiced stack represents values on the tape to the left of the pointer,as well as the currently pointed-to cell.There is a single 0 on the unvoiced stack in when execution starts
  • The voiced stack represents values on the tape to the right of the pointer
  • There are an infinite number of 0s on the voiced stack
brainfuck IPEL Notes
> g Move voiced onto unvoiced
< k Move unvoiced onto voiced
+ 1s
- 1z
. χu
, This can only work if a single character is taken from STDIN.Otherwise is equivalent to,[>,],if EOF returns 0.
[ 0qɾɑ Set the limit to 0,and the starting index to the opposite of the current cell.See below.
] bɾøɒ ɒ in particular checks forindex<limit,and terminates when false.So,øcan be used to force the loop index to be set to the negative of the current cell.

[[Category::Test]][[Category::Concepts]]

1+は、2012年にJeremy Tan(User:Parcly Taxel)が最初に考案したものです(ただし、最終的な仕様とインタプリタは2014年に書かれています)は、難解なプログラミング言語です。リテラルのみ」主にFALSEPietWang's B-machineから着想を得ています。

コマンドと構文

1+は、最初は空でない非負の整数のスタックでのみ動作します(負の整数は表現できません。実際、ジャンプが機能することを確認してください。以下を参照してください)。言語の13のコマンドのうちの12はスタックに何かをします:

  • 1は、数値1をスタックにプッシュします。これが唯一のリテラルです。他のすべての数値は、INTERCALが行うような演算子で構成されます。ただし、INTERCALとは異なり、この制限は整数の複雑さの概念から派生します。これは、加算と乗算のみで数値「n」を作成するために必要な1の最小数です。
  • +は、上位2つの数値をポップし、それらの合計をプッシュします。
  • *は+と同じですが、代わりに製品をプッシュします。
  • "は最上位の数値と重複しています。
  • /はスタックを上に回転し、一番上の数を一番下に送信します。
  • \はスタックを下に回転させ、一番下の番号を一番上に送信します。
  • ^は、上位2つの数値を入れ替えます。
  • <は、上位2つの数値をポップし、上位の数値が2番目に上位の数値より小さい場合は0をプッシュし、そうでない場合は1をプッシュします。これは1+で唯一の条件付きです。
  • .,は、それぞれ数値またはUnicode文字として入力を読み取り、それをプッシュします。
  • :および ;は、出力に対応するコマンドであり、上位の値をポップして、それぞれ数値またはUnicode文字として出力します。
  • #は1+での唯一の制御構造です。これは、最上位の値 nをポップし、プログラムフローを現在の実行行の n番目の#の直後に送信します(ここで、番号付けは0から始まります)。

サブルーチンは (称号|符号)として定義され、(称号)として呼び出されます。それらは他のサブルーチンまたはそれ自身を呼び出すことができ(それによって再帰を実装します)、それらが定義されているポイントが実行を引き起こします。これらは別々の実行行であるため、その中の#の番号は0から始まります。後で定義されるサブルーチンに依存しないように、プログラム全体に配置されます。 コメントは角括弧([])で囲みます。

文書化されていない命令

元のインタープリターにはドキュメント化されていない1つの命令dがあり、スタック全体が不明瞭な形式で出力されます。

例プログラム

Hello worldプログラム

11+"""1+"****"; [H]
111++""**1+(D|/"\"/^\)1++; [e]
(D)11+""**++"";; [ll]
111+++"; [o]
/"11+"""***+; [,]
"11+"*+; [ ]
"111++"/*\+; [W]
\"; [o]
111+++; [r]
(D)11+""**++; [l]
+; [d]
11+""""****1+; [!]
111++"*1+; [\n]

無限ループ

1##1#

猫プログラム(EOFは0を返します)

1##,";1+1<1+#

フィボナッチ数列

111##":"\+1#

階乗

.111##^"/*\1+\<1+#

真理マシン

.1##":"1+1<1+#

無限ループカウンター

11##":1+1#

ネストされたループの例

11##111+#":1+"\"/<1+1<11++#"<*1+1#

上記のコードは、ネストされたループを使用してA002260を出力します。

クイン

これは、Code Golf Stack ExchangeのユーザーであるJo Kingが作成した、はるかに短いクインです。彼は自分のデザインを使用しています。

(|11+"*"+"1+\1+/)("|1/()11+^)(2|\""++1+/()""+^)++<+/(#|\##"\+;1#()\^\1#)+<+()()(")(2)(2)()()(")()(2)(")(2)()(")()(")()()()(2)(")()()()(2)()()(2)()(")()()()()(2)(2)(")()()()(2)()()(2)()(")(2)()(")(2)(")()(")()()()(2)(")(2)(2)()(")()(2)(")()()()(2)()()(2)()(")(")()(")()(")()()()(2)()()(2)()(")(2)()(2)()(2)(")()(")(2)(")()()(2)()(")()(2)(")(2)(2)()()(")()(2)(")()(2)(")(2)()(")()()()()(2)(2)(")()(2)(")(")(")(2)()(")(2)(")()()(2)()(")()(2)(")()()()(2)(")()(2)(")()(2)(")(")(")()()()(2)()()(2)()(")(2)()(2)()(2)(")()()()(2)()(")(2)(")(2)()(")()()()()(2)(2)(")()(2)(")()()()(2)(")()()()(2)(")(2)()(")(2)(")()()(2)()(")()()()(2)(")(2)()(2)()(2)(")(")(2)(")(2)()(")()()(2)()(")()(2)(")()()()(2)(")()()()(2)()()(2)()(")()(2)(")()()()(2)(")(")()(2)(")(")(2)()()(")(")()(2)(")()()()(2)(")()()()(2)(")(2)()(2)()(2)(")(2)(")(2)()()(2)(")(")(#)@