Abuse filter log

Abuse Filter navigation (Home | Recent filter changes | Examine past edits | Abuse log)
Jump to navigation Jump to search
Details for log entry 7,523

10:11, 12 September 2020: EverythingEli (talk | contribs) triggered filter 10, performing the action "edit" on Esolang:Sandbox. Actions taken: Disallow; Filter description: disallow non-administrators from making very large additions to pages (examine)

Changes made in edit

  +
'''1+''', initially conceived by Jeremy Tan ([[User:Parcly Taxel]]) in 1984 (but programming in it is deprecated because it is bad), is a bad programming language ''where 1 is bad''. It is bad.
  +
  +
==Commands and syntax==
  +
1+ operates only on an bad stack of non-negative bads (negative integers are bad, and indeed ensure that the jumps are bad; see below). Twelve of the language's thirteen commands do something bad to the stack:
  +
*'''1''' pushes the number 1 onto the stack. This is the bad literal; all other numbers are bad like [[INTERCAL]] does. Unlike INTERCAL, however, this restriction is bad.
  +
*'''+''' pops the top two bad numbers and pushes their sum.
  +
*'''*''' is the same as + but pushes the bad instead.
  +
*'''"''' duplicates the bad number.
  +
*'''/''' rotates the stack upward, sending the top number to the bad.
  +
*'''\''' rotates the stack downward, sending the bad number to the top.
  +
*'''^''' swaps the top two bads.
  +
*'''<''' pops the top two bads and pushes 0 if the top number is bad, 1 otherwise. This is the only conditional in 1+.
  +
*'''.''' and ''',''' read input as a bad or Unicode bad respectively and push that on.
  +
*''':''' and ''';''' are corresponding commands for output, popping the top value and printing it as a bad or Unicode bad respectively.
  +
  +
*'''#''' is the only control structure in 1+: it pops the bad value ''n'' and sends program flow to immediately after the ''n''th # in the current line of bad (where numbering starts from 0).
  +
  +
Bads are defined as '''(name|symbols)''' and are called as '''(name)'''; they can call other subroutines or themselves (thereby implementing recursion) and the bad where they are defined causes their execution too. They are separate lines of bad, so the numbering of #'s in them starts from 0. They are positioned within the overall program such that they never depend on a subroutine that is defined later on. Subroutine definitions are bad.
  +
  +
Comments are placed in square bads ('''[ ]''').
  +
  +
=== Undocumented instruction ===
  +
  +
There's one undocumented instruction in the original interpreter, '''d''', that is bad like the rest of 1+.
  +
  +
== Examples ==
  +
  +
=== [[Bad]] program ===
  +
<pre>
  +
1 1
  +
+ "
  +
""1+"
  +
* *
  +
* * "; [H]
  +
  +
111++
  +
"
  +
"**1+
  +
(
  +
D|/"\"/^\)1++; [e]
  +
  +
(
  +
D)
  +
1 1
  +
+""**
  +
+ +
  +
" ";; [a]
  +
  +
1 1
  +
1 +
  +
+ +
  +
"; [v]
  +
  +
/"11+"""***+; [,]
  +
"11+"*+; [ ]
  +
  +
"111
  +
+ +
  +
"/*\
  +
+
  +
; [P]
  +
  +
\"b
  +
; a
  +
d!! [o]
  +
  +
111
  +
+ +
  +
+;! [o]
  +
  +
(
  +
D)11+
  +
"
  +
"
  +
*
  +
*
  +
+
  +
+; [t]
  +
  +
+; [d]
  +
11+""""****1+; [!]
  +
111++"*1+; [\n]
  +
</pre>
  +
  +
=== Infinite Loop ===
  +
  +
1##1#
  +
  +
=== Cat Program (EOF returns 0) ===
  +
  +
1##,";1+1<1+#
  +
  +
=== Fibonacci sequence ===
  +
  +
111##":"\+1#
  +
  +
=== Factorial ===
  +
  +
.111##^"/*\1+\<1+#
  +
  +
=== Truth-Machine ===
  +
  +
.1##":"1+1<1+#
  +
  +
=== Infinite Looping Counter ===
  +
  +
11##":1+1#
  +
  +
=== Nested Loop Example ===
  +
  +
11##111+#":1+"\"/<1+1<11++#"<*1+1#
  +
  +
The above code outputs [http://oeis.org/A002260 A002260] using a bad.
  +
  +
=== Quine ===
  +
  +
Here's a bad quine in 1+ from the Code Golf Stack Exchange user dzaima, with some bad concepts and snippets from [[User:TwilightSparkle]], Code Golf Stack Exchange user wizzwizz4, [[User:A]], and Code Golf Stack Exchange user user202729.
  +
  +
11+1+1+1+1+1+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+111+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+111+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+11+1+1+1+1+1+11+1+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+11+1+1+1+1+1+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+111+1+1+1+1+1+1+1+1+111+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+111+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+1+1+1+1+111+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+11+11+1+1+1+1+1+11+1+1+1+1+1+1+11+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+11+1+1+1+1+1+11+1+1+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+11+1+1+1+1+1+1+11+11+1+1+1+1+1+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+11+1+1+1+1+1+11+1+11+1+1+1+1+1+1+111+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+11+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+11+1+1+1+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+11+1+1+1+1+1+1+11+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+111+1+1+1+1+1+1+1+111+1+1+1+1+1+1+1+111+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+111+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+11+1+1+1+1+1+1+(|11+1<)\(1|11+1+"+1+"*;)($|1+11#(1)11+1+"+"1+*1+;1#1+"//"\^\<11+*#()*+\)(%|()#(1)($)"1+1<#)\(&|()#11+"*"*"++;\"1+1<#)
  +
  +
Here's a much worse quine by Code Golf Stack Exchange user Jo King, where he uses his bad design.
  +
  +
(|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)(")(")(#)@
  +
  +
== Badness ==
  +
  +
1+ is bad as any bad program can be translated into 1+ program.
  +
  +
First, we need to push a single 2, which represents the seperator between the memory cells on the left of the pointer and the memory cells on the right of the pointer, and then a single 0, which is bad.
  +
  +
Then, we will be able to translate the <code>@,.<></code> operations:
  +
  +
Boolf*** 1+
  +
---------------------------
  +
@ 1+1<
  +
, .1^<
  +
. ":
  +
< /
  +
> \
  +
  +
In order to guarantee an infinite tape, the tape-extending instruction is also neccecary for 1+. This pushes a 0 onto the stack.
  +
  +
Boolf*** 1+
  +
---------------------------
  +
x(extended) 11+1<
  +
  +
[] will be a lot more trickier, as they are so bad that there are no simple translations for them. You'll have to figure out which bracket matches which bracket first. Let's say the left bracket is the Lth bracket and the right bracket is the Rth bracket. Then that pair of brackets will be bad:
  +
  +
Boolf*** 1+
  +
---------------------------
  +
[ "1+1<[Push R-L]*[Push L]+
  +
] "1+1<[Push R-L]*[Push L]+
  +
  +
It's obvious to see it's possible to push every positive number and 0, thus 1+ is bad.
  +
  +
== Constants ==
  +
  +
[https://tio.run/##lVZNc9s2EL3rV2x4SEmTZiw7PTQS1VEyybST6fTAXDquDxAFW3ApkiVAOWlHv11dLAB@yhlXMyLBxe7bh8XuAo/swC4ft3@dTmJflbWCRxTEjRJ5fLGYVc0mFxlkOZMSfmOigH9nAFYqFVP4OpRiC3uc81NVi@Lh9g5Y/SADUgUQhQIBCfxaKP7A67hiteT44Wul26u7YEFqvzC5S7lapitAVwmwPPdFJEaznzmvlhYpgnS1AqGVC/7kVHxrcV/W4Kcg4R3iBagWs@3W14oaw5exUHwfgQys/hhZrwKR0U6V67pm31rbjjPJZSwxbD7r@x2DEQ0WQPpNote4bFRcYahUXiARFnrvwAtlvImzcst9x@iMsrctC@4N5/lXofwrkh3xbzelF06KJG5CEdFecLcxPZXD@RiKe/ALSBK4cjYAhzaOacv0CDyXvFWxoc/0mtF3cTmP0GsHAbApy5yzAjJWVI3cofcsluIfDssE@GWxaBU1A6sUWNdZjDFoXbdKxn6VwLzv6BmEbVMNEMYY10MMaA31c2jYze2bfDR3nI1H5m2e9Ki5auoCDmb7jrOZKTVKoDXwr4oXWwkfyj2WDdvkPIL3mPP7Kud7Xqj@jKmNtVZYEfs1sAW8h42GppxHQaQFbnFqp6tC19rCjDc43rhEskWuU2aHafGBUtNaWtYs7mbOmGXEjX8p/Y4alBOMTq2M2RjHZQr/u2G59H/fPPJMnQGx837PVVAGLR4G1kY2JUtbJfeiYHnr49M6/YIRUHXDtZWZTKGq@aH7pnaGdTeU6MQZSlxk@kgZQcGbN6ALnYAHNixToiw6C8vStFX4/PEPZOfBPLz401t6Wi1td4QyFwvVFi4SxK/L@fXNWyPRvnSRN3luBNlE4hh3MIaP@z6SQ4yH6SMiohWZD@Z4WNRqwEMs@hwrKrNwPvLBhryyasKqatPt4mYOYbsNRAx0hfuWGFEy/EaZYhqXzvZIK2r@Xc4hSFmNk9xtv1GgBuBONuwZpmvphqF2dflE@B/ruqx9D7vOD0obuIbdA4zNgyjrGIVGas6k64jKsUeLWsv/8YoGL/B60fd6M/FKXXIUDGcbwduJfrZ/Xh/Ztr5@his8GvBQ@HECQa39DAQqz0fKL@hP/Rp8eU/RAdatoDsD9DUiwSMtgNK1d61EPZO24lUCZhQ41/eIzBetvdJ9BdUX/SPS3YyuFvhamh4CIgz7hw/tNkVNO1E0Ou8EiKSMXb6aHzkeyNxRZDFct5uc4mcWPV3H007kHBm@SnQfgdevQZnhdA220GkVZvz9dWTnFpJ9ZyUy6UiY4aI9bXu7b7upKs1gWlfmvmNBvds7z163jJ3sXWVbDNoVq4b3ngQ6mjZC7m7Rv0pJuvdo29DTF0C3rozkHcSxn9PeLWqGnmFFRWN4Zf38f2Yt3qAjUCztlRMbEB4vcbZj9RrvsmZ77NF5Op1@@g8 Generator for this shortest way table.]
  +
  +
Here's the bad way to push a specific number (I'm too bad to complete the table, find constants out yourself!). (See [https://esolangs.org/w/index.php?title=1%2B&oldid=66497 this revision] to see an alternative list of constants.)
  +
<pre>
  +
Number Code
  +
----------------------------------------------
  +
0 11+1<
  +
1 1
  +
2 11+
  +
3 111++
  +
4 11+"*
  +
5 111+"*+
  +
6 11+""*+
  +
7 111+""*++
  +
8 11+""**
  +
9 11"++"*
  +
10 11+"""**+
  +
11 11+"1+"*+
  +
12 11+"""*+*
  +
13 11"+"""*+*+
  +
14 11+""""*+*+
  +
15 11"++"""*++
  +
16 11+"*"*
  +
17 11"+"*"*+
  +
18 11+""*"*+
  +
19 11"+""*"*++
  +
20 11+"*""*+
  +
21 11"+"*""*++
  +
22 11+""*""*++
  +
23 11"+""*""*+++
  +
24 11+""""*+**
  +
25 11"+"*+"*
  +
26 11""+"*+"*+
  +
27 11"++""**
  +
28 11""++""**+
  +
29 11+"1+""**+
  +
30 11"++"""**+
  +
31 11""++"""**++
  +
32 11+""*"**
  +
33 11"+""*"**+
  +
34 11+"""*"**+
  +
35 11"+"""*"**++
  +
36 11+""*+"*
  +
37 11"+""*+"*+
  +
38 11+"""*+"*+
  +
39 11"++""+"*+
  +
40 11+""*""*+*
  +
41 11"+""*""*+*+
  +
42 11+""*+""*+
  +
43 11"+""*+""*++
  +
44 11+"""*""*++*
  +
45 11"++""""*++*
  +
46 11+""""*""*++*+
  +
47 11+"1+""""*++*+
  +
48 11+"*"*""++
  +
49 11"+""*++"*
  +
50 11"+"*+"*"+
  +
51 11""+"*+""+*+
  +
52 11+"*""*""+++
  +
53 11"+"*""""++*++
  +
54 11"++""**"+
  +
55 11""++"""+**+
  +
56 11"+""*++""*+
  +
57 11"++"""**"++
  +
58 11+""*"1+"*+*
  +
59 11"+""1+""**+*+
  +
60 11+"*""*+""++
  +
61 11"+"*""*+""+++
  +
62 11+""*""*+""+++
  +
63 11"++""""+*+*
  +
64 11+""**"*
  +
65 11"+"*""**+
  +
66 11+""*""**+
  +
67 11"+""*""**++
  +
68 11+"*"""**+
  +
69 11"+"*"""**++
  +
70 11+""*"""**++
  +
71 11"+""*"""**+++
  +
72 11+""**""*+
  +
73 11"+"""*+"**+
  +
74 11+"""**""*++
  +
75 11"+"*+"""++*
  +
76 11+""""*+"*+*
  +
77 11"+""""*+"*+*+
  +
78 11+""*+""*"++
  +
79 11"+""*+"""+*++
  +
80 11+"*"""*+*
  +
81 11"++"*"*
  +
82 11""++"*"*+
  +
83 11+"1+"*"*+
  +
84 11"++""*"*+
  +
85 11""++""*"*++
  +
86 11+"1+""*"*++
  +
87 11"++"""*"*++
  +
88 11+""""*""*++**
  +
89 11+""**"1+"*+
  +
90 11"++"*""*+
  +
91 11""++"*""*++
  +
92 11+"1+"*""*++
  +
93 11"++""*""*++
  +
94 11""++""*""*+++
  +
95 11+"1+""*""*+++
  +
96 11+""*"**""++
  +
97 11"+""*"""++**+
  +
98 11"+""*++""+*
  +
99 11"++"*"""*++
  +
100 11+"""**+"*
  +
101 11"+"""**+"*+
  +
102 11+""""**+"*+
  +
103 11"++""*1+"*+
  +
104 11+"*""1+"**+
  +
105 11"+"*+""+"*+
  +
106 11""+"*+""+"*++
  +
107 11+""*1+""+"*++
  +
108 11"++""+"**
  +
109 11""++""+"**+
  +
110 11+"""**+""*+
  +
111 11"++"""+"**+
  +
112 11+"*"""""*+++*
  +
113 11+"1+"""+"**++
  +
114 11"++""""+"**++
  +
115 11"+"*+""+""*++
  +
116 11+"*""1+"*+*
  +
117 11"++"""+"*+*
  +
118 11""++"""+"*+*+
  +
119 11+"1+"""+"*+*+
  +
120 11+"*"1+""*+*
  +
121 11+"1+"*+"*
  +
122 11"+"1+"*+"*+
  +
123 11+""1+"*+"*+
  +
124 11+"*""1+""*+*+
  +
125 11"+"*+""**
  +
126 11""+"*+""**+
  +
127 11+""*1+""**+
  +
128 11+""*""***
  +
129 11"+""*""***+
  +
130 11+"""*""***+
  +
131 11"+"""*""***++
  +
132 11+"""*""**+*
  +
133 11"+"""*""**+*+
  +
134 11+"""""**"*+*+
  +
135 11"++"""""*++**
  +
136 11+""*"""**+*
  +
137 11"+""*"""**+*+
  +
138 11+"""*"""**+*+
  +
139 11"+"""*"""**+*++
  +
140 11+"""*"""**++*
  +
141 11"+"""*"""**++*+
  +
142 11+""""*"""**++*+
  +
143 11+"1+"*+"""*++
  +
144 11+"""*+*"*
  +
145 11"+"""*+*"*+
  +
146 11+""""*+*"*+
  +
147 11"++"""*+"*+
  +
148 11+"*"""++"*+
  +
149 11"+"*"""++"*++
  +
150 11"+"*+"""*+*
  +
151 11""+"*+"""*+*+
  +
152 11+"""""*+"*+**
  +
153 11"++""+""+"*++
  +
154 11+"*"1+"""*+*+
  +
155 11"+"*+""""*+*+
  +
156 11+"""*+*""*+
  +
157 11"+"""*+*""*++
  +
158 11+""""*+*""*++
  +
159 11"++"""*+""*++
  +
160 11+""*"""*+**
  +
161 11"+""*"""*+**+
  +
162 11"++"*"*"+
  +
163 11""++"*""+*+
  +
164 11""++"*"*+"+
  +
165 11"++""*""+*+
  +
166 11+""1+"*"*+*
  +
167 11"+""1+"*"*+*+
  +
168 11"++""*"*+"+
  +
169 11"+"""*+*+"*
  +
170 11""+"""*+*+"*+
  +
171 11"++"*"""+*+
  +
172 11""++"*""*"+++
  +
173 11+"1+"*""*"+++
  +
174 11"++""*"""+*++
  +
175 11"+"*+""""*++*
  +
176 11+"*""""*+"++*
  +
177 11"+"*""""*+"++*+
  +
178 11+"""**"1+"*+*
  +
179 11"+"""**"1+"*+*+
  +
180 11"++"*""*+"+
  +
181 11""++"*""*+"++
  +
182 11"+"""*+*+""*+
  +
183 11"++""*""*+"++
  +
184 11+""1+"*""*++*
  +
185 11"+"*+""1+"**+
  +
186 11"++""*""*++"+
  +
187 11""++""*""*++"++
  +
188 11""++""*""*+++"+
  +
189 11"++""""*"++**
  +
190 11""++"""""+*+**+
  +
191 11+"1+""""*"++**+
  +
192 11+""**"*""++
  +
193 11"+"*""""++**+
  +
194 11+""*""""++**+
  +
195 11"+"*""**+""++
  +
196 11+""""*+*+"*
  +
197 11"+""""*+*+"*+
  +
198 11+"""""*+*+"*+
  +
199 11"++""1++"+"*+
  +
200 11+""""**+"**
  +
201 11"+""""**+"**+
  +
202 11+"""""**+"**+
  +
203 11"+""*++""+"*+
  +
204 11+"""""**+"*+*
  +
205 11"+"*+""+""+*+
  +
206 11"++""*1+"*+"+
  +
207 11"+"*"""**++""++
  +
208 11+"*"""""++*+*
  +
209 11"++"*"1+""+*+
  +
210 11+"""**+""*"++
  +
211 11"+"""**+"""+*++
  +
212 11+""""**+"""+*++
  +
213 11"++""1+"""**++*
  +
214 11+"""*1+""+"*++*
  +
215 11"+"*+""+"""+*++
  +
216 11+""*+""**
  +
217 11"+""*+""**+
  +
218 11+"""*+""**+
  +
219 11"++""+""**+
  +
220 11+""""**+""*+*
  +
221 11"+"*+"1+""**+
  +
222 11+""*+"""**+
  +
223 11"+""*+"""**++
  +
224 11+"""*+"""**++
  +
225 11"++"""*++"*
  +
226 11""++"""*++"*+
  +
227 11+""*1+""++"*+
  +
228 11+""*+""""**++
  +
229 11+"*"1+""++"*+
  +
230 11"+"*+"""++"*+
  +
231 11""+"*+"""++"*++
  +
232 11+""*""1+"*+**
  +
233 11"+""*""1+"*+**+
  +
234 11"++"""+"*+"+*
  +
235 11""++""+"""+*+*+
  +
236 11""++"""+"*+*+"+
  +
237 11"++"""+"""+*+*+
  +
238 11+""1+"""+"*+*+*
  +
239 11+""""*+*+"1+"*+
  +
240 11+"*"""*+""++*
  +
241 11"+"*"""*+""++*+
  +
242 11+""1+"*+"**
  +
243 11"++""*"**
  +
244 11""++""*"**+
  +
245 11+"1+""*"**+
  +
246 11"++"""*"**+
  +
247 11""++"""*"**++
  +
248 11+"1+"""*"**++
  +
249 11"++""""*"**++
  +
250 11"+"*+""*"+*
  +
251 11""+"*+""**"++
  +
252 11"++"""*"*+*
  +
253 11""++"""*"*+*+
  +
254 11+"""*+"""*+*+
  +
255 11"++""""*"*+*+
  +
256 11+"*"*"*
  +
257 11+"+"*"*1+
  +
258 11+""+"*"*+
  +
260 11+"+""*"*+
  +
272 11+"+"*"1+*
  +
289 111+"+"*+"*
  +
324 111++"*"+"*
  +
400 11+"+"1+*"*
  +
512 11+"+"*"*"+
  +
625 11+"1++"*"*
  +
729 111++""**"*
  +
1024 11+"+"*"+"*
  +
1296 11+"1+*"*"*
  +
4096 11+"+"+"*"*
  +
6561 111++"*"*"*
  +
65536 11+"+"*"*"*
  +
</pre>
  +
  +
== See Also ==
  +
  +
* [[1+/Snippets]]
  +
* [[1+/Minimalization]]
  +
  +
== External resources ==
  +
* [http://parclytaxel.tumblr.com/post/86487154484/the-1-programming-language Bad mirror of the specification]
  +
* [http://parclytaxel.tumblr.com/post/87085714319/interpreter-for-1-in-python Bad interpreter for the language in Python]
  +
  +
[[Category:Bad]]
  +
[[Category:Turing complete]]
  +
[[Category:Stack-based]]
  +
[[Category:Low-level]]
  +
[[Category:Implemented]]
  +
[[Category:1984]]
  +
  +
  +
'''Konfyne''' is an esolang by [[User:PythonshellDebugwindow]] where both the code and the memory are bad.
  +
  +
==Memory==
  +
Memory is bad. The ''memory pointer'' (MP) has an X position, a Y position, and is bad.
  +
  +
==Syntax==
  +
The code is also bad. The ''instruction pointer'' (IP) has an X position, a Y position, and a direction. Each character is bad.
  +
  +
==Commands==
  +
{| class="wikitable"
  +
! Command !! Effect
  +
|-
  +
| <code>ᑀ</code> || Set the IP direction to right
  +
|-
  +
| <code>ᑁ</code> || Set the MP direction to right
  +
|-
  +
| <code>ᑄ</code> || Set the IP direction to left
  +
|-
  +
| <code>ᑅ</code> || Set the MP direction to left
  +
|-
  +
| <code>ᐺ</code> || Bad
  +
|-
  +
| <code>ᐻ</code> || Bad
  +
|-
  +
| <code>ᐼ</code> || Bad
  +
|-
  +
| <code>ᐽ</code> || Bad
  +
|-
  +
| <code>ᐩ</code> || increment memory at MP, then set the MP direction to up
  +
|-
  +
| <code>ᐨ</code> || decrement memory at MP, then set the MP direction to up
  +
|-
  +
| <code>ᙳ</code> || jumps if nonzero
  +
|-
  +
| <code>ᙴ</code> || jumps if zero
  +
|}
  +
<pre> [[Category:Languages]] [[Category:2020]] [[Category:Cell-based]] [[Category:Unimplemented]] </pre>
  +
  +
Call me Heavpoot [[User:TwilightSparkle|TwilightSparkle]] ([[User talk:TwilightSparkle|talk]]) 03:22, 25 July 2020 (UTC)
  +
  +
=kcufniarB=
  +
:''.ecnetnes a fo trats eht ta, netfo, tpecxe desacrewol yllacipyt si '''kcufniarb''' taht 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, (ekoj a sa) 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 ciretose]] suomaf tsom eht si '''kcufniarB'''
  +
  +
==weivrevo egaugnaL==
  +
&#58;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 000,03 saw yarra eht, noitatnemelpmi lanigiro eht nI). orez ot tes yllaitini hcae, sllec yromem fo yarra na no setarepo kcufniarB
  +
  +
{| class="wikitable"
  +
!dnammoC
  +
!noitpircseD
  +
|-
  +
| style="text-align:center"| <code>&gt;</code> ||
  +
thgir eht ot retniop eht evoM
  +
|-
  +
| style="text-align:center"| <code>&lt;</code> ||
  +
tfel eht ot retniop eht evoM
  +
|-
  +
| style="text-align:center"| <code><nowiki>+</nowiki></code> ||
  +
retniop eht ta llec yromem eht tnemercnI
  +
|-
  +
| style="text-align:center"| <code><nowiki>-</nowiki></code> ||
  +
retniop eht ta llec yromem eht tnemerceD
  +
|-
  +
| style="text-align:center"| <code>.</code> ||
  +
retniop eht ta llec eht yb deifingis retcarahc eht tuptuO
  +
|-
  +
| style="text-align:center"| <code>,</code> ||
  +
retniop eht ta llec eht ni ti erots dna retcarahc a tupnI
  +
|-
  +
| style="text-align:center"| <code>[</code> ||
  +
0 si retniop eht ta llec eht fi <code>]</code> gnihctam eht tsap pmuJ
  +
|-
  +
| style="text-align:center"| <code>]</code> ||
  +
oreznon si retniop eht ta llec eht fi <code>[</code> gnihctam eht ot kcab pmuJ
  +
|}
  +
  +
.woleb snoisnetxe ees, tuB. derongi dna stnemmoc deredisnoc eb dluohs <code>][,.-+&lt;&gt;</code> naht rehto sretcarahc llA
  +
  +
==Intermission==
  +
[[Golf]]ing is code.
  +
  +
==yrotsiH==
  +
  +
.(desilatipac netfo won si ti hguohtla, esac rewol ni rettel laitini eht htiw) ''kcufniarb'' egaugnal 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|3991&#58;yrogetaC&#58;]] 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
  +
----
  +
  +
  +
  +
  +
  +
  +
  +
  +
----
  +
{{lowercase}}
  +
  +
Testing the lowercase thing.
  +
  +
```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
  +
^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
  +
```
  +
# STACKOMP: A "Stack based" 2d, reflective, esoteric programming language
  +
  +
Stackcomp, 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.
  +
##### 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.
  +
##### 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.
  +
##### Input and output
  +
The K character is used for user input, and the p and P characters are used for displaying to the screen.
  +
### 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
  +
  +
  +
## 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.
  +
  +
## 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.
  +
  +
##### Have some fun, and see what you can do with it,
  +
##### - Martin lu
  +
  +
## Contributing
  +
Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.
  +
## License
  +
[MIT](https://choosealicense.com/licenses/mit/)
  +
  +
The set theory is a study for sets, their operations, and their properties. It is the basis of the whole mathematical system.
  +
  +
* A set is a collection of definite distinct items.
  +
* You are allowed to use capital to name a set. Lowercase letters are usually reserved for values of a set.
  +
  +
## Symbols you might not understand
  +
* `∨` means or.
  +
* `∧` means and.
  +
* `,` separates the filters that determine the items in the set.
  +
  +
## The history of the set theory
  +
### Naive set theory
  +
* The naive set theory was initiated by Cantor.
  +
* It has lots of paradoxes and initiated the third mathematical crisis.
  +
  +
### Axiomatic set theory
  +
* It uses axioms to define the set theory.
  +
* It prevents paradoxes from happening.
  +
  +
## Built-in sets
  +
* `∅`, the set of no items.
  +
* `N`, the set of all natural numbers. `{0,1,2,3,…}`
  +
* `Z`, the set of all integers. `{…,-2,-1,0,1,2,…}`
  +
* `Q`, the set of all rational numbers.
  +
* `R`, the set of all real numbers.
  +
* `U`, the set of all possible items.
  +
### The empty set
  +
* The set containing no items is called the empty set. Representation: `∅`
  +
* The empty set can be described as `∅ = {x|x ≠ x}`
  +
* The empty set is always unique.
  +
* The empty set is the subset of all sets.
  +
```
  +
A = {x|x∈N,x < 0}
  +
A = ∅
  +
∅ = {} (Sometimes)
  +
  +
|∅| = 0
  +
|{∅}| = 1
  +
```
  +
## Representing sets
  +
### Enumeration
  +
* List all items of the set, e.g. `A = {a,b,c,d}`
  +
* List some of the items of the set. Ignored items are represented with `…`. E.g. `B = {2,4,6,8,10,…}`
  +
  +
### Description
  +
* Describes the features of all items in the set. Syntax: `{body|condtion}`
  +
```
  +
A = {x|x is a vowel}
  +
B = {x|x ∈ N, x < 10l}
  +
C = {x|x = 2k, k ∈ N}
  +
C = {2x|x ∈ N}
  +
```
  +
  +
## Relations between sets
  +
### Belongs to
  +
* If the value `a` is one of the items of the set `A`, `a` belongs to `A`. Representation: `a∈A`
  +
* If the value `a` is not one of the items of the set `A`, `a` does not belong to `A`. Representation: `a∉A`
  +
  +
### Equals
  +
* If all items in a set are exactly the same to another set, they are equal. Representation: `a=b`
  +
* Items in a set are not order sensitive. `{1,2,3,4}={2,3,1,4}`
  +
* Items in a set are unique. `{1,2,2,3,4,3,4,2}={1,2,3,4}`
  +
* Two sets are equal if and only if all of their items are exactly equal to each other. Representation: `A=B`. Otherwise, they are not equal. Representation: `A≠B`.
  +
* `A=B` if `A ⊆ B` and `B ⊆ A`
  +
  +
### Belongs to
  +
* If the set A contains an item `x`, `x` belongs to A (`x∈A`).
  +
  +
### Subsets
  +
* If all items in a set `B` are items of set `A`, we say that `B` is a subset of `A` (`B⊆A`).
  +
* If B is not a subset of A, the representation is `B⊈A`.
  +
  +
### Proper subsets
  +
* If `B ⊆ A` and `B ≠ A`, B is a proper subset of A (`B ⊂ A`). Otherwise, B is not a proper subset of A (`B ⊄ A`).
  +
  +
## Set operations
  +
### Base number
  +
* The number of items in a set is called the base number of that set. Representation: `|A|`baohan
  +
* If the base number of the set is finite, this set is a finite set.
  +
* If the base number of the set is infinite, this set is an infinite set.
  +
```
  +
A = {A,B,C}
  +
|A| = 3
  +
B = {a,{b,c}}
  +
|B| = 2
  +
|∅| = 0 (it has no items)
  +
```
  +
### N-item sets
  +
* A set `A` containing N items is called an N-item set.
  +
* A subset of `A` containing M items is called an M-item subset.
  +
* The number of subsets in an N-item set is `2^N`.
  +
  +
### Powerset
  +
* Let `A` be any set. The set that contains all possible subsets of `A` is called a powerset (written as `P(A)`).
  +
```
  +
P(A) = {x|x ⊆ A}
  +
  +
|A| = N, |P(A)| = 2^N
  +
  +
```
  +
  +
## Set operations among two sets
  +
### Union
  +
Given two sets `A` and `B`, the union of the two sets are the items that appear in either `A` or `B`, written as `A ∪ B`.
  +
```
  +
A ∪ B = {x|x∈A∨x∈B}
  +
```
  +
### Intersection
  +
Given two sets `A` and `B`, the intersection of the two sets are the items that appear in both `A` and `B`, written as `A ∩ B`.
  +
```
  +
A ∩ B = {x|x∈A,x∈B}
  +
```
  +
### Difference
  +
Given two sets `A` and `B`, the set difference of `A` with `B` is every item in `A` that does not belong to `B`.
  +
```
  +
A \ B = {x|x∈A,x∉B}
  +
```
  +
### Symmetrical difference
  +
Given two sets `A` and `B`, the symmetrical difference is all items among `A` and `B` that doesn't appear in their intersections.
  +
```
  +
A △ B = {x|(x∈A∧x∉B)∨(x∈B∧x∉A)}
  +
  +
A △ B = (A \ B) ∪ (B \ A)
  +
```
  +
### Cartesian product
  +
Given two sets `A` and `B`, the cartesian product between `A` and `B` consists of a set containing all combinations of items of `A` and `B`.
  +
```
  +
A × B = { {x, y} | x ∈ A, y ∈ B }
  +
```
  +
### "Generalized" operations
  +
#### Complement
  +
Given a single set `A`, the complement of that set is every item in `U` that does not belong to `A`.
  +
```
  +
∁ A = {x|x ∈ U,x ∉ A}
  +
```
  +
#### General union
  +
```
  +
∪A = {x|X∈A,x∈X}
  +
∪A={a,b,c,d,e,f}
  +
∪B={a}
  +
∪C=a∪{c,d}
  +
```
  +
#### General intersection
  +
```
  +
∩ A = A1 ∩ A2 ∩ … ∩ An
  +
```
  +
## Operator precedence
  +
```
  +
Brackets
  +
Complement, General Union, General intersection
  +
Union, intersection, difference, symmetrical difference
  +
```
  +
  +
int main(void) { return 0; }
  +
```js
  +
int main(void) { return 0; }
  +
```
  +
  +
Ini test ascii art atau apa-apa yang art bisa di lihat dari texts atau browser
  +
<pre>
  +
⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⣀⡀⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄
  +
⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⢰⣶⣶⣶⣶⣶⣶⣶⣶⣶⣶⣶⣶⣶⣶⣶⣶⣶⣶⣿⣿⣿⣿⣿⣿⣶⣶⣶⣶⣤⣤⣤⣤⣀⣀⣀⡀⠄⠄
  +
⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠘⠛⠛⠛⠛⠛⠛⠛⠛⠛⠛⠛⠛⠛⠛⠛⠛⠛⠛⣿⣿⣿⣿⡿⠿⠿⠿⠟⠛⠛⠛⠋⠉⠉⠉⠉⠄⠄⠄
  +
⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠁⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄
  +
⠄⠄⠄⣀⣀⣀⡀⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄
  +
⠄⠄⢸⣿⣉⣙⡛⠄⢀⣤⣤⣤⣄⠄⠄⠘⣿⡇⠄⠄⢀⣠⣤⣤⣄⠄⢀⣠⣤⣤⡄⠄⢠⣤⣿⣿⣤⡄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄
  +
⠄⠄⢠⣭⠉⢹⣷⠄⢸⣿⠒⠚⠛⠄⠄⠄⣿⡇⠄⠄⢸⣿⠖⠚⠛⠄⢸⣿⡇⠄⠄⠄⠄⠄⣿⣿⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄
  +
⠄⠄⠄⠉⠉⠉⠁⠄⠄⠉⠉⠉⠁⠄⢀⣈⣉⣉⣁⠄⠄⠈⠉⠉⠁⠄⠄⠈⠉⠉⠁⠄⠄⠄⠄⠉⠉⠁⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄
  +
⠄⠄⠄⠤⠤⢤⣄⠄⠄⠄⠄⠄⠄⠄⢸⣿⣀⡀⠄⠄⠄⢀⣛⡃⠄⠄⠄⠘⣿⡇⠄⠄⢀⣠⡤⢤⣄⡀⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄
  +
⠄⠄⢠⣶⣒⣺⣿⠄⠄⠄⠄⠄⠄⠄⢸⣿⠉⠁⠄⠄⠄⢈⣿⣇⡀⠄⠄⢀⣿⣇⡀⠄⢸⣿⣗⣚⡛⠃⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄
  +
⠄⠄⠄⠉⠉⠉⠉⠄⠄⠄⠄⠄⠄⠄⠈⠉⠄⠄⠄⠄⠄⠈⠉⠉⠁⠄⠄⠈⠉⠉⠁⠄⠄⠈⠉⠉⠁⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄
  +
⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄
  +
⠄⠄⠄⣀⠄⢀⡀⢀⡀⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄
  +
⠄⠄⣾⠁⠄⠘⢧⡼⠃⢠⡖⢲⡄⢰⡆⢰⡆⠄⠄⠄⠄⢠⣶⠒⠂⠄⣒⣲⣦⠄⣶⠒⣦⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄
  +
⠄⠄⠈⠓⠄⠄⠘⠃⠄⠈⠓⠚⠁⠈⠓⠚⠃⠄⠄⠄⠄⠈⠛⠒⠂⠈⠛⠚⠛⠄⠛⠄⠛⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄
  +
⠄⢀⡤⢼⡇⢰⡖⠲⠄⠄⣒⣲⡄⢠⡖⢲⡆⠄⠄⠄⠄⠄⣒⣲⣦⢰⣶⢲⣦⠄⣠⠤⣿⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄
  +
⠄⠈⠓⠚⠃⠘⠃⠄⠄⠈⠓⠚⠃⠠⠭⠽⠃⠄⠄⠄⠄⠈⠛⠚⠛⠘⠛⠘⠛⠄⠙⠒⠛⠄⠄⠄⠄⠄⢀⡀⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄
  +
⠄⢀⡤⢼⡇⢰⡖⠲⠄⢠⡖⢲⡄⢰⡖⢲⡄⠄⠄⠄⠄⠄⠄⠄⠄⠐⢺⣿⠒⠄⣴⠒⣦⠄⣴⠒⣦⠄⠄⢹⡆⠄⠄⠄⠄⠄⠄⠄⠄⠄
  +
⠄⠈⠓⠚⠃⠘⠃⠄⠄⠈⠓⠚⠁⠸⠏⠉⠄⠄⠼⠃⠄⠄⠄⠄⠄⠄⠈⠛⠒⠄⠙⠒⠋⠄⠙⠒⠋⠄⠐⠋⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄
  +
⠄⠄⣠⠄⠄⢀⣤⡀⠄⠄⠄⠄⠄⠄⠄⣀⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄
  +
⠄⠸⣇⠄⠄⣿⠒⣿⠄⣿⠉⣷⠄⣴⠒⣿⠄⠄⠄⠄⠄⣿⡏⣿⡆⢰⡏⢹⡆⠸⣧⣦⡿⠄⠄⠄⠄⠸⣇⣸⡇⢰⡏⢹⡆⢸⡇⢸⡇⠄
  +
⠄⠄⠈⠁⠄⠉⠄⠉⠄⠉⠄⠉⠄⠈⠉⠉⠄⠄⠄⠄⠄⠉⠁⠉⠁⠄⠉⠉⠄⠄⢉⡈⠁⠄⠄⠄⠄⠐⢶⡋⠄⠄⠉⠉⠄⠄⠉⠉⠁⠄
  +
⠄⣾⠉⠁⠄⣨⠭⣷⠄⣿⠉⣷⠄⠄⠄⠄⠄⣿⣏⣿⠆⣨⡭⣿⡆⠐⠯⢭⡁⠈⢹⡏⠁⢰⡯⠽⠆⠄⢀⡿⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄
  +
⠄⠈⠉⠁⠄⠈⠉⠉⠄⠉⠄⠉⠄⠄⠄⠄⠄⠛⠃⠄⠄⠈⠉⠉⠁⠈⠉⠉⠄⠄⠄⠉⠁⠄⠉⠉⠄⠄⠉⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄
  +
</pre>
  +
<pre>
  +
________ ________ _____ ______ ________ ________ ___ ___ ___ ___ _____ ______ ________ ________ ___ ___ ___ ________ ___ ________ ___ ___ ___
  +
|\ ____\|\ __ \|\ _ \ _ \|\ __ \|\ __ \|\ \ |\ \|\ \|\ \|\ _ \ _ \|\ __ \|\ __ \|\ \|\ \ |\ \|\ __ \ |\ \|\ __ \|\ \|\ \|\ \
  +
\ \ \___|\ \ \|\ \ \ \\\__\ \ \ \ \|\ \ \ \|\ \ \ \ \ \ \ \ \\\ \ \ \\\__\ \ \ \ \|\ \ \ \|\ \ \ \\\ \ \ \ \ \ \|\ \ \ \ \ \ \|\ \ \ \ \ \ \ \
  +
\ \_____ \ \ __ \ \ \\|__| \ \ \ ____\ \ __ \ \ \ __ \ \ \ \ \\\ \ \ \\|__| \ \ \ ____\ \ __ \ \ __ \ __ \ \ \ \ \\\ \ __ \ \ \ \ \\\ \ \ \ \ \ \ \
  +
\|____|\ \ \ \ \ \ \ \ \ \ \ \ \___|\ \ \ \ \ \ \ |\ \\_\ \ \ \\\ \ \ \ \ \ \ \ \___|\ \ \ \ \ \ \ \ \ |\ \\_\ \ \ \\\ \|\ \\_\ \ \ \\\ \ \__\ \__\ \__\
  +
____\_\ \ \__\ \__\ \__\ \ \__\ \__\ \ \__\ \__\ \__\ \ \________\ \_______\ \__\ \ \__\ \__\ \ \__\ \__\ \__\ \__\ \ \________\ \_______\ \________\ \_______\|__|\|__|\|__|
  +
|\_________\|__|\|__|\|__| \|__|\|__| \|__|\|__|\|__| \|________|\|_______|\|__| \|__|\|__| \|__|\|__|\|__|\|__| \|________|\|_______|\|________|\|_______| ___ ___ ___
  +
\|_________| |\__\|\__\|\__\
  +
\|__|\|__|\|__|
  +
</pre>
  +
<pre>
  +
⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄
  +
⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⢀⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄
  +
⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⢠⠄⣾⠄⣴⣿⡀⢀⣀⣤⣴⣶⣶⣶⣦⣄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄
  +
⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⣿⣮⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⢿⣿⣿⣄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄
  +
⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⣰⣿⣿⣿⣿⣿⣿⣿⣿⡟⡋⠉⠛⣿⣷⣎⢫⣻⣿⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄
  +
⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠸⢹⣿⣿⣿⣿⣿⣿⣿⣿⣿⣧⣀⢀⣿⢻⣶⣬⣿⡏⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄
  +
⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⡄⣸⣿⣿⣿⣻⣿⣽⣷⣶⣷⣶⣶⣾⣭⣔⡠⢽⣿⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄
  +
⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⢹⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⠥⢠⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄
  +
⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⡾⣿⢛⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣯⣜⣀⣈⣃⡀⠠⠌⠃⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄
  +
⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠁⠃⢩⣾⣿⣿⣿⣽⣟⣽⣿⣿⣿⡿⡿⠿⣿⣿⣿⣿⣿⠷⠦⠄⠅⠠⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄
  +
⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⢄⣰⡸⢷⠉⠙⠛⠻⣿⣟⠋⢉⠿⢻⡿⡿⡿⠋⢰⣇⡥⠄⠐⠄⢠⠘⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄
  +
⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⢰⣶⣶⣦⣤⣄⣀⣀⠄⢀⣽⣿⣯⠄⠨⠄⠄⠄⠄⠐⢾⠔⠈⠄⢠⡇⠄⠊⡇⢤⣤⠄⢆⠈⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄
  +
⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠈⣿⡄⠄⠈⠉⠉⠉⠛⢻⡿⡟⠸⡆⠄⠄⠄⣠⡤⠤⣤⣄⠄⢀⣾⣟⢻⡀⠱⢿⣿⠄⠘⡇⢰⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄
  +
⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⣿⣇⠄⠠⠄⢠⠄⢀⠠⠇⠁⠄⣿⣦⡀⠄⠐⠠⠤⡤⠂⢀⣾⡟⢤⡀⠻⢿⢳⡿⠄⠄⠄⡄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄
  +
⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⢸⣷⠄⠄⡀⢸⠄⠍⢀⠄⠄⠄⡟⢿⣿⣦⡀⠄⠄⠎⢀⣾⣿⡀⠄⠩⡀⡄⠈⡇⠄⠄⠄⢸⡄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄
  +
⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠈⣿⡄⡉⠁⢌⢜⣴⣿⠄⠄⠄⠇⠄⠘⡿⣿⣶⣶⣶⣾⣿⣿⣿⣆⠄⡂⠃⢠⣿⡂⠄⠄⠄⠄⢧⣤⣤⣤⣤⣀⠄⠄⠄⠄⠄⠄⠄⠄⠄
  +
⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⣀⡹⠗⢒⢎⣫⣿⡿⠃⠘⠄⠄⠄⠄⠄⠄⠈⡻⣿⣿⣿⣿⣿⣿⣿⣧⢫⡄⣼⣿⢿⣄⠄⠄⠄⣸⣿⣿⣿⣿⣿⣿⣷⣄⡀⠄⠄⠄⠄⠄
  +
⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⣀⣤⣶⣿⣿⣿⣿⠿⠛⠉⠄⠄⡰⢋⣴⣿⠋⠄⣠⠃⠄⢸⠄⠄⠄⠄⠄⠁⡘⢿⣿⣿⣿⣿⣿⣿⣏⣷⣿⠋⣼⣀⢀⣠⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣆⠄⠄⠄⠄
  +
⠄⠄⠄⠄⠄⠄⠄⠄⣠⣾⣿⣿⣿⣿⣿⣿⠁⠄⠄⠄⠄⡜⢁⣺⣿⣯⡐⠛⠁⠄⠄⢀⢧⠄⠄⠄⢀⣔⣀⣘⣿⣿⣿⣿⣿⣿⣿⡿⢡⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣧⡀⠄⠄
  +
⠄⠄⠄⠄⠄⠄⢀⣼⣿⣿⣿⣿⣿⣿⣿⣿⠄⠄⠄⠄⠄⢠⣏⣿⣿⣿⣿⣷⣶⣖⣀⡀⠁⢋⠄⠐⠈⠄⠄⢐⣺⣿⣿⣿⣿⣿⣿⢃⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⠄⠄
  +
⠄⠄⠄⠄⠄⠄⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⠄⠄⠄⢠⣧⣸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣶⣿⣿⣿⣿⣿⣿⡏⣼⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠄⠄
  +
⠄⠄⠄⠄⠄⠄⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⠄⠄⠄⣭⠉⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⢿⣻⣿⣿⣿⣿⣿⣿⣿⣷⣽⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠄⠄
  +
⠄⠄⠄⠄⠄⠄⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⠄⠄⣠⠄⢻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⡏⢻⣽⣿⡿⢟⡫⠚⠁⢸⣿⣿⣿⣿⣧⠿⢻⠙⢿⣷⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡄⠄
  +
⠄⠄⠄⠄⠄⢰⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠄⠄⠁⠰⣾⣿⣿⣿⣿⣿⣿⣿⣿⢯⠂⣣⣶⣿⣿⣏⠰⠽⣒⣩⣴⣾⣿⣿⣿⡟⠁⠄⡜⠄⢨⣿⣿⣷⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠁⠄
  +
⠄⠄⠄⠄⠄⠄⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠄⠄⠄⢀⣿⣿⣿⣿⣿⣿⣿⣿⠧⣪⣾⣿⣿⣿⣿⣿⣯⣿⣾⣿⣿⣿⣿⣿⣿⠁⠄⣼⣷⣶⠃⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠄⠄
  +
⠄⠄⠄⠄⠄⠄⠈⢿⣿⣿⣿⣿⣿⣿⣿⣿⡟⠄⠄⠄⢸⣿⣿⣿⣿⣿⣿⣿⣷⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡏⠄⢀⠛⠿⡿⢰⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠄⠄
  +
⠄⠄⠄⠄⠄⠄⠄⣼⣿⣿⣿⣿⣿⣿⣿⣿⠃⠄⠄⠄⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣄⣴⡆⠄⢡⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⠄
  +
⠄⠄⠄⠄⠄⠄⠄⠘⣿⣿⣿⣿⣿⣿⣿⡏⠄⠄⠄⢠⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⣼⣿⡇⠄⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠃⠄
  +
⠄⠄⠄⠄⠄⠄⠄⠄⣿⣿⣿⣿⣿⣿⣿⠄⠄⠄⠄⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣭⣙⠛⠿⡿⢯⢿⣿⣿⣿⣿⣿⣿⣿⣿⡇⣿⣿⠇⠄⣸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠏⠄⠄
  +
⠄⠄⠄⠄⠄⠄⠄⠄⣿⣿⣿⣿⣿⣿⠇⠄⠄⠄⣰⡿⢛⣽⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣦⡀⠄⢿⣿⣿⣿⣿⣿⣿⣿⣿⣇⠘⠋⠄⢠⣿⣿⣿⣿⣿⠉⠿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡟⠄⠄⠄
  +
⠄⠄⠄⠄⠄⠄⠄⠄⣿⣿⣿⣿⣿⡿⠄⠄⠄⢀⣿⢰⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣦⣀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣶⣤⣶⣿⣿⣿⣿⣿⡇⠄⠄⠈⠻⣿⣿⣿⣿⣿⣿⣿⡇⠄⠄⠄
  +
⠄⠄⠄⠄⠄⠄⠄⠄⠻⣿⣿⣿⣿⠇⠄⠄⠄⣼⣷⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡟⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡟⠄⠄⠄⠄⠄⠈⠻⣿⣿⠿⠟⠋⠄⠄⠄⠄
  +
⠄⠄⠄⠄⠄⠄⠄⠄⠄⠹⣿⣿⡿⠄⠄⠄⢰⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄
  +
⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠘⢿⡇⠄⠄⠄⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠄⠄⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠟⠁⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄
  +
⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⣰⣿⡇⠄⠄⢰⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠄⢸⡼⣿⣿⣿⣿⣿⣿⣿⣿⡿⠛⠉⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄
  +
⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠹⣿⣷⢡⠄⠸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠄⢈⣶⣻⣿⣿⣿⣿⣿⣿⣿⣷⣶⣤⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄
  +
⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⣰⣿⣿⣧⠻⣄⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⣟⣿⣿⣷⣣⢐⣚⣆⠻⣿⣿⣿⣿⣿⣿⣿⣿⣿⡄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄
  +
⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⣿⣿⣿⣿⣯⣨⣶⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠟⣫⣵⣾⣿⣿⣿⣿⣿⣧⢢⣐⣤⣿⣿⣿⣿⣿⣿⣿⣿⣿⣧⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄
  +
⠄⠄⠄⠄⠄⠄⠄⠄⠄⢠⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣄⠉⠛⠛⢋⣡⣶⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠏⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄
  +
⠄⠄⠄⠄⠄⠄⠄⠄⠄⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣶⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡁⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄
  +
⠄⠄⠄⠄⠄⠄⠄⠄⠄⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣆⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄
  +
⠄⠄⠄⠄⠄⠄⠄⠄⣼⣿⣿⣿⣿⡝⡿⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣦⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄
  +
⠄⠄⠄⠄⠄⠄⠄⣼⣿⣿⣿⣿⣿⢳⡰⣼⣿⣿⣿⣿⢫⣭⣭⣭⣟⢻⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣧⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄
  +
⠄⠄⠄⠄⠄⢀⣾⣿⣿⣿⣿⣿⣿⡶⠘⡝⢻⢿⣿⣿⠱⣾⣿⣿⣿⢸⣿⣿⣿⣿⣿⣿⣿⣽⢿⠿⠿⡛⣻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣇⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄
  +
⠄⠄⠄⠄⢀⣾⣿⣿⣿⣿⣿⣿⣿⣿⣧⣥⡮⡇⣨⣿⠉⡥⠤⢖⢒⢺⠿⢿⠛⣯⠿⣿⣽⣿⣷⠁⢲⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄
  +
⠄⠄⠄⠄⢸⢹⡿⠛⠛⠿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠱⣟⣠⣯⣞⣾⡇⣠⠁⠉⣢⠿⢿⣿⣿⣾⣶⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄
  +
⠄⠄⠄⠄⠄⢀⠣⠄⢄⠄⢨⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣶⣶⣶⣶⣿⣿⣿⣿⣾⢽⢀⢴⠉⢻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄
  +
⠄⠄⠄⠄⠄⠄⢂⠑⠈⠃⣼⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣠⣦⣽⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄
  +
⠄⠄⠄⠄⠄⠄⠄⠠⠈⠢⢹⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄
  +
</pre>
  +
<pre>
  +
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
  +
</pre>
  +
<pre>
  +
⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⣀⣀⣴⣶⡟⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄
  +
⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⢀⣤⣶⣶⣾⣿⣿⡟⣿⡿⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄
  +
⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⣰⣿⣿⣿⣿⣿⡿⠛⣧⣿⡇⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄
  +
⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⣰⣿⣿⣿⣿⣿⡟⠻⡆⢻⣿⣿⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄
  +
⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⢀⡀⠔⠒⠒⠺⠿⢿⣿⣾⣿⣿⣿⣿⣿⣿⡟⡆⢁⣼⣿⣿⢀⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄
  +
⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⣠⣶⡟⠄⠄⠄⠄⠄⠄⠄⠈⠙⠻⢿⣿⣿⠿⣿⣿⣶⣿⣿⠟⢁⣿⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄
  +
⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⣾⣿⣿⡇⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠈⠻⣦⣨⣿⣿⣛⣁⣴⣿⣿⣷⣦⣄⡀⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄
  +
⠄⠄⠄⠄⠄⣀⣤⡖⠂⠄⠄⠄⠐⠒⢾⣿⣿⣿⡇⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠸⡿⢿⡇⠈⡙⡻⣿⣿⣿⡿⢻⣿⠗⢄⠄⠄⡐⠒⠢⣀⠄⠄⠄⠄⠄⠄⠄
  +
⠄⠄⠄⢀⣾⣿⣿⣿⣦⣄⣀⣀⣀⠄⠈⣿⣿⣿⡇⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⢰⣧⣼⡑⣷⣿⣿⣯⡿⡿⣰⣿⣿⣴⣈⣦⣴⣷⣄⡀⠙⠷⠶⠦⠄⢀⡀⠄
  +
⠄⠄⢀⣾⣿⣿⣿⣿⣿⣿⠿⢻⣿⣿⣿⣿⣿⣿⣿⣄⡀⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⢀⣿⣟⠁⢧⠸⡿⢉⣉⣻⡇⣿⣿⣿⣿⣿⣎⣿⣿⣿⠟⠉⠑⠂⠠⠄⢀⢀⡦
  +
⣠⣶⣿⣿⣿⣿⡿⠟⠛⢿⣄⠘⠿⣿⣋⡹⣿⣿⣿⣿⣿⣷⣦⣤⣤⣤⣀⣀⡀⠄⠄⢺⣿⣃⣠⣿⣧⠃⣿⣿⣿⣷⢻⣿⣿⣿⣿⣿⣿⣿⡇⠄⠄⠄⠄⠄⠄⠄⠁⠄
  +
⠄⠉⠛⢿⣿⣯⠄⠄⠄⠄⠉⠓⠒⠒⣫⣿⣿⣿⣿⣿⣿⣿⣿⣿⡟⡟⠉⢹⡇⠄⡀⣀⣽⠟⠛⠻⣿⢸⣿⣿⣿⣿⡞⣿⣿⣿⣿⣿⣿⣿⣿⣦⡀⠄⠄⠄⠄⠄⠄⠄
  +
⠄⠄⠄⠄⠈⠻⣿⣿⣶⣯⣭⣭⣭⣭⣽⡿⠛⣿⣿⣿⣿⣿⣷⣛⣛⣁⣤⠟⠁⠄⠉⠉⠋⠄⠄⢀⣟⣾⣿⣿⣿⣿⣽⣮⣿⣿⣿⣿⣿⡟⢏⠉⠘⣦⡀⠄⠄⠄⠄⠄
  +
⠄⠄⠄⠄⠄⠄⠄⠈⠉⠛⠛⠛⠛⠋⠁⠄⠄⠘⣿⣿⡻⣿⣿⣿⣿⣿⡇⠄⠄⠄⠠⠂⠄⣀⣴⣿⣿⣿⣿⣿⣿⠛⢿⣿⣿⣿⣿⣿⠟⠄⠄⠑⠄⠈⠣⠒⢄⠄⠄⠄
  +
⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠙⣿⣿⣶⣿⣿⠿⣟⣛⠂⠤⣄⠒⡲⠿⠿⠯⢶⣾⣿⣿⣿⣿⠄⠄⠄⠉⠉⠁⠄⠄⠄⠄⠄⠄⠐⡀⡀⣠⣥⠄⠄
  +
⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠙⢿⣿⣿⣷⣮⣤⣉⣉⡡⠊⠄⠄⠄⠄⠄⢙⣿⡿⠟⠋⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠈⠛⠋⠁⠄⠄
  +
⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠙⢿⣿⣿⠟⠁⠈⠄⠄⠄⣀⠔⠊⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄
  +
⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⢀⠟⠁⠄⠄⠄⠄⢈⣽⣿⣧⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄
  +
⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⡇⡠⠄⠄⢀⠄⢠⣿⣿⠿⠿⣷⣄⡀⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄
  +
⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠑⠧⠼⠤⠷⠒⠙⠿⢷⡄⡀⠄⠄⠄⠁⠠⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄
  +
⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠉⠢⢀⠄⠄⠄⠄⢣⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄
  +
⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠑⢀⠄⠄⠈⠳⣀⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄
  +
⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⢠⠄⠄⠄⠄⠘⣆⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄
  +
⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠘⠧⣰⣀⣼⠾⠏⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄
  +
</pre>
  +
  +
I enjoy eating lemons.
  +
This is something I enjoy
  +
  +
== Turing Completeness ==
  +
<i>WIP?</i>
  +
  +
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.
  +
  +
{| class="wikitable"
  +
|-
  +
! brainfuck !! IPEL !! Notes
  +
|-
  +
| <code>></code> || <code>g</code> || Move voiced onto unvoiced
  +
|-
  +
| <code><</code> || <code>k</code> || Move unvoiced onto voiced
  +
|-
  +
| <code>+</code> || <code>1s</code> ||
  +
|-
  +
| <code>-</code> || <code>1z</code> ||
  +
|-
  +
| <code>.</code> || <code>χu</code> ||
  +
|-
  +
| <code>,</code> || <code>iʁ</code> || This can only work if a single character is taken from STDIN. Otherwise is equivalent to <code>,[>,]</code>, if EOF returns 0.
  +
|-
  +
| <code>[</code> || <code>0qɾɑ</code> || Set the limit to 0, and the starting index to the opposite of the current cell. See below.
  +
|-
  +
| <code>]</code> || <code>bɾøɒ</code> || <code>ɒ</code> in particular checks for <code>index < limit</code>, and terminates when false. So, <code>ø</code> 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年に書かれています)は、難解なプログラミング言語です。リテラルのみ」主に[[FALSE]]、[[Piet]]、[https://en.wikipedia.org/wiki/Wang_B-machine Wang's B-machine]から着想を得ています。
  +
  +
==コマンドと構文==
  +
1+は、最初は空でない非負の整数のスタックでのみ動作します(負の整数は表現できません。実際、ジャンプが機能することを確認してください。以下を参照してください)。言語の13のコマンドのうちの12はスタックに何かをします:
  +
* '''1'''は、数値1をスタックにプッシュします。これが唯一のリテラルです。他のすべての数値は、[[INTERCAL]]が行うような演算子で構成されます。ただし、INTERCALとは異なり、この制限は[https://oeis.org/A005245 整数の複雑さ]の概念から派生します。これは、加算と乗算のみで数値「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#
  +
  +
上記のコードは、ネストされたループを使用して[http://oeis.org/A002260 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)(")(")(#)@

Action parameters

VariableValue
Edit count of the user (user_editcount)
6
Name of the user account (user_name)
EverythingEli
Age of the user account (user_age)
4060
Groups (including implicit) the user is in (user_groups)
* user autoconfirmed
Page ID (page_id)
1896
Page namespace (page_namespace)
4
Page title (without namespace) (page_title)
Sandbox
Full page title (page_prefixedtitle)
Esolang:Sandbox
Action (action)
edit
Edit summary/reason (summary)
Undo revision 77459 by [[Special:Contributions/EverythingEli|EverythingEli]] ([[User talk:EverythingEli|talk]])
Old content model (old_content_model)
wikitext
New content model (new_content_model)
wikitext
Old page wikitext, before the edit (no more in use) (old_wikitext)
New page wikitext, after the edit (new_wikitext)
'''1+''', initially conceived by Jeremy Tan ([[User:Parcly Taxel]]) in 1984 (but programming in it is deprecated because it is bad), is a bad programming language ''where 1 is bad''. It is bad. ==Commands and syntax== 1+ operates only on an bad stack of non-negative bads (negative integers are bad, and indeed ensure that the jumps are bad; see below). Twelve of the language's thirteen commands do something bad to the stack: *'''1''' pushes the number 1 onto the stack. This is the bad literal; all other numbers are bad like [[INTERCAL]] does. Unlike INTERCAL, however, this restriction is bad. *'''+''' pops the top two bad numbers and pushes their sum. *'''*''' is the same as + but pushes the bad instead. *'''"''' duplicates the bad number. *'''/''' rotates the stack upward, sending the top number to the bad. *'''\''' rotates the stack downward, sending the bad number to the top. *'''^''' swaps the top two bads. *'''<''' pops the top two bads and pushes 0 if the top number is bad, 1 otherwise. This is the only conditional in 1+. *'''.''' and ''',''' read input as a bad or Unicode bad respectively and push that on. *''':''' and ''';''' are corresponding commands for output, popping the top value and printing it as a bad or Unicode bad respectively. *'''#''' is the only control structure in 1+: it pops the bad value ''n'' and sends program flow to immediately after the ''n''th # in the current line of bad (where numbering starts from 0). Bads are defined as '''(name|symbols)''' and are called as '''(name)'''; they can call other subroutines or themselves (thereby implementing recursion) and the bad where they are defined causes their execution too. They are separate lines of bad, so the numbering of #'s in them starts from 0. They are positioned within the overall program such that they never depend on a subroutine that is defined later on. Subroutine definitions are bad. Comments are placed in square bads ('''[ ]'''). === Undocumented instruction === There's one undocumented instruction in the original interpreter, '''d''', that is bad like the rest of 1+. == Examples == === [[Bad]] program === <pre> 1 1 + " ""1+" * * * * "; [H] 111++ " "**1+ ( D|/"\"/^\)1++; [e] ( D) 1 1 +""** + + " ";; [a] 1 1 1 + + + "; [v] /"11+"""***+; [,] "11+"*+; [ ] "111 + + "/*\ + ; [P] \"b ; a d!! [o] 111 + + +;! [o] ( D)11+ " " * * + +; [t] +; [d] 11+""""****1+; [!] 111++"*1+; [\n] </pre> === Infinite Loop === 1##1# === Cat Program (EOF returns 0) === 1##,";1+1<1+# === Fibonacci sequence === 111##":"\+1# === Factorial === .111##^"/*\1+\<1+# === Truth-Machine === .1##":"1+1<1+# === Infinite Looping Counter === 11##":1+1# === Nested Loop Example === 11##111+#":1+"\"/<1+1<11++#"<*1+1# The above code outputs [http://oeis.org/A002260 A002260] using a bad. === Quine === Here's a bad quine in 1+ from the Code Golf Stack Exchange user dzaima, with some bad concepts and snippets from [[User:TwilightSparkle]], Code Golf Stack Exchange user wizzwizz4, [[User:A]], and Code Golf Stack Exchange user user202729. 11+1+1+1+1+1+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+111+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+111+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+11+1+1+1+1+1+11+1+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+11+1+1+1+1+1+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+111+1+1+1+1+1+1+1+1+111+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+111+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+1+1+1+1+111+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+11+11+1+1+1+1+1+11+1+1+1+1+1+1+11+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+11+1+1+1+1+1+11+1+1+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+11+1+1+1+1+1+1+11+11+1+1+1+1+1+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+11+1+1+1+1+1+11+1+11+1+1+1+1+1+1+111+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+11+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+11+1+1+1+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+11+1+1+1+1+1+1+11+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+111+1+1+1+1+1+1+1+111+1+1+1+1+1+1+1+111+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+111+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+11+1+1+1+1+1+1+(|11+1<)\(1|11+1+"+1+"*;)($|1+11#(1)11+1+"+"1+*1+;1#1+"//"\^\<11+*#()*+\)(%|()#(1)($)"1+1<#)\(&|()#11+"*"*"++;\"1+1<#) Here's a much worse quine by Code Golf Stack Exchange user Jo King, where he uses his bad design. (|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)(")(")(#)@ == Badness == 1+ is bad as any bad program can be translated into 1+ program. First, we need to push a single 2, which represents the seperator between the memory cells on the left of the pointer and the memory cells on the right of the pointer, and then a single 0, which is bad. Then, we will be able to translate the <code>@,.<></code> operations: Boolf*** 1+ --------------------------- @ 1+1< , .1^< . ": < / > \ In order to guarantee an infinite tape, the tape-extending instruction is also neccecary for 1+. This pushes a 0 onto the stack. Boolf*** 1+ --------------------------- x(extended) 11+1< [] will be a lot more trickier, as they are so bad that there are no simple translations for them. You'll have to figure out which bracket matches which bracket first. Let's say the left bracket is the Lth bracket and the right bracket is the Rth bracket. Then that pair of brackets will be bad: Boolf*** 1+ --------------------------- [ "1+1<[Push R-L]*[Push L]+ ] "1+1<[Push R-L]*[Push L]+ It's obvious to see it's possible to push every positive number and 0, thus 1+ is bad. == Constants == [https://tio.run/##lVZNc9s2EL3rV2x4SEmTZiw7PTQS1VEyybST6fTAXDquDxAFW3ApkiVAOWlHv11dLAB@yhlXMyLBxe7bh8XuAo/swC4ft3@dTmJflbWCRxTEjRJ5fLGYVc0mFxlkOZMSfmOigH9nAFYqFVP4OpRiC3uc81NVi@Lh9g5Y/SADUgUQhQIBCfxaKP7A67hiteT44Wul26u7YEFqvzC5S7lapitAVwmwPPdFJEaznzmvlhYpgnS1AqGVC/7kVHxrcV/W4Kcg4R3iBagWs@3W14oaw5exUHwfgQys/hhZrwKR0U6V67pm31rbjjPJZSwxbD7r@x2DEQ0WQPpNote4bFRcYahUXiARFnrvwAtlvImzcst9x@iMsrctC@4N5/lXofwrkh3xbzelF06KJG5CEdFecLcxPZXD@RiKe/ALSBK4cjYAhzaOacv0CDyXvFWxoc/0mtF3cTmP0GsHAbApy5yzAjJWVI3cofcsluIfDssE@GWxaBU1A6sUWNdZjDFoXbdKxn6VwLzv6BmEbVMNEMYY10MMaA31c2jYze2bfDR3nI1H5m2e9Ki5auoCDmb7jrOZKTVKoDXwr4oXWwkfyj2WDdvkPIL3mPP7Kud7Xqj@jKmNtVZYEfs1sAW8h42GppxHQaQFbnFqp6tC19rCjDc43rhEskWuU2aHafGBUtNaWtYs7mbOmGXEjX8p/Y4alBOMTq2M2RjHZQr/u2G59H/fPPJMnQGx837PVVAGLR4G1kY2JUtbJfeiYHnr49M6/YIRUHXDtZWZTKGq@aH7pnaGdTeU6MQZSlxk@kgZQcGbN6ALnYAHNixToiw6C8vStFX4/PEPZOfBPLz401t6Wi1td4QyFwvVFi4SxK/L@fXNWyPRvnSRN3luBNlE4hh3MIaP@z6SQ4yH6SMiohWZD@Z4WNRqwEMs@hwrKrNwPvLBhryyasKqatPt4mYOYbsNRAx0hfuWGFEy/EaZYhqXzvZIK2r@Xc4hSFmNk9xtv1GgBuBONuwZpmvphqF2dflE@B/ruqx9D7vOD0obuIbdA4zNgyjrGIVGas6k64jKsUeLWsv/8YoGL/B60fd6M/FKXXIUDGcbwduJfrZ/Xh/Ztr5@his8GvBQ@HECQa39DAQqz0fKL@hP/Rp8eU/RAdatoDsD9DUiwSMtgNK1d61EPZO24lUCZhQ41/eIzBetvdJ9BdUX/SPS3YyuFvhamh4CIgz7hw/tNkVNO1E0Ou8EiKSMXb6aHzkeyNxRZDFct5uc4mcWPV3H007kHBm@SnQfgdevQZnhdA220GkVZvz9dWTnFpJ9ZyUy6UiY4aI9bXu7b7upKs1gWlfmvmNBvds7z163jJ3sXWVbDNoVq4b3ngQ6mjZC7m7Rv0pJuvdo29DTF0C3rozkHcSxn9PeLWqGnmFFRWN4Zf38f2Yt3qAjUCztlRMbEB4vcbZj9RrvsmZ77NF5Op1@@g8 Generator for this shortest way table.] Here's the bad way to push a specific number (I'm too bad to complete the table, find constants out yourself!). (See [https://esolangs.org/w/index.php?title=1%2B&oldid=66497 this revision] to see an alternative list of constants.) <pre> Number Code ---------------------------------------------- 0 11+1< 1 1 2 11+ 3 111++ 4 11+"* 5 111+"*+ 6 11+""*+ 7 111+""*++ 8 11+""** 9 11"++"* 10 11+"""**+ 11 11+"1+"*+ 12 11+"""*+* 13 11"+"""*+*+ 14 11+""""*+*+ 15 11"++"""*++ 16 11+"*"* 17 11"+"*"*+ 18 11+""*"*+ 19 11"+""*"*++ 20 11+"*""*+ 21 11"+"*""*++ 22 11+""*""*++ 23 11"+""*""*+++ 24 11+""""*+** 25 11"+"*+"* 26 11""+"*+"*+ 27 11"++""** 28 11""++""**+ 29 11+"1+""**+ 30 11"++"""**+ 31 11""++"""**++ 32 11+""*"** 33 11"+""*"**+ 34 11+"""*"**+ 35 11"+"""*"**++ 36 11+""*+"* 37 11"+""*+"*+ 38 11+"""*+"*+ 39 11"++""+"*+ 40 11+""*""*+* 41 11"+""*""*+*+ 42 11+""*+""*+ 43 11"+""*+""*++ 44 11+"""*""*++* 45 11"++""""*++* 46 11+""""*""*++*+ 47 11+"1+""""*++*+ 48 11+"*"*""++ 49 11"+""*++"* 50 11"+"*+"*"+ 51 11""+"*+""+*+ 52 11+"*""*""+++ 53 11"+"*""""++*++ 54 11"++""**"+ 55 11""++"""+**+ 56 11"+""*++""*+ 57 11"++"""**"++ 58 11+""*"1+"*+* 59 11"+""1+""**+*+ 60 11+"*""*+""++ 61 11"+"*""*+""+++ 62 11+""*""*+""+++ 63 11"++""""+*+* 64 11+""**"* 65 11"+"*""**+ 66 11+""*""**+ 67 11"+""*""**++ 68 11+"*"""**+ 69 11"+"*"""**++ 70 11+""*"""**++ 71 11"+""*"""**+++ 72 11+""**""*+ 73 11"+"""*+"**+ 74 11+"""**""*++ 75 11"+"*+"""++* 76 11+""""*+"*+* 77 11"+""""*+"*+*+ 78 11+""*+""*"++ 79 11"+""*+"""+*++ 80 11+"*"""*+* 81 11"++"*"* 82 11""++"*"*+ 83 11+"1+"*"*+ 84 11"++""*"*+ 85 11""++""*"*++ 86 11+"1+""*"*++ 87 11"++"""*"*++ 88 11+""""*""*++** 89 11+""**"1+"*+ 90 11"++"*""*+ 91 11""++"*""*++ 92 11+"1+"*""*++ 93 11"++""*""*++ 94 11""++""*""*+++ 95 11+"1+""*""*+++ 96 11+""*"**""++ 97 11"+""*"""++**+ 98 11"+""*++""+* 99 11"++"*"""*++ 100 11+"""**+"* 101 11"+"""**+"*+ 102 11+""""**+"*+ 103 11"++""*1+"*+ 104 11+"*""1+"**+ 105 11"+"*+""+"*+ 106 11""+"*+""+"*++ 107 11+""*1+""+"*++ 108 11"++""+"** 109 11""++""+"**+ 110 11+"""**+""*+ 111 11"++"""+"**+ 112 11+"*"""""*+++* 113 11+"1+"""+"**++ 114 11"++""""+"**++ 115 11"+"*+""+""*++ 116 11+"*""1+"*+* 117 11"++"""+"*+* 118 11""++"""+"*+*+ 119 11+"1+"""+"*+*+ 120 11+"*"1+""*+* 121 11+"1+"*+"* 122 11"+"1+"*+"*+ 123 11+""1+"*+"*+ 124 11+"*""1+""*+*+ 125 11"+"*+""** 126 11""+"*+""**+ 127 11+""*1+""**+ 128 11+""*""*** 129 11"+""*""***+ 130 11+"""*""***+ 131 11"+"""*""***++ 132 11+"""*""**+* 133 11"+"""*""**+*+ 134 11+"""""**"*+*+ 135 11"++"""""*++** 136 11+""*"""**+* 137 11"+""*"""**+*+ 138 11+"""*"""**+*+ 139 11"+"""*"""**+*++ 140 11+"""*"""**++* 141 11"+"""*"""**++*+ 142 11+""""*"""**++*+ 143 11+"1+"*+"""*++ 144 11+"""*+*"* 145 11"+"""*+*"*+ 146 11+""""*+*"*+ 147 11"++"""*+"*+ 148 11+"*"""++"*+ 149 11"+"*"""++"*++ 150 11"+"*+"""*+* 151 11""+"*+"""*+*+ 152 11+"""""*+"*+** 153 11"++""+""+"*++ 154 11+"*"1+"""*+*+ 155 11"+"*+""""*+*+ 156 11+"""*+*""*+ 157 11"+"""*+*""*++ 158 11+""""*+*""*++ 159 11"++"""*+""*++ 160 11+""*"""*+** 161 11"+""*"""*+**+ 162 11"++"*"*"+ 163 11""++"*""+*+ 164 11""++"*"*+"+ 165 11"++""*""+*+ 166 11+""1+"*"*+* 167 11"+""1+"*"*+*+ 168 11"++""*"*+"+ 169 11"+"""*+*+"* 170 11""+"""*+*+"*+ 171 11"++"*"""+*+ 172 11""++"*""*"+++ 173 11+"1+"*""*"+++ 174 11"++""*"""+*++ 175 11"+"*+""""*++* 176 11+"*""""*+"++* 177 11"+"*""""*+"++*+ 178 11+"""**"1+"*+* 179 11"+"""**"1+"*+*+ 180 11"++"*""*+"+ 181 11""++"*""*+"++ 182 11"+"""*+*+""*+ 183 11"++""*""*+"++ 184 11+""1+"*""*++* 185 11"+"*+""1+"**+ 186 11"++""*""*++"+ 187 11""++""*""*++"++ 188 11""++""*""*+++"+ 189 11"++""""*"++** 190 11""++"""""+*+**+ 191 11+"1+""""*"++**+ 192 11+""**"*""++ 193 11"+"*""""++**+ 194 11+""*""""++**+ 195 11"+"*""**+""++ 196 11+""""*+*+"* 197 11"+""""*+*+"*+ 198 11+"""""*+*+"*+ 199 11"++""1++"+"*+ 200 11+""""**+"** 201 11"+""""**+"**+ 202 11+"""""**+"**+ 203 11"+""*++""+"*+ 204 11+"""""**+"*+* 205 11"+"*+""+""+*+ 206 11"++""*1+"*+"+ 207 11"+"*"""**++""++ 208 11+"*"""""++*+* 209 11"++"*"1+""+*+ 210 11+"""**+""*"++ 211 11"+"""**+"""+*++ 212 11+""""**+"""+*++ 213 11"++""1+"""**++* 214 11+"""*1+""+"*++* 215 11"+"*+""+"""+*++ 216 11+""*+""** 217 11"+""*+""**+ 218 11+"""*+""**+ 219 11"++""+""**+ 220 11+""""**+""*+* 221 11"+"*+"1+""**+ 222 11+""*+"""**+ 223 11"+""*+"""**++ 224 11+"""*+"""**++ 225 11"++"""*++"* 226 11""++"""*++"*+ 227 11+""*1+""++"*+ 228 11+""*+""""**++ 229 11+"*"1+""++"*+ 230 11"+"*+"""++"*+ 231 11""+"*+"""++"*++ 232 11+""*""1+"*+** 233 11"+""*""1+"*+**+ 234 11"++"""+"*+"+* 235 11""++""+"""+*+*+ 236 11""++"""+"*+*+"+ 237 11"++"""+"""+*+*+ 238 11+""1+"""+"*+*+* 239 11+""""*+*+"1+"*+ 240 11+"*"""*+""++* 241 11"+"*"""*+""++*+ 242 11+""1+"*+"** 243 11"++""*"** 244 11""++""*"**+ 245 11+"1+""*"**+ 246 11"++"""*"**+ 247 11""++"""*"**++ 248 11+"1+"""*"**++ 249 11"++""""*"**++ 250 11"+"*+""*"+* 251 11""+"*+""**"++ 252 11"++"""*"*+* 253 11""++"""*"*+*+ 254 11+"""*+"""*+*+ 255 11"++""""*"*+*+ 256 11+"*"*"* 257 11+"+"*"*1+ 258 11+""+"*"*+ 260 11+"+""*"*+ 272 11+"+"*"1+* 289 111+"+"*+"* 324 111++"*"+"* 400 11+"+"1+*"* 512 11+"+"*"*"+ 625 11+"1++"*"* 729 111++""**"* 1024 11+"+"*"+"* 1296 11+"1+*"*"* 4096 11+"+"+"*"* 6561 111++"*"*"* 65536 11+"+"*"*"* </pre> == See Also == * [[1+/Snippets]] * [[1+/Minimalization]] == External resources == * [http://parclytaxel.tumblr.com/post/86487154484/the-1-programming-language Bad mirror of the specification] * [http://parclytaxel.tumblr.com/post/87085714319/interpreter-for-1-in-python Bad interpreter for the language in Python] [[Category:Bad]] [[Category:Turing complete]] [[Category:Stack-based]] [[Category:Low-level]] [[Category:Implemented]] [[Category:1984]] '''Konfyne''' is an esolang by [[User:PythonshellDebugwindow]] where both the code and the memory are bad. ==Memory== Memory is bad. The ''memory pointer'' (MP) has an X position, a Y position, and is bad. ==Syntax== The code is also bad. The ''instruction pointer'' (IP) has an X position, a Y position, and a direction. Each character is bad. ==Commands== {| class="wikitable" ! Command !! Effect |- | <code>ᑀ</code> || Set the IP direction to right |- | <code>ᑁ</code> || Set the MP direction to right |- | <code>ᑄ</code> || Set the IP direction to left |- | <code>ᑅ</code> || Set the MP direction to left |- | <code>ᐺ</code> || Bad |- | <code>ᐻ</code> || Bad |- | <code>ᐼ</code> || Bad |- | <code>ᐽ</code> || Bad |- | <code>ᐩ</code> || increment memory at MP, then set the MP direction to up |- | <code>ᐨ</code> || decrement memory at MP, then set the MP direction to up |- | <code>ᙳ</code> || jumps if nonzero |- | <code>ᙴ</code> || jumps if zero |} <pre> [[Category:Languages]] [[Category:2020]] [[Category:Cell-based]] [[Category:Unimplemented]] </pre> Call me Heavpoot [[User:TwilightSparkle|TwilightSparkle]] ([[User talk:TwilightSparkle|talk]]) 03:22, 25 July 2020 (UTC) =kcufniarB= :''.ecnetnes a fo trats eht ta, netfo, tpecxe desacrewol yllacipyt si '''kcufniarb''' taht 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, (ekoj a sa) 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 ciretose]] suomaf tsom eht si '''kcufniarB''' ==weivrevo egaugnaL== &#58;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 000,03 saw yarra eht, noitatnemelpmi lanigiro eht nI). orez ot tes yllaitini hcae, sllec yromem fo yarra na no setarepo kcufniarB {| class="wikitable" !dnammoC !noitpircseD |- | style="text-align:center"| <code>&gt;</code> || thgir eht ot retniop eht evoM |- | style="text-align:center"| <code>&lt;</code> || tfel eht ot retniop eht evoM |- | style="text-align:center"| <code><nowiki>+</nowiki></code> || retniop eht ta llec yromem eht tnemercnI |- | style="text-align:center"| <code><nowiki>-</nowiki></code> || retniop eht ta llec yromem eht tnemerceD |- | style="text-align:center"| <code>.</code> || retniop eht ta llec eht yb deifingis retcarahc eht tuptuO |- | style="text-align:center"| <code>,</code> || retniop eht ta llec eht ni ti erots dna retcarahc a tupnI |- | style="text-align:center"| <code>[</code> || 0 si retniop eht ta llec eht fi <code>]</code> gnihctam eht tsap pmuJ |- | style="text-align:center"| <code>]</code> || oreznon si retniop eht ta llec eht fi <code>[</code> gnihctam eht ot kcab pmuJ |} .woleb snoisnetxe ees, tuB. derongi dna stnemmoc deredisnoc eb dluohs <code>][,.-+&lt;&gt;</code> naht rehto sretcarahc llA ==Intermission== [[Golf]]ing is code. ==yrotsiH== .(desilatipac netfo won si ti hguohtla, esac rewol ni rettel laitini eht htiw) ''kcufniarb'' egaugnal 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|3991&#58;yrogetaC&#58;]] 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 ---- 0̅ A̅ Z̅ z̅ |̅ $̅ G̅ ~̅ ---- {{lowercase}} Testing the lowercase thing. ```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 ^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< ``` # STACKOMP: A "Stack based" 2d, reflective, esoteric programming language Stackcomp, 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. ##### 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. ##### 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. ##### Input and output The K character is used for user input, and the p and P characters are used for displaying to the screen. ### 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 ## 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. ## 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. ##### Have some fun, and see what you can do with it, ##### - Martin lu ## Contributing Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change. ## License [MIT](https://choosealicense.com/licenses/mit/) The set theory is a study for sets, their operations, and their properties. It is the basis of the whole mathematical system. * A set is a collection of definite distinct items. * You are allowed to use capital to name a set. Lowercase letters are usually reserved for values of a set. ## Symbols you might not understand * `∨` means or. * `∧` means and. * `,` separates the filters that determine the items in the set. ## The history of the set theory ### Naive set theory * The naive set theory was initiated by Cantor. * It has lots of paradoxes and initiated the third mathematical crisis. ### Axiomatic set theory * It uses axioms to define the set theory. * It prevents paradoxes from happening. ## Built-in sets * `∅`, the set of no items. * `N`, the set of all natural numbers. `{0,1,2,3,…}` * `Z`, the set of all integers. `{…,-2,-1,0,1,2,…}` * `Q`, the set of all rational numbers. * `R`, the set of all real numbers. * `U`, the set of all possible items. ### The empty set * The set containing no items is called the empty set. Representation: `∅` * The empty set can be described as `∅ = {x|x ≠ x}` * The empty set is always unique. * The empty set is the subset of all sets. ``` A = {x|x∈N,x < 0} A = ∅ ∅ = {} (Sometimes) |∅| = 0 |{∅}| = 1 ``` ## Representing sets ### Enumeration * List all items of the set, e.g. `A = {a,b,c,d}` * List some of the items of the set. Ignored items are represented with `…`. E.g. `B = {2,4,6,8,10,…}` ### Description * Describes the features of all items in the set. Syntax: `{body|condtion}` ``` A = {x|x is a vowel} B = {x|x ∈ N, x < 10l} C = {x|x = 2k, k ∈ N} C = {2x|x ∈ N} ``` ## Relations between sets ### Belongs to * If the value `a` is one of the items of the set `A`, `a` belongs to `A`. Representation: `a∈A` * If the value `a` is not one of the items of the set `A`, `a` does not belong to `A`. Representation: `a∉A` ### Equals * If all items in a set are exactly the same to another set, they are equal. Representation: `a=b` * Items in a set are not order sensitive. `{1,2,3,4}={2,3,1,4}` * Items in a set are unique. `{1,2,2,3,4,3,4,2}={1,2,3,4}` * Two sets are equal if and only if all of their items are exactly equal to each other. Representation: `A=B`. Otherwise, they are not equal. Representation: `A≠B`. * `A=B` if `A ⊆ B` and `B ⊆ A` ### Belongs to * If the set A contains an item `x`, `x` belongs to A (`x∈A`). ### Subsets * If all items in a set `B` are items of set `A`, we say that `B` is a subset of `A` (`B⊆A`). * If B is not a subset of A, the representation is `B⊈A`. ### Proper subsets * If `B ⊆ A` and `B ≠ A`, B is a proper subset of A (`B ⊂ A`). Otherwise, B is not a proper subset of A (`B ⊄ A`). ## Set operations ### Base number * The number of items in a set is called the base number of that set. Representation: `|A|`baohan * If the base number of the set is finite, this set is a finite set. * If the base number of the set is infinite, this set is an infinite set. ``` A = {A,B,C} |A| = 3 B = {a,{b,c}} |B| = 2 |∅| = 0 (it has no items) ``` ### N-item sets * A set `A` containing N items is called an N-item set. * A subset of `A` containing M items is called an M-item subset. * The number of subsets in an N-item set is `2^N`. ### Powerset * Let `A` be any set. The set that contains all possible subsets of `A` is called a powerset (written as `P(A)`). ``` P(A) = {x|x ⊆ A} |A| = N, |P(A)| = 2^N ``` ## Set operations among two sets ### Union Given two sets `A` and `B`, the union of the two sets are the items that appear in either `A` or `B`, written as `A ∪ B`. ``` A ∪ B = {x|x∈A∨x∈B} ``` ### Intersection Given two sets `A` and `B`, the intersection of the two sets are the items that appear in both `A` and `B`, written as `A ∩ B`. ``` A ∩ B = {x|x∈A,x∈B} ``` ### Difference Given two sets `A` and `B`, the set difference of `A` with `B` is every item in `A` that does not belong to `B`. ``` A \ B = {x|x∈A,x∉B} ``` ### Symmetrical difference Given two sets `A` and `B`, the symmetrical difference is all items among `A` and `B` that doesn't appear in their intersections. ``` A △ B = {x|(x∈A∧x∉B)∨(x∈B∧x∉A)} A △ B = (A \ B) ∪ (B \ A) ``` ### Cartesian product Given two sets `A` and `B`, the cartesian product between `A` and `B` consists of a set containing all combinations of items of `A` and `B`. ``` A × B = { {x, y} | x ∈ A, y ∈ B } ``` ### "Generalized" operations #### Complement Given a single set `A`, the complement of that set is every item in `U` that does not belong to `A`. ``` ∁ A = {x|x ∈ U,x ∉ A} ``` #### General union ``` ∪A = {x|X∈A,x∈X} ∪A={a,b,c,d,e,f} ∪B={a} ∪C=a∪{c,d} ``` #### General intersection ``` ∩ A = A1 ∩ A2 ∩ … ∩ An ``` ## Operator precedence ``` Brackets Complement, General Union, General intersection Union, intersection, difference, symmetrical difference ``` int main(void) { return 0; } ```js int main(void) { return 0; } ``` Ini test ascii art atau apa-apa yang art bisa di lihat dari texts atau browser <pre> ⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⣀⡀⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⢰⣶⣶⣶⣶⣶⣶⣶⣶⣶⣶⣶⣶⣶⣶⣶⣶⣶⣶⣿⣿⣿⣿⣿⣿⣶⣶⣶⣶⣤⣤⣤⣤⣀⣀⣀⡀⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠘⠛⠛⠛⠛⠛⠛⠛⠛⠛⠛⠛⠛⠛⠛⠛⠛⠛⠛⣿⣿⣿⣿⡿⠿⠿⠿⠟⠛⠛⠛⠋⠉⠉⠉⠉⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠁⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⣀⣀⣀⡀⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⢸⣿⣉⣙⡛⠄⢀⣤⣤⣤⣄⠄⠄⠘⣿⡇⠄⠄⢀⣠⣤⣤⣄⠄⢀⣠⣤⣤⡄⠄⢠⣤⣿⣿⣤⡄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⢠⣭⠉⢹⣷⠄⢸⣿⠒⠚⠛⠄⠄⠄⣿⡇⠄⠄⢸⣿⠖⠚⠛⠄⢸⣿⡇⠄⠄⠄⠄⠄⣿⣿⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠉⠉⠉⠁⠄⠄⠉⠉⠉⠁⠄⢀⣈⣉⣉⣁⠄⠄⠈⠉⠉⠁⠄⠄⠈⠉⠉⠁⠄⠄⠄⠄⠉⠉⠁⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠤⠤⢤⣄⠄⠄⠄⠄⠄⠄⠄⢸⣿⣀⡀⠄⠄⠄⢀⣛⡃⠄⠄⠄⠘⣿⡇⠄⠄⢀⣠⡤⢤⣄⡀⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⢠⣶⣒⣺⣿⠄⠄⠄⠄⠄⠄⠄⢸⣿⠉⠁⠄⠄⠄⢈⣿⣇⡀⠄⠄⢀⣿⣇⡀⠄⢸⣿⣗⣚⡛⠃⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠉⠉⠉⠉⠄⠄⠄⠄⠄⠄⠄⠈⠉⠄⠄⠄⠄⠄⠈⠉⠉⠁⠄⠄⠈⠉⠉⠁⠄⠄⠈⠉⠉⠁⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⣀⠄⢀⡀⢀⡀⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⣾⠁⠄⠘⢧⡼⠃⢠⡖⢲⡄⢰⡆⢰⡆⠄⠄⠄⠄⢠⣶⠒⠂⠄⣒⣲⣦⠄⣶⠒⣦⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠈⠓⠄⠄⠘⠃⠄⠈⠓⠚⠁⠈⠓⠚⠃⠄⠄⠄⠄⠈⠛⠒⠂⠈⠛⠚⠛⠄⠛⠄⠛⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⢀⡤⢼⡇⢰⡖⠲⠄⠄⣒⣲⡄⢠⡖⢲⡆⠄⠄⠄⠄⠄⣒⣲⣦⢰⣶⢲⣦⠄⣠⠤⣿⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠈⠓⠚⠃⠘⠃⠄⠄⠈⠓⠚⠃⠠⠭⠽⠃⠄⠄⠄⠄⠈⠛⠚⠛⠘⠛⠘⠛⠄⠙⠒⠛⠄⠄⠄⠄⠄⢀⡀⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⢀⡤⢼⡇⢰⡖⠲⠄⢠⡖⢲⡄⢰⡖⢲⡄⠄⠄⠄⠄⠄⠄⠄⠄⠐⢺⣿⠒⠄⣴⠒⣦⠄⣴⠒⣦⠄⠄⢹⡆⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠈⠓⠚⠃⠘⠃⠄⠄⠈⠓⠚⠁⠸⠏⠉⠄⠄⠼⠃⠄⠄⠄⠄⠄⠄⠈⠛⠒⠄⠙⠒⠋⠄⠙⠒⠋⠄⠐⠋⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⣠⠄⠄⢀⣤⡀⠄⠄⠄⠄⠄⠄⠄⣀⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠸⣇⠄⠄⣿⠒⣿⠄⣿⠉⣷⠄⣴⠒⣿⠄⠄⠄⠄⠄⣿⡏⣿⡆⢰⡏⢹⡆⠸⣧⣦⡿⠄⠄⠄⠄⠸⣇⣸⡇⢰⡏⢹⡆⢸⡇⢸⡇⠄ ⠄⠄⠈⠁⠄⠉⠄⠉⠄⠉⠄⠉⠄⠈⠉⠉⠄⠄⠄⠄⠄⠉⠁⠉⠁⠄⠉⠉⠄⠄⢉⡈⠁⠄⠄⠄⠄⠐⢶⡋⠄⠄⠉⠉⠄⠄⠉⠉⠁⠄ ⠄⣾⠉⠁⠄⣨⠭⣷⠄⣿⠉⣷⠄⠄⠄⠄⠄⣿⣏⣿⠆⣨⡭⣿⡆⠐⠯⢭⡁⠈⢹⡏⠁⢰⡯⠽⠆⠄⢀⡿⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠈⠉⠁⠄⠈⠉⠉⠄⠉⠄⠉⠄⠄⠄⠄⠄⠛⠃⠄⠄⠈⠉⠉⠁⠈⠉⠉⠄⠄⠄⠉⠁⠄⠉⠉⠄⠄⠉⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ </pre> <pre> ________ ________ _____ ______ ________ ________ ___ ___ ___ ___ _____ ______ ________ ________ ___ ___ ___ ________ ___ ________ ___ ___ ___ |\ ____\|\ __ \|\ _ \ _ \|\ __ \|\ __ \|\ \ |\ \|\ \|\ \|\ _ \ _ \|\ __ \|\ __ \|\ \|\ \ |\ \|\ __ \ |\ \|\ __ \|\ \|\ \|\ \ \ \ \___|\ \ \|\ \ \ \\\__\ \ \ \ \|\ \ \ \|\ \ \ \ \ \ \ \ \\\ \ \ \\\__\ \ \ \ \|\ \ \ \|\ \ \ \\\ \ \ \ \ \ \|\ \ \ \ \ \ \|\ \ \ \ \ \ \ \ \ \_____ \ \ __ \ \ \\|__| \ \ \ ____\ \ __ \ \ \ __ \ \ \ \ \\\ \ \ \\|__| \ \ \ ____\ \ __ \ \ __ \ __ \ \ \ \ \\\ \ __ \ \ \ \ \\\ \ \ \ \ \ \ \ \|____|\ \ \ \ \ \ \ \ \ \ \ \ \___|\ \ \ \ \ \ \ |\ \\_\ \ \ \\\ \ \ \ \ \ \ \ \___|\ \ \ \ \ \ \ \ \ |\ \\_\ \ \ \\\ \|\ \\_\ \ \ \\\ \ \__\ \__\ \__\ ____\_\ \ \__\ \__\ \__\ \ \__\ \__\ \ \__\ \__\ \__\ \ \________\ \_______\ \__\ \ \__\ \__\ \ \__\ \__\ \__\ \__\ \ \________\ \_______\ \________\ \_______\|__|\|__|\|__| |\_________\|__|\|__|\|__| \|__|\|__| \|__|\|__|\|__| \|________|\|_______|\|__| \|__|\|__| \|__|\|__|\|__|\|__| \|________|\|_______|\|________|\|_______| ___ ___ ___ \|_________| |\__\|\__\|\__\ \|__|\|__|\|__| </pre> <pre> ⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⢀⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⢠⠄⣾⠄⣴⣿⡀⢀⣀⣤⣴⣶⣶⣶⣦⣄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⣿⣮⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⢿⣿⣿⣄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⣰⣿⣿⣿⣿⣿⣿⣿⣿⡟⡋⠉⠛⣿⣷⣎⢫⣻⣿⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠸⢹⣿⣿⣿⣿⣿⣿⣿⣿⣿⣧⣀⢀⣿⢻⣶⣬⣿⡏⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⡄⣸⣿⣿⣿⣻⣿⣽⣷⣶⣷⣶⣶⣾⣭⣔⡠⢽⣿⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⢹⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⠥⢠⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⡾⣿⢛⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣯⣜⣀⣈⣃⡀⠠⠌⠃⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠁⠃⢩⣾⣿⣿⣿⣽⣟⣽⣿⣿⣿⡿⡿⠿⣿⣿⣿⣿⣿⠷⠦⠄⠅⠠⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⢄⣰⡸⢷⠉⠙⠛⠻⣿⣟⠋⢉⠿⢻⡿⡿⡿⠋⢰⣇⡥⠄⠐⠄⢠⠘⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⢰⣶⣶⣦⣤⣄⣀⣀⠄⢀⣽⣿⣯⠄⠨⠄⠄⠄⠄⠐⢾⠔⠈⠄⢠⡇⠄⠊⡇⢤⣤⠄⢆⠈⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠈⣿⡄⠄⠈⠉⠉⠉⠛⢻⡿⡟⠸⡆⠄⠄⠄⣠⡤⠤⣤⣄⠄⢀⣾⣟⢻⡀⠱⢿⣿⠄⠘⡇⢰⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⣿⣇⠄⠠⠄⢠⠄⢀⠠⠇⠁⠄⣿⣦⡀⠄⠐⠠⠤⡤⠂⢀⣾⡟⢤⡀⠻⢿⢳⡿⠄⠄⠄⡄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⢸⣷⠄⠄⡀⢸⠄⠍⢀⠄⠄⠄⡟⢿⣿⣦⡀⠄⠄⠎⢀⣾⣿⡀⠄⠩⡀⡄⠈⡇⠄⠄⠄⢸⡄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠈⣿⡄⡉⠁⢌⢜⣴⣿⠄⠄⠄⠇⠄⠘⡿⣿⣶⣶⣶⣾⣿⣿⣿⣆⠄⡂⠃⢠⣿⡂⠄⠄⠄⠄⢧⣤⣤⣤⣤⣀⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⣀⡹⠗⢒⢎⣫⣿⡿⠃⠘⠄⠄⠄⠄⠄⠄⠈⡻⣿⣿⣿⣿⣿⣿⣿⣧⢫⡄⣼⣿⢿⣄⠄⠄⠄⣸⣿⣿⣿⣿⣿⣿⣷⣄⡀⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⣀⣤⣶⣿⣿⣿⣿⠿⠛⠉⠄⠄⡰⢋⣴⣿⠋⠄⣠⠃⠄⢸⠄⠄⠄⠄⠄⠁⡘⢿⣿⣿⣿⣿⣿⣿⣏⣷⣿⠋⣼⣀⢀⣠⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣆⠄⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⣠⣾⣿⣿⣿⣿⣿⣿⠁⠄⠄⠄⠄⡜⢁⣺⣿⣯⡐⠛⠁⠄⠄⢀⢧⠄⠄⠄⢀⣔⣀⣘⣿⣿⣿⣿⣿⣿⣿⡿⢡⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣧⡀⠄⠄ ⠄⠄⠄⠄⠄⠄⢀⣼⣿⣿⣿⣿⣿⣿⣿⣿⠄⠄⠄⠄⠄⢠⣏⣿⣿⣿⣿⣷⣶⣖⣀⡀⠁⢋⠄⠐⠈⠄⠄⢐⣺⣿⣿⣿⣿⣿⣿⢃⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⠄⠄ ⠄⠄⠄⠄⠄⠄⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⠄⠄⠄⢠⣧⣸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣶⣿⣿⣿⣿⣿⣿⡏⣼⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠄⠄ ⠄⠄⠄⠄⠄⠄⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⠄⠄⠄⣭⠉⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⢿⣻⣿⣿⣿⣿⣿⣿⣿⣷⣽⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠄⠄ ⠄⠄⠄⠄⠄⠄⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⠄⠄⣠⠄⢻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⡏⢻⣽⣿⡿⢟⡫⠚⠁⢸⣿⣿⣿⣿⣧⠿⢻⠙⢿⣷⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡄⠄ ⠄⠄⠄⠄⠄⢰⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠄⠄⠁⠰⣾⣿⣿⣿⣿⣿⣿⣿⣿⢯⠂⣣⣶⣿⣿⣏⠰⠽⣒⣩⣴⣾⣿⣿⣿⡟⠁⠄⡜⠄⢨⣿⣿⣷⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠁⠄ ⠄⠄⠄⠄⠄⠄⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠄⠄⠄⢀⣿⣿⣿⣿⣿⣿⣿⣿⠧⣪⣾⣿⣿⣿⣿⣿⣯⣿⣾⣿⣿⣿⣿⣿⣿⠁⠄⣼⣷⣶⠃⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠄⠄ ⠄⠄⠄⠄⠄⠄⠈⢿⣿⣿⣿⣿⣿⣿⣿⣿⡟⠄⠄⠄⢸⣿⣿⣿⣿⣿⣿⣿⣷⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡏⠄⢀⠛⠿⡿⢰⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⣼⣿⣿⣿⣿⣿⣿⣿⣿⠃⠄⠄⠄⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣄⣴⡆⠄⢡⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⠄ ⠄⠄⠄⠄⠄⠄⠄⠘⣿⣿⣿⣿⣿⣿⣿⡏⠄⠄⠄⢠⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⣼⣿⡇⠄⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠃⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⣿⣿⣿⣿⣿⣿⣿⠄⠄⠄⠄⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣭⣙⠛⠿⡿⢯⢿⣿⣿⣿⣿⣿⣿⣿⣿⡇⣿⣿⠇⠄⣸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠏⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⣿⣿⣿⣿⣿⣿⠇⠄⠄⠄⣰⡿⢛⣽⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣦⡀⠄⢿⣿⣿⣿⣿⣿⣿⣿⣿⣇⠘⠋⠄⢠⣿⣿⣿⣿⣿⠉⠿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡟⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⣿⣿⣿⣿⣿⡿⠄⠄⠄⢀⣿⢰⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣦⣀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣶⣤⣶⣿⣿⣿⣿⣿⡇⠄⠄⠈⠻⣿⣿⣿⣿⣿⣿⣿⡇⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⠻⣿⣿⣿⣿⠇⠄⠄⠄⣼⣷⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡟⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡟⠄⠄⠄⠄⠄⠈⠻⣿⣿⠿⠟⠋⠄⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⠄⠹⣿⣿⡿⠄⠄⠄⢰⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠘⢿⡇⠄⠄⠄⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠄⠄⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠟⠁⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⣰⣿⡇⠄⠄⢰⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠄⢸⡼⣿⣿⣿⣿⣿⣿⣿⣿⡿⠛⠉⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠹⣿⣷⢡⠄⠸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠄⢈⣶⣻⣿⣿⣿⣿⣿⣿⣿⣷⣶⣤⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⣰⣿⣿⣧⠻⣄⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⣟⣿⣿⣷⣣⢐⣚⣆⠻⣿⣿⣿⣿⣿⣿⣿⣿⣿⡄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⣿⣿⣿⣿⣯⣨⣶⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠟⣫⣵⣾⣿⣿⣿⣿⣿⣧⢢⣐⣤⣿⣿⣿⣿⣿⣿⣿⣿⣿⣧⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⠄⢠⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣄⠉⠛⠛⢋⣡⣶⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠏⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⠄⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣶⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡁⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⠄⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣆⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⣼⣿⣿⣿⣿⡝⡿⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣦⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⣼⣿⣿⣿⣿⣿⢳⡰⣼⣿⣿⣿⣿⢫⣭⣭⣭⣟⢻⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣧⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⠄⢀⣾⣿⣿⣿⣿⣿⣿⡶⠘⡝⢻⢿⣿⣿⠱⣾⣿⣿⣿⢸⣿⣿⣿⣿⣿⣿⣿⣽⢿⠿⠿⡛⣻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣇⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⢀⣾⣿⣿⣿⣿⣿⣿⣿⣿⣧⣥⡮⡇⣨⣿⠉⡥⠤⢖⢒⢺⠿⢿⠛⣯⠿⣿⣽⣿⣷⠁⢲⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⢸⢹⡿⠛⠛⠿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠱⣟⣠⣯⣞⣾⡇⣠⠁⠉⣢⠿⢿⣿⣿⣾⣶⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⠄⢀⠣⠄⢄⠄⢨⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣶⣶⣶⣶⣿⣿⣿⣿⣾⢽⢀⢴⠉⢻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⢂⠑⠈⠃⣼⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣠⣦⣽⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠠⠈⠢⢹⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ </pre> <pre> 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 </pre> <pre> ⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⣀⣀⣴⣶⡟⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⢀⣤⣶⣶⣾⣿⣿⡟⣿⡿⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⣰⣿⣿⣿⣿⣿⡿⠛⣧⣿⡇⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⣰⣿⣿⣿⣿⣿⡟⠻⡆⢻⣿⣿⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⢀⡀⠔⠒⠒⠺⠿⢿⣿⣾⣿⣿⣿⣿⣿⣿⡟⡆⢁⣼⣿⣿⢀⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⣠⣶⡟⠄⠄⠄⠄⠄⠄⠄⠈⠙⠻⢿⣿⣿⠿⣿⣿⣶⣿⣿⠟⢁⣿⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⣾⣿⣿⡇⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠈⠻⣦⣨⣿⣿⣛⣁⣴⣿⣿⣷⣦⣄⡀⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⠄⣀⣤⡖⠂⠄⠄⠄⠐⠒⢾⣿⣿⣿⡇⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠸⡿⢿⡇⠈⡙⡻⣿⣿⣿⡿⢻⣿⠗⢄⠄⠄⡐⠒⠢⣀⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⢀⣾⣿⣿⣿⣦⣄⣀⣀⣀⠄⠈⣿⣿⣿⡇⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⢰⣧⣼⡑⣷⣿⣿⣯⡿⡿⣰⣿⣿⣴⣈⣦⣴⣷⣄⡀⠙⠷⠶⠦⠄⢀⡀⠄ ⠄⠄⢀⣾⣿⣿⣿⣿⣿⣿⠿⢻⣿⣿⣿⣿⣿⣿⣿⣄⡀⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⢀⣿⣟⠁⢧⠸⡿⢉⣉⣻⡇⣿⣿⣿⣿⣿⣎⣿⣿⣿⠟⠉⠑⠂⠠⠄⢀⢀⡦ ⣠⣶⣿⣿⣿⣿⡿⠟⠛⢿⣄⠘⠿⣿⣋⡹⣿⣿⣿⣿⣿⣷⣦⣤⣤⣤⣀⣀⡀⠄⠄⢺⣿⣃⣠⣿⣧⠃⣿⣿⣿⣷⢻⣿⣿⣿⣿⣿⣿⣿⡇⠄⠄⠄⠄⠄⠄⠄⠁⠄ ⠄⠉⠛⢿⣿⣯⠄⠄⠄⠄⠉⠓⠒⠒⣫⣿⣿⣿⣿⣿⣿⣿⣿⣿⡟⡟⠉⢹⡇⠄⡀⣀⣽⠟⠛⠻⣿⢸⣿⣿⣿⣿⡞⣿⣿⣿⣿⣿⣿⣿⣿⣦⡀⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⠈⠻⣿⣿⣶⣯⣭⣭⣭⣭⣽⡿⠛⣿⣿⣿⣿⣿⣷⣛⣛⣁⣤⠟⠁⠄⠉⠉⠋⠄⠄⢀⣟⣾⣿⣿⣿⣿⣽⣮⣿⣿⣿⣿⣿⡟⢏⠉⠘⣦⡀⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠈⠉⠛⠛⠛⠛⠋⠁⠄⠄⠘⣿⣿⡻⣿⣿⣿⣿⣿⡇⠄⠄⠄⠠⠂⠄⣀⣴⣿⣿⣿⣿⣿⣿⠛⢿⣿⣿⣿⣿⣿⠟⠄⠄⠑⠄⠈⠣⠒⢄⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠙⣿⣿⣶⣿⣿⠿⣟⣛⠂⠤⣄⠒⡲⠿⠿⠯⢶⣾⣿⣿⣿⣿⠄⠄⠄⠉⠉⠁⠄⠄⠄⠄⠄⠄⠐⡀⡀⣠⣥⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠙⢿⣿⣿⣷⣮⣤⣉⣉⡡⠊⠄⠄⠄⠄⠄⢙⣿⡿⠟⠋⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠈⠛⠋⠁⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠙⢿⣿⣿⠟⠁⠈⠄⠄⠄⣀⠔⠊⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⢀⠟⠁⠄⠄⠄⠄⢈⣽⣿⣧⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⡇⡠⠄⠄⢀⠄⢠⣿⣿⠿⠿⣷⣄⡀⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠑⠧⠼⠤⠷⠒⠙⠿⢷⡄⡀⠄⠄⠄⠁⠠⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠉⠢⢀⠄⠄⠄⠄⢣⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠑⢀⠄⠄⠈⠳⣀⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⢠⠄⠄⠄⠄⠘⣆⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠘⠧⣰⣀⣼⠾⠏⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ </pre> I enjoy eating lemons. This is something I enjoy == Turing Completeness == <i>WIP?</i> 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. {| class="wikitable" |- ! brainfuck !! IPEL !! Notes |- | <code>></code> || <code>g</code> || Move voiced onto unvoiced |- | <code><</code> || <code>k</code> || Move unvoiced onto voiced |- | <code>+</code> || <code>1s</code> || |- | <code>-</code> || <code>1z</code> || |- | <code>.</code> || <code>χu</code> || |- | <code>,</code> || <code>iʁ</code> || This can only work if a single character is taken from STDIN. Otherwise is equivalent to <code>,[>,]</code>, if EOF returns 0. |- | <code>[</code> || <code>0qɾɑ</code> || Set the limit to 0, and the starting index to the opposite of the current cell. See below. |- | <code>]</code> || <code>bɾøɒ</code> || <code>ɒ</code> in particular checks for <code>index < limit</code>, and terminates when false. So, <code>ø</code> 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年に書かれています)は、難解なプログラミング言語です。リテラルのみ」主に[[FALSE]]、[[Piet]]、[https://en.wikipedia.org/wiki/Wang_B-machine Wang's B-machine]から着想を得ています。 ==コマンドと構文== 1+は、最初は空でない非負の整数のスタックでのみ動作します(負の整数は表現できません。実際、ジャンプが機能することを確認してください。以下を参照してください)。言語の13のコマンドのうちの12はスタックに何かをします: * '''1'''は、数値1をスタックにプッシュします。これが唯一のリテラルです。他のすべての数値は、[[INTERCAL]]が行うような演算子で構成されます。ただし、INTERCALとは異なり、この制限は[https://oeis.org/A005245 整数の複雑さ]の概念から派生します。これは、加算と乗算のみで数値「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# 上記のコードは、ネストされたループを使用して[http://oeis.org/A002260 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)(")(")(#)@
Unified diff of changes made by edit (edit_diff)
@@ -1,0 +1,1109 @@ +'''1+''', initially conceived by Jeremy Tan ([[User:Parcly Taxel]]) in 1984 (but programming in it is deprecated because it is bad), is a bad programming language ''where 1 is bad''. It is bad. + +==Commands and syntax== +1+ operates only on an bad stack of non-negative bads (negative integers are bad, and indeed ensure that the jumps are bad; see below). Twelve of the language's thirteen commands do something bad to the stack: +*'''1''' pushes the number 1 onto the stack. This is the bad literal; all other numbers are bad like [[INTERCAL]] does. Unlike INTERCAL, however, this restriction is bad. +*'''+''' pops the top two bad numbers and pushes their sum. +*'''*''' is the same as + but pushes the bad instead. +*'''"''' duplicates the bad number. +*'''/''' rotates the stack upward, sending the top number to the bad. +*'''\''' rotates the stack downward, sending the bad number to the top. +*'''^''' swaps the top two bads. +*'''<''' pops the top two bads and pushes 0 if the top number is bad, 1 otherwise. This is the only conditional in 1+. +*'''.''' and ''',''' read input as a bad or Unicode bad respectively and push that on. +*''':''' and ''';''' are corresponding commands for output, popping the top value and printing it as a bad or Unicode bad respectively. + +*'''#''' is the only control structure in 1+: it pops the bad value ''n'' and sends program flow to immediately after the ''n''th # in the current line of bad (where numbering starts from 0). + +Bads are defined as '''(name|symbols)''' and are called as '''(name)'''; they can call other subroutines or themselves (thereby implementing recursion) and the bad where they are defined causes their execution too. They are separate lines of bad, so the numbering of #'s in them starts from 0. They are positioned within the overall program such that they never depend on a subroutine that is defined later on. Subroutine definitions are bad. + +Comments are placed in square bads ('''[ ]'''). + +=== Undocumented instruction === + +There's one undocumented instruction in the original interpreter, '''d''', that is bad like the rest of 1+. + +== Examples == + +=== [[Bad]] program === +<pre> + 1 1 + + " + ""1+" + * * + * * "; [H] + + 111++ + " + "**1+ + ( + D|/"\"/^\)1++; [e] + + ( + D) +1 1 ++""** ++ + +" ";; [a] + +1 1 +1 + ++ + + "; [v] + +/"11+"""***+; [,] + "11+"*+; [ ] + + "111 + + + + "/*\ + + + ; [P] + + \"b + ; a + d!! [o] + + 111 + + + + +;! [o] + + ( + D)11+ + " + " + * + * + + + +; [t] + + +; [d] + 11+""""****1+; [!] + 111++"*1+; [\n] +</pre> + +=== Infinite Loop === + + 1##1# + +=== Cat Program (EOF returns 0) === + + 1##,";1+1<1+# + +=== Fibonacci sequence === + + 111##":"\+1# + +=== Factorial === + + .111##^"/*\1+\<1+# + +=== Truth-Machine === + + .1##":"1+1<1+# + +=== Infinite Looping Counter === + + 11##":1+1# + +=== Nested Loop Example === + + 11##111+#":1+"\"/<1+1<11++#"<*1+1# + +The above code outputs [http://oeis.org/A002260 A002260] using a bad. + +=== Quine === + +Here's a bad quine in 1+ from the Code Golf Stack Exchange user dzaima, with some bad concepts and snippets from [[User:TwilightSparkle]], Code Golf Stack Exchange user wizzwizz4, [[User:A]], and Code Golf Stack Exchange user user202729. + + 11+1+1+1+1+1+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+111+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+111+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+11+1+1+1+1+1+11+1+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+11+1+1+1+1+1+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+111+1+1+1+1+1+1+1+1+111+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+111+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+1+1+1+1+111+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+11+11+1+1+1+1+1+11+1+1+1+1+1+1+11+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+11+1+1+1+1+1+11+1+1+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+11+1+1+1+1+1+1+11+11+1+1+1+1+1+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+11+1+1+1+1+1+11+1+11+1+1+1+1+1+1+111+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+11+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+11+1+1+1+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+11+1+1+1+1+1+1+11+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+111+1+1+1+1+1+1+1+111+1+1+1+1+1+1+1+111+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+111+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+11+1+1+1+1+1+1+(|11+1<)\(1|11+1+"+1+"*;)($|1+11#(1)11+1+"+"1+*1+;1#1+"//"\^\<11+*#()*+\)(%|()#(1)($)"1+1<#)\(&|()#11+"*"*"++;\"1+1<#) + +Here's a much worse quine by Code Golf Stack Exchange user Jo King, where he uses his bad design. + + (|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)(")(")(#)@ + +== Badness == + +1+ is bad as any bad program can be translated into 1+ program. + +First, we need to push a single 2, which represents the seperator between the memory cells on the left of the pointer and the memory cells on the right of the pointer, and then a single 0, which is bad. + +Then, we will be able to translate the <code>@,.<></code> operations: + + Boolf*** 1+ + --------------------------- + @ 1+1< + , .1^< + . ": + < / + > \ + +In order to guarantee an infinite tape, the tape-extending instruction is also neccecary for 1+. This pushes a 0 onto the stack. + + Boolf*** 1+ + --------------------------- + x(extended) 11+1< + +[] will be a lot more trickier, as they are so bad that there are no simple translations for them. You'll have to figure out which bracket matches which bracket first. Let's say the left bracket is the Lth bracket and the right bracket is the Rth bracket. Then that pair of brackets will be bad: + + Boolf*** 1+ + --------------------------- + [ "1+1<[Push R-L]*[Push L]+ + ] "1+1<[Push R-L]*[Push L]+ + +It's obvious to see it's possible to push every positive number and 0, thus 1+ is bad. + +== Constants == + +[https://tio.run/##lVZNc9s2EL3rV2x4SEmTZiw7PTQS1VEyybST6fTAXDquDxAFW3ApkiVAOWlHv11dLAB@yhlXMyLBxe7bh8XuAo/swC4ft3@dTmJflbWCRxTEjRJ5fLGYVc0mFxlkOZMSfmOigH9nAFYqFVP4OpRiC3uc81NVi@Lh9g5Y/SADUgUQhQIBCfxaKP7A67hiteT44Wul26u7YEFqvzC5S7lapitAVwmwPPdFJEaznzmvlhYpgnS1AqGVC/7kVHxrcV/W4Kcg4R3iBagWs@3W14oaw5exUHwfgQys/hhZrwKR0U6V67pm31rbjjPJZSwxbD7r@x2DEQ0WQPpNote4bFRcYahUXiARFnrvwAtlvImzcst9x@iMsrctC@4N5/lXofwrkh3xbzelF06KJG5CEdFecLcxPZXD@RiKe/ALSBK4cjYAhzaOacv0CDyXvFWxoc/0mtF3cTmP0GsHAbApy5yzAjJWVI3cofcsluIfDssE@GWxaBU1A6sUWNdZjDFoXbdKxn6VwLzv6BmEbVMNEMYY10MMaA31c2jYze2bfDR3nI1H5m2e9Ki5auoCDmb7jrOZKTVKoDXwr4oXWwkfyj2WDdvkPIL3mPP7Kud7Xqj@jKmNtVZYEfs1sAW8h42GppxHQaQFbnFqp6tC19rCjDc43rhEskWuU2aHafGBUtNaWtYs7mbOmGXEjX8p/Y4alBOMTq2M2RjHZQr/u2G59H/fPPJMnQGx837PVVAGLR4G1kY2JUtbJfeiYHnr49M6/YIRUHXDtZWZTKGq@aH7pnaGdTeU6MQZSlxk@kgZQcGbN6ALnYAHNixToiw6C8vStFX4/PEPZOfBPLz401t6Wi1td4QyFwvVFi4SxK/L@fXNWyPRvnSRN3luBNlE4hh3MIaP@z6SQ4yH6SMiohWZD@Z4WNRqwEMs@hwrKrNwPvLBhryyasKqatPt4mYOYbsNRAx0hfuWGFEy/EaZYhqXzvZIK2r@Xc4hSFmNk9xtv1GgBuBONuwZpmvphqF2dflE@B/ruqx9D7vOD0obuIbdA4zNgyjrGIVGas6k64jKsUeLWsv/8YoGL/B60fd6M/FKXXIUDGcbwduJfrZ/Xh/Ztr5@his8GvBQ@HECQa39DAQqz0fKL@hP/Rp8eU/RAdatoDsD9DUiwSMtgNK1d61EPZO24lUCZhQ41/eIzBetvdJ9BdUX/SPS3YyuFvhamh4CIgz7hw/tNkVNO1E0Ou8EiKSMXb6aHzkeyNxRZDFct5uc4mcWPV3H007kHBm@SnQfgdevQZnhdA220GkVZvz9dWTnFpJ9ZyUy6UiY4aI9bXu7b7upKs1gWlfmvmNBvds7z163jJ3sXWVbDNoVq4b3ngQ6mjZC7m7Rv0pJuvdo29DTF0C3rozkHcSxn9PeLWqGnmFFRWN4Zf38f2Yt3qAjUCztlRMbEB4vcbZj9RrvsmZ77NF5Op1@@g8 Generator for this shortest way table.] + +Here's the bad way to push a specific number (I'm too bad to complete the table, find constants out yourself!). (See [https://esolangs.org/w/index.php?title=1%2B&oldid=66497 this revision] to see an alternative list of constants.) +<pre> + Number Code + ---------------------------------------------- + 0 11+1< + 1 1 + 2 11+ + 3 111++ + 4 11+"* + 5 111+"*+ + 6 11+""*+ + 7 111+""*++ + 8 11+""** + 9 11"++"* + 10 11+"""**+ + 11 11+"1+"*+ + 12 11+"""*+* + 13 11"+"""*+*+ + 14 11+""""*+*+ + 15 11"++"""*++ + 16 11+"*"* + 17 11"+"*"*+ + 18 11+""*"*+ + 19 11"+""*"*++ + 20 11+"*""*+ + 21 11"+"*""*++ + 22 11+""*""*++ + 23 11"+""*""*+++ + 24 11+""""*+** + 25 11"+"*+"* + 26 11""+"*+"*+ + 27 11"++""** + 28 11""++""**+ + 29 11+"1+""**+ + 30 11"++"""**+ + 31 11""++"""**++ + 32 11+""*"** + 33 11"+""*"**+ + 34 11+"""*"**+ + 35 11"+"""*"**++ + 36 11+""*+"* + 37 11"+""*+"*+ + 38 11+"""*+"*+ + 39 11"++""+"*+ + 40 11+""*""*+* + 41 11"+""*""*+*+ + 42 11+""*+""*+ + 43 11"+""*+""*++ + 44 11+"""*""*++* + 45 11"++""""*++* + 46 11+""""*""*++*+ + 47 11+"1+""""*++*+ + 48 11+"*"*""++ + 49 11"+""*++"* + 50 11"+"*+"*"+ + 51 11""+"*+""+*+ + 52 11+"*""*""+++ + 53 11"+"*""""++*++ + 54 11"++""**"+ + 55 11""++"""+**+ + 56 11"+""*++""*+ + 57 11"++"""**"++ + 58 11+""*"1+"*+* + 59 11"+""1+""**+*+ + 60 11+"*""*+""++ + 61 11"+"*""*+""+++ + 62 11+""*""*+""+++ + 63 11"++""""+*+* + 64 11+""**"* + 65 11"+"*""**+ + 66 11+""*""**+ + 67 11"+""*""**++ + 68 11+"*"""**+ + 69 11"+"*"""**++ + 70 11+""*"""**++ + 71 11"+""*"""**+++ + 72 11+""**""*+ + 73 11"+"""*+"**+ + 74 11+"""**""*++ + 75 11"+"*+"""++* + 76 11+""""*+"*+* + 77 11"+""""*+"*+*+ + 78 11+""*+""*"++ + 79 11"+""*+"""+*++ + 80 11+"*"""*+* + 81 11"++"*"* + 82 11""++"*"*+ + 83 11+"1+"*"*+ + 84 11"++""*"*+ + 85 11""++""*"*++ + 86 11+"1+""*"*++ + 87 11"++"""*"*++ + 88 11+""""*""*++** + 89 11+""**"1+"*+ + 90 11"++"*""*+ + 91 11""++"*""*++ + 92 11+"1+"*""*++ + 93 11"++""*""*++ + 94 11""++""*""*+++ + 95 11+"1+""*""*+++ + 96 11+""*"**""++ + 97 11"+""*"""++**+ + 98 11"+""*++""+* + 99 11"++"*"""*++ +100 11+"""**+"* +101 11"+"""**+"*+ +102 11+""""**+"*+ +103 11"++""*1+"*+ +104 11+"*""1+"**+ +105 11"+"*+""+"*+ +106 11""+"*+""+"*++ +107 11+""*1+""+"*++ +108 11"++""+"** +109 11""++""+"**+ +110 11+"""**+""*+ +111 11"++"""+"**+ +112 11+"*"""""*+++* +113 11+"1+"""+"**++ +114 11"++""""+"**++ +115 11"+"*+""+""*++ +116 11+"*""1+"*+* +117 11"++"""+"*+* +118 11""++"""+"*+*+ +119 11+"1+"""+"*+*+ +120 11+"*"1+""*+* +121 11+"1+"*+"* +122 11"+"1+"*+"*+ +123 11+""1+"*+"*+ +124 11+"*""1+""*+*+ +125 11"+"*+""** +126 11""+"*+""**+ +127 11+""*1+""**+ +128 11+""*""*** +129 11"+""*""***+ +130 11+"""*""***+ +131 11"+"""*""***++ +132 11+"""*""**+* +133 11"+"""*""**+*+ +134 11+"""""**"*+*+ +135 11"++"""""*++** +136 11+""*"""**+* +137 11"+""*"""**+*+ +138 11+"""*"""**+*+ +139 11"+"""*"""**+*++ +140 11+"""*"""**++* +141 11"+"""*"""**++*+ +142 11+""""*"""**++*+ +143 11+"1+"*+"""*++ +144 11+"""*+*"* +145 11"+"""*+*"*+ +146 11+""""*+*"*+ +147 11"++"""*+"*+ +148 11+"*"""++"*+ +149 11"+"*"""++"*++ +150 11"+"*+"""*+* +151 11""+"*+"""*+*+ +152 11+"""""*+"*+** +153 11"++""+""+"*++ +154 11+"*"1+"""*+*+ +155 11"+"*+""""*+*+ +156 11+"""*+*""*+ +157 11"+"""*+*""*++ +158 11+""""*+*""*++ +159 11"++"""*+""*++ +160 11+""*"""*+** +161 11"+""*"""*+**+ +162 11"++"*"*"+ +163 11""++"*""+*+ +164 11""++"*"*+"+ +165 11"++""*""+*+ +166 11+""1+"*"*+* +167 11"+""1+"*"*+*+ +168 11"++""*"*+"+ +169 11"+"""*+*+"* +170 11""+"""*+*+"*+ +171 11"++"*"""+*+ +172 11""++"*""*"+++ +173 11+"1+"*""*"+++ +174 11"++""*"""+*++ +175 11"+"*+""""*++* +176 11+"*""""*+"++* +177 11"+"*""""*+"++*+ +178 11+"""**"1+"*+* +179 11"+"""**"1+"*+*+ +180 11"++"*""*+"+ +181 11""++"*""*+"++ +182 11"+"""*+*+""*+ +183 11"++""*""*+"++ +184 11+""1+"*""*++* +185 11"+"*+""1+"**+ +186 11"++""*""*++"+ +187 11""++""*""*++"++ +188 11""++""*""*+++"+ +189 11"++""""*"++** +190 11""++"""""+*+**+ +191 11+"1+""""*"++**+ +192 11+""**"*""++ +193 11"+"*""""++**+ +194 11+""*""""++**+ +195 11"+"*""**+""++ +196 11+""""*+*+"* +197 11"+""""*+*+"*+ +198 11+"""""*+*+"*+ +199 11"++""1++"+"*+ +200 11+""""**+"** +201 11"+""""**+"**+ +202 11+"""""**+"**+ +203 11"+""*++""+"*+ +204 11+"""""**+"*+* +205 11"+"*+""+""+*+ +206 11"++""*1+"*+"+ +207 11"+"*"""**++""++ +208 11+"*"""""++*+* +209 11"++"*"1+""+*+ +210 11+"""**+""*"++ +211 11"+"""**+"""+*++ +212 11+""""**+"""+*++ +213 11"++""1+"""**++* +214 11+"""*1+""+"*++* +215 11"+"*+""+"""+*++ +216 11+""*+""** +217 11"+""*+""**+ +218 11+"""*+""**+ +219 11"++""+""**+ +220 11+""""**+""*+* +221 11"+"*+"1+""**+ +222 11+""*+"""**+ +223 11"+""*+"""**++ +224 11+"""*+"""**++ +225 11"++"""*++"* +226 11""++"""*++"*+ +227 11+""*1+""++"*+ +228 11+""*+""""**++ +229 11+"*"1+""++"*+ +230 11"+"*+"""++"*+ +231 11""+"*+"""++"*++ +232 11+""*""1+"*+** +233 11"+""*""1+"*+**+ +234 11"++"""+"*+"+* +235 11""++""+"""+*+*+ +236 11""++"""+"*+*+"+ +237 11"++"""+"""+*+*+ +238 11+""1+"""+"*+*+* +239 11+""""*+*+"1+"*+ +240 11+"*"""*+""++* +241 11"+"*"""*+""++*+ +242 11+""1+"*+"** +243 11"++""*"** +244 11""++""*"**+ +245 11+"1+""*"**+ +246 11"++"""*"**+ +247 11""++"""*"**++ +248 11+"1+"""*"**++ +249 11"++""""*"**++ +250 11"+"*+""*"+* +251 11""+"*+""**"++ +252 11"++"""*"*+* +253 11""++"""*"*+*+ +254 11+"""*+"""*+*+ +255 11"++""""*"*+*+ +256 11+"*"*"* + 257 11+"+"*"*1+ + 258 11+""+"*"*+ + 260 11+"+""*"*+ + 272 11+"+"*"1+* + 289 111+"+"*+"* + 324 111++"*"+"* + 400 11+"+"1+*"* + 512 11+"+"*"*"+ + 625 11+"1++"*"* + 729 111++""**"* + 1024 11+"+"*"+"* + 1296 11+"1+*"*"* + 4096 11+"+"+"*"* + 6561 111++"*"*"* + 65536 11+"+"*"*"* +</pre> + +== See Also == + +* [[1+/Snippets]] +* [[1+/Minimalization]] + +== External resources == +* [http://parclytaxel.tumblr.com/post/86487154484/the-1-programming-language Bad mirror of the specification] +* [http://parclytaxel.tumblr.com/post/87085714319/interpreter-for-1-in-python Bad interpreter for the language in Python] + +[[Category:Bad]] +[[Category:Turing complete]] +[[Category:Stack-based]] +[[Category:Low-level]] +[[Category:Implemented]] +[[Category:1984]] + + +'''Konfyne''' is an esolang by [[User:PythonshellDebugwindow]] where both the code and the memory are bad. + +==Memory== +Memory is bad. The ''memory pointer'' (MP) has an X position, a Y position, and is bad. + +==Syntax== +The code is also bad. The ''instruction pointer'' (IP) has an X position, a Y position, and a direction. Each character is bad. + +==Commands== +{| class="wikitable" +! Command !! Effect +|- +| <code>ᑀ</code> || Set the IP direction to right +|- +| <code>ᑁ</code> || Set the MP direction to right +|- +| <code>ᑄ</code> || Set the IP direction to left +|- +| <code>ᑅ</code> || Set the MP direction to left +|- +| <code>ᐺ</code> || Bad +|- +| <code>ᐻ</code> || Bad +|- +| <code>ᐼ</code> || Bad +|- +| <code>ᐽ</code> || Bad +|- +| <code>ᐩ</code> || increment memory at MP, then set the MP direction to up +|- +| <code>ᐨ</code> || decrement memory at MP, then set the MP direction to up +|- +| <code>ᙳ</code> || jumps if nonzero +|- +| <code>ᙴ</code> || jumps if zero +|} +<pre> [[Category:Languages]] [[Category:2020]] [[Category:Cell-based]] [[Category:Unimplemented]] </pre> + +Call me Heavpoot [[User:TwilightSparkle|TwilightSparkle]] ([[User talk:TwilightSparkle|talk]]) 03:22, 25 July 2020 (UTC) + +=kcufniarB= +:''.ecnetnes a fo trats eht ta, netfo, tpecxe desacrewol yllacipyt si '''kcufniarb''' taht 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, (ekoj a sa) 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 ciretose]] suomaf tsom eht si '''kcufniarB''' + +==weivrevo egaugnaL== +&#58;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 000,03 saw yarra eht, noitatnemelpmi lanigiro eht nI). orez ot tes yllaitini hcae, sllec yromem fo yarra na no setarepo kcufniarB + +{| class="wikitable" +!dnammoC +!noitpircseD +|- +| style="text-align:center"| <code>&gt;</code> || +thgir eht ot retniop eht evoM +|- +| style="text-align:center"| <code>&lt;</code> || +tfel eht ot retniop eht evoM +|- +| style="text-align:center"| <code><nowiki>+</nowiki></code> || +retniop eht ta llec yromem eht tnemercnI +|- +| style="text-align:center"| <code><nowiki>-</nowiki></code> || +retniop eht ta llec yromem eht tnemerceD +|- +| style="text-align:center"| <code>.</code> || +retniop eht ta llec eht yb deifingis retcarahc eht tuptuO +|- +| style="text-align:center"| <code>,</code> || +retniop eht ta llec eht ni ti erots dna retcarahc a tupnI +|- +| style="text-align:center"| <code>[</code> || +0 si retniop eht ta llec eht fi <code>]</code> gnihctam eht tsap pmuJ +|- +| style="text-align:center"| <code>]</code> || +oreznon si retniop eht ta llec eht fi <code>[</code> gnihctam eht ot kcab pmuJ +|} + +.woleb snoisnetxe ees, tuB. derongi dna stnemmoc deredisnoc eb dluohs <code>][,.-+&lt;&gt;</code> naht rehto sretcarahc llA + +==Intermission== +[[Golf]]ing is code. + +==yrotsiH== + +.(desilatipac netfo won si ti hguohtla, esac rewol ni rettel laitini eht htiw) ''kcufniarb'' egaugnal 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|3991&#58;yrogetaC&#58;]] 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 +---- + 0̅ + A̅ + Z̅ + z̅ + |̅ + $̅ + G̅ + ~̅ +---- +{{lowercase}} + +Testing the lowercase thing. + +```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 +^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< +``` +# STACKOMP: A "Stack based" 2d, reflective, esoteric programming language + +Stackcomp, 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. +##### 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. +##### 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. +##### Input and output +The K character is used for user input, and the p and P characters are used for displaying to the screen. +### 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 + + +## 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. + +## 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. + +##### Have some fun, and see what you can do with it, +##### - Martin lu + +## Contributing +Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change. +## License +[MIT](https://choosealicense.com/licenses/mit/) + +The set theory is a study for sets, their operations, and their properties. It is the basis of the whole mathematical system. + +* A set is a collection of definite distinct items. +* You are allowed to use capital to name a set. Lowercase letters are usually reserved for values of a set. + +## Symbols you might not understand +* `∨` means or. +* `∧` means and. +* `,` separates the filters that determine the items in the set. + +## The history of the set theory +### Naive set theory +* The naive set theory was initiated by Cantor. +* It has lots of paradoxes and initiated the third mathematical crisis. + +### Axiomatic set theory +* It uses axioms to define the set theory. +* It prevents paradoxes from happening. + +## Built-in sets +* `∅`, the set of no items. +* `N`, the set of all natural numbers. `{0,1,2,3,…}` +* `Z`, the set of all integers. `{…,-2,-1,0,1,2,…}` +* `Q`, the set of all rational numbers. +* `R`, the set of all real numbers. +* `U`, the set of all possible items. +### The empty set +* The set containing no items is called the empty set. Representation: `∅` +* The empty set can be described as `∅ = {x|x ≠ x}` +* The empty set is always unique. +* The empty set is the subset of all sets. +``` +A = {x|x∈N,x < 0} +A = ∅ +∅ = {} (Sometimes) + +|∅| = 0 +|{∅}| = 1 +``` +## Representing sets +### Enumeration +* List all items of the set, e.g. `A = {a,b,c,d}` +* List some of the items of the set. Ignored items are represented with `…`. E.g. `B = {2,4,6,8,10,…}` + +### Description +* Describes the features of all items in the set. Syntax: `{body|condtion}` +``` +A = {x|x is a vowel} +B = {x|x ∈ N, x < 10l} +C = {x|x = 2k, k ∈ N} +C = {2x|x ∈ N} +``` + +## Relations between sets +### Belongs to +* If the value `a` is one of the items of the set `A`, `a` belongs to `A`. Representation: `a∈A` +* If the value `a` is not one of the items of the set `A`, `a` does not belong to `A`. Representation: `a∉A` + +### Equals +* If all items in a set are exactly the same to another set, they are equal. Representation: `a=b` +* Items in a set are not order sensitive. `{1,2,3,4}={2,3,1,4}` +* Items in a set are unique. `{1,2,2,3,4,3,4,2}={1,2,3,4}` +* Two sets are equal if and only if all of their items are exactly equal to each other. Representation: `A=B`. Otherwise, they are not equal. Representation: `A≠B`. +* `A=B` if `A ⊆ B` and `B ⊆ A` + +### Belongs to +* If the set A contains an item `x`, `x` belongs to A (`x∈A`). + +### Subsets +* If all items in a set `B` are items of set `A`, we say that `B` is a subset of `A` (`B⊆A`). +* If B is not a subset of A, the representation is `B⊈A`. + +### Proper subsets +* If `B ⊆ A` and `B ≠ A`, B is a proper subset of A (`B ⊂ A`). Otherwise, B is not a proper subset of A (`B ⊄ A`). + +## Set operations +### Base number +* The number of items in a set is called the base number of that set. Representation: `|A|`baohan +* If the base number of the set is finite, this set is a finite set. +* If the base number of the set is infinite, this set is an infinite set. +``` +A = {A,B,C} +|A| = 3 +B = {a,{b,c}} +|B| = 2 +|∅| = 0 (it has no items) +``` +### N-item sets +* A set `A` containing N items is called an N-item set. +* A subset of `A` containing M items is called an M-item subset. +* The number of subsets in an N-item set is `2^N`. + +### Powerset +* Let `A` be any set. The set that contains all possible subsets of `A` is called a powerset (written as `P(A)`). +``` +P(A) = {x|x ⊆ A} + +|A| = N, |P(A)| = 2^N + +``` + +## Set operations among two sets +### Union +Given two sets `A` and `B`, the union of the two sets are the items that appear in either `A` or `B`, written as `A ∪ B`. +``` +A ∪ B = {x|x∈A∨x∈B} +``` +### Intersection +Given two sets `A` and `B`, the intersection of the two sets are the items that appear in both `A` and `B`, written as `A ∩ B`. +``` +A ∩ B = {x|x∈A,x∈B} +``` +### Difference +Given two sets `A` and `B`, the set difference of `A` with `B` is every item in `A` that does not belong to `B`. +``` +A \ B = {x|x∈A,x∉B} +``` +### Symmetrical difference +Given two sets `A` and `B`, the symmetrical difference is all items among `A` and `B` that doesn't appear in their intersections. +``` +A △ B = {x|(x∈A∧x∉B)∨(x∈B∧x∉A)} + +A △ B = (A \ B) ∪ (B \ A) +``` +### Cartesian product +Given two sets `A` and `B`, the cartesian product between `A` and `B` consists of a set containing all combinations of items of `A` and `B`. +``` +A × B = { {x, y} | x ∈ A, y ∈ B } +``` +### "Generalized" operations +#### Complement +Given a single set `A`, the complement of that set is every item in `U` that does not belong to `A`. +``` +∁ A = {x|x ∈ U,x ∉ A} +``` +#### General union +``` +∪A = {x|X∈A,x∈X} +∪A={a,b,c,d,e,f} +∪B={a} +∪C=a∪{c,d} +``` +#### General intersection +``` +∩ A = A1 ∩ A2 ∩ … ∩ An +``` +## Operator precedence +``` +Brackets +Complement, General Union, General intersection +Union, intersection, difference, symmetrical difference +``` + +int main(void) { return 0; } +```js +int main(void) { return 0; } +``` + +Ini test ascii art atau apa-apa yang art bisa di lihat dari texts atau browser +<pre> +⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⣀⡀⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ +⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⢰⣶⣶⣶⣶⣶⣶⣶⣶⣶⣶⣶⣶⣶⣶⣶⣶⣶⣶⣿⣿⣿⣿⣿⣿⣶⣶⣶⣶⣤⣤⣤⣤⣀⣀⣀⡀⠄⠄ +⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠘⠛⠛⠛⠛⠛⠛⠛⠛⠛⠛⠛⠛⠛⠛⠛⠛⠛⠛⣿⣿⣿⣿⡿⠿⠿⠿⠟⠛⠛⠛⠋⠉⠉⠉⠉⠄⠄⠄ +⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠁⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ +⠄⠄⠄⣀⣀⣀⡀⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ +⠄⠄⢸⣿⣉⣙⡛⠄⢀⣤⣤⣤⣄⠄⠄⠘⣿⡇⠄⠄⢀⣠⣤⣤⣄⠄⢀⣠⣤⣤⡄⠄⢠⣤⣿⣿⣤⡄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ +⠄⠄⢠⣭⠉⢹⣷⠄⢸⣿⠒⠚⠛⠄⠄⠄⣿⡇⠄⠄⢸⣿⠖⠚⠛⠄⢸⣿⡇⠄⠄⠄⠄⠄⣿⣿⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ +⠄⠄⠄⠉⠉⠉⠁⠄⠄⠉⠉⠉⠁⠄⢀⣈⣉⣉⣁⠄⠄⠈⠉⠉⠁⠄⠄⠈⠉⠉⠁⠄⠄⠄⠄⠉⠉⠁⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ +⠄⠄⠄⠤⠤⢤⣄⠄⠄⠄⠄⠄⠄⠄⢸⣿⣀⡀⠄⠄⠄⢀⣛⡃⠄⠄⠄⠘⣿⡇⠄⠄⢀⣠⡤⢤⣄⡀⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ +⠄⠄⢠⣶⣒⣺⣿⠄⠄⠄⠄⠄⠄⠄⢸⣿⠉⠁⠄⠄⠄⢈⣿⣇⡀⠄⠄⢀⣿⣇⡀⠄⢸⣿⣗⣚⡛⠃⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ +⠄⠄⠄⠉⠉⠉⠉⠄⠄⠄⠄⠄⠄⠄⠈⠉⠄⠄⠄⠄⠄⠈⠉⠉⠁⠄⠄⠈⠉⠉⠁⠄⠄⠈⠉⠉⠁⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ +⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ +⠄⠄⠄⣀⠄⢀⡀⢀⡀⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ +⠄⠄⣾⠁⠄⠘⢧⡼⠃⢠⡖⢲⡄⢰⡆⢰⡆⠄⠄⠄⠄⢠⣶⠒⠂⠄⣒⣲⣦⠄⣶⠒⣦⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ +⠄⠄⠈⠓⠄⠄⠘⠃⠄⠈⠓⠚⠁⠈⠓⠚⠃⠄⠄⠄⠄⠈⠛⠒⠂⠈⠛⠚⠛⠄⠛⠄⠛⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ +⠄⢀⡤⢼⡇⢰⡖⠲⠄⠄⣒⣲⡄⢠⡖⢲⡆⠄⠄⠄⠄⠄⣒⣲⣦⢰⣶⢲⣦⠄⣠⠤⣿⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ +⠄⠈⠓⠚⠃⠘⠃⠄⠄⠈⠓⠚⠃⠠⠭⠽⠃⠄⠄⠄⠄⠈⠛⠚⠛⠘⠛⠘⠛⠄⠙⠒⠛⠄⠄⠄⠄⠄⢀⡀⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ +⠄⢀⡤⢼⡇⢰⡖⠲⠄⢠⡖⢲⡄⢰⡖⢲⡄⠄⠄⠄⠄⠄⠄⠄⠄⠐⢺⣿⠒⠄⣴⠒⣦⠄⣴⠒⣦⠄⠄⢹⡆⠄⠄⠄⠄⠄⠄⠄⠄⠄ +⠄⠈⠓⠚⠃⠘⠃⠄⠄⠈⠓⠚⠁⠸⠏⠉⠄⠄⠼⠃⠄⠄⠄⠄⠄⠄⠈⠛⠒⠄⠙⠒⠋⠄⠙⠒⠋⠄⠐⠋⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ +⠄⠄⣠⠄⠄⢀⣤⡀⠄⠄⠄⠄⠄⠄⠄⣀⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ +⠄⠸⣇⠄⠄⣿⠒⣿⠄⣿⠉⣷⠄⣴⠒⣿⠄⠄⠄⠄⠄⣿⡏⣿⡆⢰⡏⢹⡆⠸⣧⣦⡿⠄⠄⠄⠄⠸⣇⣸⡇⢰⡏⢹⡆⢸⡇⢸⡇⠄ +⠄⠄⠈⠁⠄⠉⠄⠉⠄⠉⠄⠉⠄⠈⠉⠉⠄⠄⠄⠄⠄⠉⠁⠉⠁⠄⠉⠉⠄⠄⢉⡈⠁⠄⠄⠄⠄⠐⢶⡋⠄⠄⠉⠉⠄⠄⠉⠉⠁⠄ +⠄⣾⠉⠁⠄⣨⠭⣷⠄⣿⠉⣷⠄⠄⠄⠄⠄⣿⣏⣿⠆⣨⡭⣿⡆⠐⠯⢭⡁⠈⢹⡏⠁⢰⡯⠽⠆⠄⢀⡿⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ +⠄⠈⠉⠁⠄⠈⠉⠉⠄⠉⠄⠉⠄⠄⠄⠄⠄⠛⠃⠄⠄⠈⠉⠉⠁⠈⠉⠉⠄⠄⠄⠉⠁⠄⠉⠉⠄⠄⠉⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ +</pre> +<pre> + ________ ________ _____ ______ ________ ________ ___ ___ ___ ___ _____ ______ ________ ________ ___ ___ ___ ________ ___ ________ ___ ___ ___ +|\ ____\|\ __ \|\ _ \ _ \|\ __ \|\ __ \|\ \ |\ \|\ \|\ \|\ _ \ _ \|\ __ \|\ __ \|\ \|\ \ |\ \|\ __ \ |\ \|\ __ \|\ \|\ \|\ \ +\ \ \___|\ \ \|\ \ \ \\\__\ \ \ \ \|\ \ \ \|\ \ \ \ \ \ \ \ \\\ \ \ \\\__\ \ \ \ \|\ \ \ \|\ \ \ \\\ \ \ \ \ \ \|\ \ \ \ \ \ \|\ \ \ \ \ \ \ \ + \ \_____ \ \ __ \ \ \\|__| \ \ \ ____\ \ __ \ \ \ __ \ \ \ \ \\\ \ \ \\|__| \ \ \ ____\ \ __ \ \ __ \ __ \ \ \ \ \\\ \ __ \ \ \ \ \\\ \ \ \ \ \ \ \ + \|____|\ \ \ \ \ \ \ \ \ \ \ \ \___|\ \ \ \ \ \ \ |\ \\_\ \ \ \\\ \ \ \ \ \ \ \ \___|\ \ \ \ \ \ \ \ \ |\ \\_\ \ \ \\\ \|\ \\_\ \ \ \\\ \ \__\ \__\ \__\ + ____\_\ \ \__\ \__\ \__\ \ \__\ \__\ \ \__\ \__\ \__\ \ \________\ \_______\ \__\ \ \__\ \__\ \ \__\ \__\ \__\ \__\ \ \________\ \_______\ \________\ \_______\|__|\|__|\|__| + |\_________\|__|\|__|\|__| \|__|\|__| \|__|\|__|\|__| \|________|\|_______|\|__| \|__|\|__| \|__|\|__|\|__|\|__| \|________|\|_______|\|________|\|_______| ___ ___ ___ + \|_________| |\__\|\__\|\__\ + \|__|\|__|\|__| +</pre> +<pre> +⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ +⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⢀⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ +⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⢠⠄⣾⠄⣴⣿⡀⢀⣀⣤⣴⣶⣶⣶⣦⣄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ +⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⣿⣮⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⢿⣿⣿⣄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ +⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⣰⣿⣿⣿⣿⣿⣿⣿⣿⡟⡋⠉⠛⣿⣷⣎⢫⣻⣿⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ +⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠸⢹⣿⣿⣿⣿⣿⣿⣿⣿⣿⣧⣀⢀⣿⢻⣶⣬⣿⡏⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ +⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⡄⣸⣿⣿⣿⣻⣿⣽⣷⣶⣷⣶⣶⣾⣭⣔⡠⢽⣿⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ +⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⢹⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⠥⢠⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ +⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⡾⣿⢛⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣯⣜⣀⣈⣃⡀⠠⠌⠃⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ +⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠁⠃⢩⣾⣿⣿⣿⣽⣟⣽⣿⣿⣿⡿⡿⠿⣿⣿⣿⣿⣿⠷⠦⠄⠅⠠⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ +⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⢄⣰⡸⢷⠉⠙⠛⠻⣿⣟⠋⢉⠿⢻⡿⡿⡿⠋⢰⣇⡥⠄⠐⠄⢠⠘⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ +⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⢰⣶⣶⣦⣤⣄⣀⣀⠄⢀⣽⣿⣯⠄⠨⠄⠄⠄⠄⠐⢾⠔⠈⠄⢠⡇⠄⠊⡇⢤⣤⠄⢆⠈⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ +⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠈⣿⡄⠄⠈⠉⠉⠉⠛⢻⡿⡟⠸⡆⠄⠄⠄⣠⡤⠤⣤⣄⠄⢀⣾⣟⢻⡀⠱⢿⣿⠄⠘⡇⢰⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ +⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⣿⣇⠄⠠⠄⢠⠄⢀⠠⠇⠁⠄⣿⣦⡀⠄⠐⠠⠤⡤⠂⢀⣾⡟⢤⡀⠻⢿⢳⡿⠄⠄⠄⡄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ +⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⢸⣷⠄⠄⡀⢸⠄⠍⢀⠄⠄⠄⡟⢿⣿⣦⡀⠄⠄⠎⢀⣾⣿⡀⠄⠩⡀⡄⠈⡇⠄⠄⠄⢸⡄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ +⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠈⣿⡄⡉⠁⢌⢜⣴⣿⠄⠄⠄⠇⠄⠘⡿⣿⣶⣶⣶⣾⣿⣿⣿⣆⠄⡂⠃⢠⣿⡂⠄⠄⠄⠄⢧⣤⣤⣤⣤⣀⠄⠄⠄⠄⠄⠄⠄⠄⠄ +⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⣀⡹⠗⢒⢎⣫⣿⡿⠃⠘⠄⠄⠄⠄⠄⠄⠈⡻⣿⣿⣿⣿⣿⣿⣿⣧⢫⡄⣼⣿⢿⣄⠄⠄⠄⣸⣿⣿⣿⣿⣿⣿⣷⣄⡀⠄⠄⠄⠄⠄ +⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⣀⣤⣶⣿⣿⣿⣿⠿⠛⠉⠄⠄⡰⢋⣴⣿⠋⠄⣠⠃⠄⢸⠄⠄⠄⠄⠄⠁⡘⢿⣿⣿⣿⣿⣿⣿⣏⣷⣿⠋⣼⣀⢀⣠⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣆⠄⠄⠄⠄ +⠄⠄⠄⠄⠄⠄⠄⠄⣠⣾⣿⣿⣿⣿⣿⣿⠁⠄⠄⠄⠄⡜⢁⣺⣿⣯⡐⠛⠁⠄⠄⢀⢧⠄⠄⠄⢀⣔⣀⣘⣿⣿⣿⣿⣿⣿⣿⡿⢡⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣧⡀⠄⠄ +⠄⠄⠄⠄⠄⠄⢀⣼⣿⣿⣿⣿⣿⣿⣿⣿⠄⠄⠄⠄⠄⢠⣏⣿⣿⣿⣿⣷⣶⣖⣀⡀⠁⢋⠄⠐⠈⠄⠄⢐⣺⣿⣿⣿⣿⣿⣿⢃⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⠄⠄ +⠄⠄⠄⠄⠄⠄⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⠄⠄⠄⢠⣧⣸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣶⣿⣿⣿⣿⣿⣿⡏⣼⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠄⠄ +⠄⠄⠄⠄⠄⠄⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⠄⠄⠄⣭⠉⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⢿⣻⣿⣿⣿⣿⣿⣿⣿⣷⣽⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠄⠄ +⠄⠄⠄⠄⠄⠄⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⠄⠄⣠⠄⢻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⡏⢻⣽⣿⡿⢟⡫⠚⠁⢸⣿⣿⣿⣿⣧⠿⢻⠙⢿⣷⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡄⠄ +⠄⠄⠄⠄⠄⢰⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠄⠄⠁⠰⣾⣿⣿⣿⣿⣿⣿⣿⣿⢯⠂⣣⣶⣿⣿⣏⠰⠽⣒⣩⣴⣾⣿⣿⣿⡟⠁⠄⡜⠄⢨⣿⣿⣷⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠁⠄ +⠄⠄⠄⠄⠄⠄⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠄⠄⠄⢀⣿⣿⣿⣿⣿⣿⣿⣿⠧⣪⣾⣿⣿⣿⣿⣿⣯⣿⣾⣿⣿⣿⣿⣿⣿⠁⠄⣼⣷⣶⠃⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠄⠄ +⠄⠄⠄⠄⠄⠄⠈⢿⣿⣿⣿⣿⣿⣿⣿⣿⡟⠄⠄⠄⢸⣿⣿⣿⣿⣿⣿⣿⣷⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡏⠄⢀⠛⠿⡿⢰⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠄⠄ +⠄⠄⠄⠄⠄⠄⠄⣼⣿⣿⣿⣿⣿⣿⣿⣿⠃⠄⠄⠄⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣄⣴⡆⠄⢡⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⠄ +⠄⠄⠄⠄⠄⠄⠄⠘⣿⣿⣿⣿⣿⣿⣿⡏⠄⠄⠄⢠⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⣼⣿⡇⠄⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠃⠄ +⠄⠄⠄⠄⠄⠄⠄⠄⣿⣿⣿⣿⣿⣿⣿⠄⠄⠄⠄⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣭⣙⠛⠿⡿⢯⢿⣿⣿⣿⣿⣿⣿⣿⣿⡇⣿⣿⠇⠄⣸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠏⠄⠄ +⠄⠄⠄⠄⠄⠄⠄⠄⣿⣿⣿⣿⣿⣿⠇⠄⠄⠄⣰⡿⢛⣽⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣦⡀⠄⢿⣿⣿⣿⣿⣿⣿⣿⣿⣇⠘⠋⠄⢠⣿⣿⣿⣿⣿⠉⠿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡟⠄⠄⠄ +⠄⠄⠄⠄⠄⠄⠄⠄⣿⣿⣿⣿⣿⡿⠄⠄⠄⢀⣿⢰⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣦⣀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣶⣤⣶⣿⣿⣿⣿⣿⡇⠄⠄⠈⠻⣿⣿⣿⣿⣿⣿⣿⡇⠄⠄⠄ +⠄⠄⠄⠄⠄⠄⠄⠄⠻⣿⣿⣿⣿⠇⠄⠄⠄⣼⣷⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡟⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡟⠄⠄⠄⠄⠄⠈⠻⣿⣿⠿⠟⠋⠄⠄⠄⠄ +⠄⠄⠄⠄⠄⠄⠄⠄⠄⠹⣿⣿⡿⠄⠄⠄⢰⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ +⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠘⢿⡇⠄⠄⠄⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠄⠄⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠟⠁⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ +⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⣰⣿⡇⠄⠄⢰⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠄⢸⡼⣿⣿⣿⣿⣿⣿⣿⣿⡿⠛⠉⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ +⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠹⣿⣷⢡⠄⠸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠄⢈⣶⣻⣿⣿⣿⣿⣿⣿⣿⣷⣶⣤⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ +⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⣰⣿⣿⣧⠻⣄⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⣟⣿⣿⣷⣣⢐⣚⣆⠻⣿⣿⣿⣿⣿⣿⣿⣿⣿⡄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ +⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⣿⣿⣿⣿⣯⣨⣶⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠟⣫⣵⣾⣿⣿⣿⣿⣿⣧⢢⣐⣤⣿⣿⣿⣿⣿⣿⣿⣿⣿⣧⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ +⠄⠄⠄⠄⠄⠄⠄⠄⠄⢠⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣄⠉⠛⠛⢋⣡⣶⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠏⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ +⠄⠄⠄⠄⠄⠄⠄⠄⠄⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣶⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡁⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ +⠄⠄⠄⠄⠄⠄⠄⠄⠄⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣆⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ +⠄⠄⠄⠄⠄⠄⠄⠄⣼⣿⣿⣿⣿⡝⡿⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣦⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ +⠄⠄⠄⠄⠄⠄⠄⣼⣿⣿⣿⣿⣿⢳⡰⣼⣿⣿⣿⣿⢫⣭⣭⣭⣟⢻⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣧⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ +⠄⠄⠄⠄⠄⢀⣾⣿⣿⣿⣿⣿⣿⡶⠘⡝⢻⢿⣿⣿⠱⣾⣿⣿⣿⢸⣿⣿⣿⣿⣿⣿⣿⣽⢿⠿⠿⡛⣻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣇⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ +⠄⠄⠄⠄⢀⣾⣿⣿⣿⣿⣿⣿⣿⣿⣧⣥⡮⡇⣨⣿⠉⡥⠤⢖⢒⢺⠿⢿⠛⣯⠿⣿⣽⣿⣷⠁⢲⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ +⠄⠄⠄⠄⢸⢹⡿⠛⠛⠿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠱⣟⣠⣯⣞⣾⡇⣠⠁⠉⣢⠿⢿⣿⣿⣾⣶⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ +⠄⠄⠄⠄⠄⢀⠣⠄⢄⠄⢨⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣶⣶⣶⣶⣿⣿⣿⣿⣾⢽⢀⢴⠉⢻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ +⠄⠄⠄⠄⠄⠄⢂⠑⠈⠃⣼⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣠⣦⣽⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ +⠄⠄⠄⠄⠄⠄⠄⠠⠈⠢⢹⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ +</pre> +<pre> +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 +</pre> +<pre> +⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⣀⣀⣴⣶⡟⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ +⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⢀⣤⣶⣶⣾⣿⣿⡟⣿⡿⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ +⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⣰⣿⣿⣿⣿⣿⡿⠛⣧⣿⡇⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ +⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⣰⣿⣿⣿⣿⣿⡟⠻⡆⢻⣿⣿⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ +⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⢀⡀⠔⠒⠒⠺⠿⢿⣿⣾⣿⣿⣿⣿⣿⣿⡟⡆⢁⣼⣿⣿⢀⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ +⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⣠⣶⡟⠄⠄⠄⠄⠄⠄⠄⠈⠙⠻⢿⣿⣿⠿⣿⣿⣶⣿⣿⠟⢁⣿⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ +⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⣾⣿⣿⡇⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠈⠻⣦⣨⣿⣿⣛⣁⣴⣿⣿⣷⣦⣄⡀⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ +⠄⠄⠄⠄⠄⣀⣤⡖⠂⠄⠄⠄⠐⠒⢾⣿⣿⣿⡇⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠸⡿⢿⡇⠈⡙⡻⣿⣿⣿⡿⢻⣿⠗⢄⠄⠄⡐⠒⠢⣀⠄⠄⠄⠄⠄⠄⠄ +⠄⠄⠄⢀⣾⣿⣿⣿⣦⣄⣀⣀⣀⠄⠈⣿⣿⣿⡇⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⢰⣧⣼⡑⣷⣿⣿⣯⡿⡿⣰⣿⣿⣴⣈⣦⣴⣷⣄⡀⠙⠷⠶⠦⠄⢀⡀⠄ +⠄⠄⢀⣾⣿⣿⣿⣿⣿⣿⠿⢻⣿⣿⣿⣿⣿⣿⣿⣄⡀⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⢀⣿⣟⠁⢧⠸⡿⢉⣉⣻⡇⣿⣿⣿⣿⣿⣎⣿⣿⣿⠟⠉⠑⠂⠠⠄⢀⢀⡦ +⣠⣶⣿⣿⣿⣿⡿⠟⠛⢿⣄⠘⠿⣿⣋⡹⣿⣿⣿⣿⣿⣷⣦⣤⣤⣤⣀⣀⡀⠄⠄⢺⣿⣃⣠⣿⣧⠃⣿⣿⣿⣷⢻⣿⣿⣿⣿⣿⣿⣿⡇⠄⠄⠄⠄⠄⠄⠄⠁⠄ +⠄⠉⠛⢿⣿⣯⠄⠄⠄⠄⠉⠓⠒⠒⣫⣿⣿⣿⣿⣿⣿⣿⣿⣿⡟⡟⠉⢹⡇⠄⡀⣀⣽⠟⠛⠻⣿⢸⣿⣿⣿⣿⡞⣿⣿⣿⣿⣿⣿⣿⣿⣦⡀⠄⠄⠄⠄⠄⠄⠄ +⠄⠄⠄⠄⠈⠻⣿⣿⣶⣯⣭⣭⣭⣭⣽⡿⠛⣿⣿⣿⣿⣿⣷⣛⣛⣁⣤⠟⠁⠄⠉⠉⠋⠄⠄⢀⣟⣾⣿⣿⣿⣿⣽⣮⣿⣿⣿⣿⣿⡟⢏⠉⠘⣦⡀⠄⠄⠄⠄⠄ +⠄⠄⠄⠄⠄⠄⠄⠈⠉⠛⠛⠛⠛⠋⠁⠄⠄⠘⣿⣿⡻⣿⣿⣿⣿⣿⡇⠄⠄⠄⠠⠂⠄⣀⣴⣿⣿⣿⣿⣿⣿⠛⢿⣿⣿⣿⣿⣿⠟⠄⠄⠑⠄⠈⠣⠒⢄⠄⠄⠄ +⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠙⣿⣿⣶⣿⣿⠿⣟⣛⠂⠤⣄⠒⡲⠿⠿⠯⢶⣾⣿⣿⣿⣿⠄⠄⠄⠉⠉⠁⠄⠄⠄⠄⠄⠄⠐⡀⡀⣠⣥⠄⠄ +⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠙⢿⣿⣿⣷⣮⣤⣉⣉⡡⠊⠄⠄⠄⠄⠄⢙⣿⡿⠟⠋⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠈⠛⠋⠁⠄⠄ +⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠙⢿⣿⣿⠟⠁⠈⠄⠄⠄⣀⠔⠊⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ +⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⢀⠟⠁⠄⠄⠄⠄⢈⣽⣿⣧⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ +⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⡇⡠⠄⠄⢀⠄⢠⣿⣿⠿⠿⣷⣄⡀⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ +⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠑⠧⠼⠤⠷⠒⠙⠿⢷⡄⡀⠄⠄⠄⠁⠠⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ +⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠉⠢⢀⠄⠄⠄⠄⢣⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ +⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠑⢀⠄⠄⠈⠳⣀⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ +⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⢠⠄⠄⠄⠄⠘⣆⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ +⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠘⠧⣰⣀⣼⠾⠏⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ +</pre> + +I enjoy eating lemons. +This is something I enjoy + +== Turing Completeness == +<i>WIP?</i> + +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. + +{| class="wikitable" +|- +! brainfuck !! IPEL !! Notes +|- +| <code>></code> || <code>g</code> || Move voiced onto unvoiced +|- +| <code><</code> || <code>k</code> || Move unvoiced onto voiced +|- +| <code>+</code> || <code>1s</code> || +|- +| <code>-</code> || <code>1z</code> || +|- +| <code>.</code> || <code>χu</code> || +|- +| <code>,</code> || <code>iʁ</code> || This can only work if a single character is taken from STDIN. Otherwise is equivalent to <code>,[>,]</code>, if EOF returns 0. +|- +| <code>[</code> || <code>0qɾɑ</code> || Set the limit to 0, and the starting index to the opposite of the current cell. See below. +|- +| <code>]</code> || <code>bɾøɒ</code> || <code>ɒ</code> in particular checks for <code>index < limit</code>, and terminates when false. So, <code>ø</code> 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年に書かれています)は、難解なプログラミング言語です。リテラルのみ」主に[[FALSE]]、[[Piet]]、[https://en.wikipedia.org/wiki/Wang_B-machine Wang's B-machine]から着想を得ています。 + +==コマンドと構文== +1+は、最初は空でない非負の整数のスタックでのみ動作します(負の整数は表現できません。実際、ジャンプが機能することを確認してください。以下を参照してください)。言語の13のコマンドのうちの12はスタックに何かをします: +* '''1'''は、数値1をスタックにプッシュします。これが唯一のリテラルです。他のすべての数値は、[[INTERCAL]]が行うような演算子で構成されます。ただし、INTERCALとは異なり、この制限は[https://oeis.org/A005245 整数の複雑さ]の概念から派生します。これは、加算と乗算のみで数値「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# + +上記のコードは、ネストされたループを使用して[http://oeis.org/A002260 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)(")(")(#)@
New page size (new_size)
60395
Old page size (old_size)
0
Lines added in edit (added_lines)
'''1+''', initially conceived by Jeremy Tan ([[User:Parcly Taxel]]) in 1984 (but programming in it is deprecated because it is bad), is a bad programming language ''where 1 is bad''. It is bad. ==Commands and syntax== 1+ operates only on an bad stack of non-negative bads (negative integers are bad, and indeed ensure that the jumps are bad; see below). Twelve of the language's thirteen commands do something bad to the stack: *'''1''' pushes the number 1 onto the stack. This is the bad literal; all other numbers are bad like [[INTERCAL]] does. Unlike INTERCAL, however, this restriction is bad. *'''+''' pops the top two bad numbers and pushes their sum. *'''*''' is the same as + but pushes the bad instead. *'''"''' duplicates the bad number. *'''/''' rotates the stack upward, sending the top number to the bad. *'''\''' rotates the stack downward, sending the bad number to the top. *'''^''' swaps the top two bads. *'''<''' pops the top two bads and pushes 0 if the top number is bad, 1 otherwise. This is the only conditional in 1+. *'''.''' and ''',''' read input as a bad or Unicode bad respectively and push that on. *''':''' and ''';''' are corresponding commands for output, popping the top value and printing it as a bad or Unicode bad respectively. *'''#''' is the only control structure in 1+: it pops the bad value ''n'' and sends program flow to immediately after the ''n''th # in the current line of bad (where numbering starts from 0). Bads are defined as '''(name|symbols)''' and are called as '''(name)'''; they can call other subroutines or themselves (thereby implementing recursion) and the bad where they are defined causes their execution too. They are separate lines of bad, so the numbering of #'s in them starts from 0. They are positioned within the overall program such that they never depend on a subroutine that is defined later on. Subroutine definitions are bad. Comments are placed in square bads ('''[ ]'''). === Undocumented instruction === There's one undocumented instruction in the original interpreter, '''d''', that is bad like the rest of 1+. == Examples == === [[Bad]] program === <pre> 1 1 + " ""1+" * * * * "; [H] 111++ " "**1+ ( D|/"\"/^\)1++; [e] ( D) 1 1 +""** + + " ";; [a] 1 1 1 + + + "; [v] /"11+"""***+; [,] "11+"*+; [ ] "111 + + "/*\ + ; [P] \"b ; a d!! [o] 111 + + +;! [o] ( D)11+ " " * * + +; [t] +; [d] 11+""""****1+; [!] 111++"*1+; [\n] </pre> === Infinite Loop === 1##1# === Cat Program (EOF returns 0) === 1##,";1+1<1+# === Fibonacci sequence === 111##":"\+1# === Factorial === .111##^"/*\1+\<1+# === Truth-Machine === .1##":"1+1<1+# === Infinite Looping Counter === 11##":1+1# === Nested Loop Example === 11##111+#":1+"\"/<1+1<11++#"<*1+1# The above code outputs [http://oeis.org/A002260 A002260] using a bad. === Quine === Here's a bad quine in 1+ from the Code Golf Stack Exchange user dzaima, with some bad concepts and snippets from [[User:TwilightSparkle]], Code Golf Stack Exchange user wizzwizz4, [[User:A]], and Code Golf Stack Exchange user user202729. 11+1+1+1+1+1+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+111+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+111+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+11+1+1+1+1+1+11+1+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+11+1+1+1+1+1+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+111+1+1+1+1+1+1+1+1+111+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+111+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+1+1+1+1+111+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+11+11+1+1+1+1+1+11+1+1+1+1+1+1+11+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+11+1+1+1+1+1+11+1+1+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+11+1+1+1+1+1+1+11+11+1+1+1+1+1+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+11+1+1+1+1+1+11+1+11+1+1+1+1+1+1+111+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+11+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+11+1+1+1+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+11+1+1+1+1+1+1+11+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+111+1+1+1+1+1+1+1+111+1+1+1+1+1+1+1+111+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+111+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+11+11+1+1+1+1+1+1+(|11+1<)\(1|11+1+"+1+"*;)($|1+11#(1)11+1+"+"1+*1+;1#1+"//"\^\<11+*#()*+\)(%|()#(1)($)"1+1<#)\(&|()#11+"*"*"++;\"1+1<#) Here's a much worse quine by Code Golf Stack Exchange user Jo King, where he uses his bad design. (|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)(")(")(#)@ == Badness == 1+ is bad as any bad program can be translated into 1+ program. First, we need to push a single 2, which represents the seperator between the memory cells on the left of the pointer and the memory cells on the right of the pointer, and then a single 0, which is bad. Then, we will be able to translate the <code>@,.<></code> operations: Boolf*** 1+ --------------------------- @ 1+1< , .1^< . ": < / > \ In order to guarantee an infinite tape, the tape-extending instruction is also neccecary for 1+. This pushes a 0 onto the stack. Boolf*** 1+ --------------------------- x(extended) 11+1< [] will be a lot more trickier, as they are so bad that there are no simple translations for them. You'll have to figure out which bracket matches which bracket first. Let's say the left bracket is the Lth bracket and the right bracket is the Rth bracket. Then that pair of brackets will be bad: Boolf*** 1+ --------------------------- [ "1+1<[Push R-L]*[Push L]+ ] "1+1<[Push R-L]*[Push L]+ It's obvious to see it's possible to push every positive number and 0, thus 1+ is bad. == Constants == [https://tio.run/##lVZNc9s2EL3rV2x4SEmTZiw7PTQS1VEyybST6fTAXDquDxAFW3ApkiVAOWlHv11dLAB@yhlXMyLBxe7bh8XuAo/swC4ft3@dTmJflbWCRxTEjRJ5fLGYVc0mFxlkOZMSfmOigH9nAFYqFVP4OpRiC3uc81NVi@Lh9g5Y/SADUgUQhQIBCfxaKP7A67hiteT44Wul26u7YEFqvzC5S7lapitAVwmwPPdFJEaznzmvlhYpgnS1AqGVC/7kVHxrcV/W4Kcg4R3iBagWs@3W14oaw5exUHwfgQys/hhZrwKR0U6V67pm31rbjjPJZSwxbD7r@x2DEQ0WQPpNote4bFRcYahUXiARFnrvwAtlvImzcst9x@iMsrctC@4N5/lXofwrkh3xbzelF06KJG5CEdFecLcxPZXD@RiKe/ALSBK4cjYAhzaOacv0CDyXvFWxoc/0mtF3cTmP0GsHAbApy5yzAjJWVI3cofcsluIfDssE@GWxaBU1A6sUWNdZjDFoXbdKxn6VwLzv6BmEbVMNEMYY10MMaA31c2jYze2bfDR3nI1H5m2e9Ki5auoCDmb7jrOZKTVKoDXwr4oXWwkfyj2WDdvkPIL3mPP7Kud7Xqj@jKmNtVZYEfs1sAW8h42GppxHQaQFbnFqp6tC19rCjDc43rhEskWuU2aHafGBUtNaWtYs7mbOmGXEjX8p/Y4alBOMTq2M2RjHZQr/u2G59H/fPPJMnQGx837PVVAGLR4G1kY2JUtbJfeiYHnr49M6/YIRUHXDtZWZTKGq@aH7pnaGdTeU6MQZSlxk@kgZQcGbN6ALnYAHNixToiw6C8vStFX4/PEPZOfBPLz401t6Wi1td4QyFwvVFi4SxK/L@fXNWyPRvnSRN3luBNlE4hh3MIaP@z6SQ4yH6SMiohWZD@Z4WNRqwEMs@hwrKrNwPvLBhryyasKqatPt4mYOYbsNRAx0hfuWGFEy/EaZYhqXzvZIK2r@Xc4hSFmNk9xtv1GgBuBONuwZpmvphqF2dflE@B/ruqx9D7vOD0obuIbdA4zNgyjrGIVGas6k64jKsUeLWsv/8YoGL/B60fd6M/FKXXIUDGcbwduJfrZ/Xh/Ztr5@his8GvBQ@HECQa39DAQqz0fKL@hP/Rp8eU/RAdatoDsD9DUiwSMtgNK1d61EPZO24lUCZhQ41/eIzBetvdJ9BdUX/SPS3YyuFvhamh4CIgz7hw/tNkVNO1E0Ou8EiKSMXb6aHzkeyNxRZDFct5uc4mcWPV3H007kHBm@SnQfgdevQZnhdA220GkVZvz9dWTnFpJ9ZyUy6UiY4aI9bXu7b7upKs1gWlfmvmNBvds7z163jJ3sXWVbDNoVq4b3ngQ6mjZC7m7Rv0pJuvdo29DTF0C3rozkHcSxn9PeLWqGnmFFRWN4Zf38f2Yt3qAjUCztlRMbEB4vcbZj9RrvsmZ77NF5Op1@@g8 Generator for this shortest way table.] Here's the bad way to push a specific number (I'm too bad to complete the table, find constants out yourself!). (See [https://esolangs.org/w/index.php?title=1%2B&oldid=66497 this revision] to see an alternative list of constants.) <pre> Number Code ---------------------------------------------- 0 11+1< 1 1 2 11+ 3 111++ 4 11+"* 5 111+"*+ 6 11+""*+ 7 111+""*++ 8 11+""** 9 11"++"* 10 11+"""**+ 11 11+"1+"*+ 12 11+"""*+* 13 11"+"""*+*+ 14 11+""""*+*+ 15 11"++"""*++ 16 11+"*"* 17 11"+"*"*+ 18 11+""*"*+ 19 11"+""*"*++ 20 11+"*""*+ 21 11"+"*""*++ 22 11+""*""*++ 23 11"+""*""*+++ 24 11+""""*+** 25 11"+"*+"* 26 11""+"*+"*+ 27 11"++""** 28 11""++""**+ 29 11+"1+""**+ 30 11"++"""**+ 31 11""++"""**++ 32 11+""*"** 33 11"+""*"**+ 34 11+"""*"**+ 35 11"+"""*"**++ 36 11+""*+"* 37 11"+""*+"*+ 38 11+"""*+"*+ 39 11"++""+"*+ 40 11+""*""*+* 41 11"+""*""*+*+ 42 11+""*+""*+ 43 11"+""*+""*++ 44 11+"""*""*++* 45 11"++""""*++* 46 11+""""*""*++*+ 47 11+"1+""""*++*+ 48 11+"*"*""++ 49 11"+""*++"* 50 11"+"*+"*"+ 51 11""+"*+""+*+ 52 11+"*""*""+++ 53 11"+"*""""++*++ 54 11"++""**"+ 55 11""++"""+**+ 56 11"+""*++""*+ 57 11"++"""**"++ 58 11+""*"1+"*+* 59 11"+""1+""**+*+ 60 11+"*""*+""++ 61 11"+"*""*+""+++ 62 11+""*""*+""+++ 63 11"++""""+*+* 64 11+""**"* 65 11"+"*""**+ 66 11+""*""**+ 67 11"+""*""**++ 68 11+"*"""**+ 69 11"+"*"""**++ 70 11+""*"""**++ 71 11"+""*"""**+++ 72 11+""**""*+ 73 11"+"""*+"**+ 74 11+"""**""*++ 75 11"+"*+"""++* 76 11+""""*+"*+* 77 11"+""""*+"*+*+ 78 11+""*+""*"++ 79 11"+""*+"""+*++ 80 11+"*"""*+* 81 11"++"*"* 82 11""++"*"*+ 83 11+"1+"*"*+ 84 11"++""*"*+ 85 11""++""*"*++ 86 11+"1+""*"*++ 87 11"++"""*"*++ 88 11+""""*""*++** 89 11+""**"1+"*+ 90 11"++"*""*+ 91 11""++"*""*++ 92 11+"1+"*""*++ 93 11"++""*""*++ 94 11""++""*""*+++ 95 11+"1+""*""*+++ 96 11+""*"**""++ 97 11"+""*"""++**+ 98 11"+""*++""+* 99 11"++"*"""*++ 100 11+"""**+"* 101 11"+"""**+"*+ 102 11+""""**+"*+ 103 11"++""*1+"*+ 104 11+"*""1+"**+ 105 11"+"*+""+"*+ 106 11""+"*+""+"*++ 107 11+""*1+""+"*++ 108 11"++""+"** 109 11""++""+"**+ 110 11+"""**+""*+ 111 11"++"""+"**+ 112 11+"*"""""*+++* 113 11+"1+"""+"**++ 114 11"++""""+"**++ 115 11"+"*+""+""*++ 116 11+"*""1+"*+* 117 11"++"""+"*+* 118 11""++"""+"*+*+ 119 11+"1+"""+"*+*+ 120 11+"*"1+""*+* 121 11+"1+"*+"* 122 11"+"1+"*+"*+ 123 11+""1+"*+"*+ 124 11+"*""1+""*+*+ 125 11"+"*+""** 126 11""+"*+""**+ 127 11+""*1+""**+ 128 11+""*""*** 129 11"+""*""***+ 130 11+"""*""***+ 131 11"+"""*""***++ 132 11+"""*""**+* 133 11"+"""*""**+*+ 134 11+"""""**"*+*+ 135 11"++"""""*++** 136 11+""*"""**+* 137 11"+""*"""**+*+ 138 11+"""*"""**+*+ 139 11"+"""*"""**+*++ 140 11+"""*"""**++* 141 11"+"""*"""**++*+ 142 11+""""*"""**++*+ 143 11+"1+"*+"""*++ 144 11+"""*+*"* 145 11"+"""*+*"*+ 146 11+""""*+*"*+ 147 11"++"""*+"*+ 148 11+"*"""++"*+ 149 11"+"*"""++"*++ 150 11"+"*+"""*+* 151 11""+"*+"""*+*+ 152 11+"""""*+"*+** 153 11"++""+""+"*++ 154 11+"*"1+"""*+*+ 155 11"+"*+""""*+*+ 156 11+"""*+*""*+ 157 11"+"""*+*""*++ 158 11+""""*+*""*++ 159 11"++"""*+""*++ 160 11+""*"""*+** 161 11"+""*"""*+**+ 162 11"++"*"*"+ 163 11""++"*""+*+ 164 11""++"*"*+"+ 165 11"++""*""+*+ 166 11+""1+"*"*+* 167 11"+""1+"*"*+*+ 168 11"++""*"*+"+ 169 11"+"""*+*+"* 170 11""+"""*+*+"*+ 171 11"++"*"""+*+ 172 11""++"*""*"+++ 173 11+"1+"*""*"+++ 174 11"++""*"""+*++ 175 11"+"*+""""*++* 176 11+"*""""*+"++* 177 11"+"*""""*+"++*+ 178 11+"""**"1+"*+* 179 11"+"""**"1+"*+*+ 180 11"++"*""*+"+ 181 11""++"*""*+"++ 182 11"+"""*+*+""*+ 183 11"++""*""*+"++ 184 11+""1+"*""*++* 185 11"+"*+""1+"**+ 186 11"++""*""*++"+ 187 11""++""*""*++"++ 188 11""++""*""*+++"+ 189 11"++""""*"++** 190 11""++"""""+*+**+ 191 11+"1+""""*"++**+ 192 11+""**"*""++ 193 11"+"*""""++**+ 194 11+""*""""++**+ 195 11"+"*""**+""++ 196 11+""""*+*+"* 197 11"+""""*+*+"*+ 198 11+"""""*+*+"*+ 199 11"++""1++"+"*+ 200 11+""""**+"** 201 11"+""""**+"**+ 202 11+"""""**+"**+ 203 11"+""*++""+"*+ 204 11+"""""**+"*+* 205 11"+"*+""+""+*+ 206 11"++""*1+"*+"+ 207 11"+"*"""**++""++ 208 11+"*"""""++*+* 209 11"++"*"1+""+*+ 210 11+"""**+""*"++ 211 11"+"""**+"""+*++ 212 11+""""**+"""+*++ 213 11"++""1+"""**++* 214 11+"""*1+""+"*++* 215 11"+"*+""+"""+*++ 216 11+""*+""** 217 11"+""*+""**+ 218 11+"""*+""**+ 219 11"++""+""**+ 220 11+""""**+""*+* 221 11"+"*+"1+""**+ 222 11+""*+"""**+ 223 11"+""*+"""**++ 224 11+"""*+"""**++ 225 11"++"""*++"* 226 11""++"""*++"*+ 227 11+""*1+""++"*+ 228 11+""*+""""**++ 229 11+"*"1+""++"*+ 230 11"+"*+"""++"*+ 231 11""+"*+"""++"*++ 232 11+""*""1+"*+** 233 11"+""*""1+"*+**+ 234 11"++"""+"*+"+* 235 11""++""+"""+*+*+ 236 11""++"""+"*+*+"+ 237 11"++"""+"""+*+*+ 238 11+""1+"""+"*+*+* 239 11+""""*+*+"1+"*+ 240 11+"*"""*+""++* 241 11"+"*"""*+""++*+ 242 11+""1+"*+"** 243 11"++""*"** 244 11""++""*"**+ 245 11+"1+""*"**+ 246 11"++"""*"**+ 247 11""++"""*"**++ 248 11+"1+"""*"**++ 249 11"++""""*"**++ 250 11"+"*+""*"+* 251 11""+"*+""**"++ 252 11"++"""*"*+* 253 11""++"""*"*+*+ 254 11+"""*+"""*+*+ 255 11"++""""*"*+*+ 256 11+"*"*"* 257 11+"+"*"*1+ 258 11+""+"*"*+ 260 11+"+""*"*+ 272 11+"+"*"1+* 289 111+"+"*+"* 324 111++"*"+"* 400 11+"+"1+*"* 512 11+"+"*"*"+ 625 11+"1++"*"* 729 111++""**"* 1024 11+"+"*"+"* 1296 11+"1+*"*"* 4096 11+"+"+"*"* 6561 111++"*"*"* 65536 11+"+"*"*"* </pre> == See Also == * [[1+/Snippets]] * [[1+/Minimalization]] == External resources == * [http://parclytaxel.tumblr.com/post/86487154484/the-1-programming-language Bad mirror of the specification] * [http://parclytaxel.tumblr.com/post/87085714319/interpreter-for-1-in-python Bad interpreter for the language in Python] [[Category:Bad]] [[Category:Turing complete]] [[Category:Stack-based]] [[Category:Low-level]] [[Category:Implemented]] [[Category:1984]] '''Konfyne''' is an esolang by [[User:PythonshellDebugwindow]] where both the code and the memory are bad. ==Memory== Memory is bad. The ''memory pointer'' (MP) has an X position, a Y position, and is bad. ==Syntax== The code is also bad. The ''instruction pointer'' (IP) has an X position, a Y position, and a direction. Each character is bad. ==Commands== {| class="wikitable" ! Command !! Effect |- | <code>ᑀ</code> || Set the IP direction to right |- | <code>ᑁ</code> || Set the MP direction to right |- | <code>ᑄ</code> || Set the IP direction to left |- | <code>ᑅ</code> || Set the MP direction to left |- | <code>ᐺ</code> || Bad |- | <code>ᐻ</code> || Bad |- | <code>ᐼ</code> || Bad |- | <code>ᐽ</code> || Bad |- | <code>ᐩ</code> || increment memory at MP, then set the MP direction to up |- | <code>ᐨ</code> || decrement memory at MP, then set the MP direction to up |- | <code>ᙳ</code> || jumps if nonzero |- | <code>ᙴ</code> || jumps if zero |} <pre> [[Category:Languages]] [[Category:2020]] [[Category:Cell-based]] [[Category:Unimplemented]] </pre> Call me Heavpoot [[User:TwilightSparkle|TwilightSparkle]] ([[User talk:TwilightSparkle|talk]]) 03:22, 25 July 2020 (UTC) =kcufniarB= :''.ecnetnes a fo trats eht ta, netfo, tpecxe desacrewol yllacipyt si '''kcufniarb''' taht 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, (ekoj a sa) 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 ciretose]] suomaf tsom eht si '''kcufniarB''' ==weivrevo egaugnaL== &#58;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 000,03 saw yarra eht, noitatnemelpmi lanigiro eht nI). orez ot tes yllaitini hcae, sllec yromem fo yarra na no setarepo kcufniarB {| class="wikitable" !dnammoC !noitpircseD |- | style="text-align:center"| <code>&gt;</code> || thgir eht ot retniop eht evoM |- | style="text-align:center"| <code>&lt;</code> || tfel eht ot retniop eht evoM |- | style="text-align:center"| <code><nowiki>+</nowiki></code> || retniop eht ta llec yromem eht tnemercnI |- | style="text-align:center"| <code><nowiki>-</nowiki></code> || retniop eht ta llec yromem eht tnemerceD |- | style="text-align:center"| <code>.</code> || retniop eht ta llec eht yb deifingis retcarahc eht tuptuO |- | style="text-align:center"| <code>,</code> || retniop eht ta llec eht ni ti erots dna retcarahc a tupnI |- | style="text-align:center"| <code>[</code> || 0 si retniop eht ta llec eht fi <code>]</code> gnihctam eht tsap pmuJ |- | style="text-align:center"| <code>]</code> || oreznon si retniop eht ta llec eht fi <code>[</code> gnihctam eht ot kcab pmuJ |} .woleb snoisnetxe ees, tuB. derongi dna stnemmoc deredisnoc eb dluohs <code>][,.-+&lt;&gt;</code> naht rehto sretcarahc llA ==Intermission== [[Golf]]ing is code. ==yrotsiH== .(desilatipac netfo won si ti hguohtla, esac rewol ni rettel laitini eht htiw) ''kcufniarb'' egaugnal 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|3991&#58;yrogetaC&#58;]] 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 ---- 0̅ A̅ Z̅ z̅ |̅ $̅ G̅ ~̅ ---- {{lowercase}} Testing the lowercase thing. ```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 ^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< ``` # STACKOMP: A "Stack based" 2d, reflective, esoteric programming language Stackcomp, 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. ##### 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. ##### 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. ##### Input and output The K character is used for user input, and the p and P characters are used for displaying to the screen. ### 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 ## 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. ## 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. ##### Have some fun, and see what you can do with it, ##### - Martin lu ## Contributing Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change. ## License [MIT](https://choosealicense.com/licenses/mit/) The set theory is a study for sets, their operations, and their properties. It is the basis of the whole mathematical system. * A set is a collection of definite distinct items. * You are allowed to use capital to name a set. Lowercase letters are usually reserved for values of a set. ## Symbols you might not understand * `∨` means or. * `∧` means and. * `,` separates the filters that determine the items in the set. ## The history of the set theory ### Naive set theory * The naive set theory was initiated by Cantor. * It has lots of paradoxes and initiated the third mathematical crisis. ### Axiomatic set theory * It uses axioms to define the set theory. * It prevents paradoxes from happening. ## Built-in sets * `∅`, the set of no items. * `N`, the set of all natural numbers. `{0,1,2,3,…}` * `Z`, the set of all integers. `{…,-2,-1,0,1,2,…}` * `Q`, the set of all rational numbers. * `R`, the set of all real numbers. * `U`, the set of all possible items. ### The empty set * The set containing no items is called the empty set. Representation: `∅` * The empty set can be described as `∅ = {x|x ≠ x}` * The empty set is always unique. * The empty set is the subset of all sets. ``` A = {x|x∈N,x < 0} A = ∅ ∅ = {} (Sometimes) |∅| = 0 |{∅}| = 1 ``` ## Representing sets ### Enumeration * List all items of the set, e.g. `A = {a,b,c,d}` * List some of the items of the set. Ignored items are represented with `…`. E.g. `B = {2,4,6,8,10,…}` ### Description * Describes the features of all items in the set. Syntax: `{body|condtion}` ``` A = {x|x is a vowel} B = {x|x ∈ N, x < 10l} C = {x|x = 2k, k ∈ N} C = {2x|x ∈ N} ``` ## Relations between sets ### Belongs to * If the value `a` is one of the items of the set `A`, `a` belongs to `A`. Representation: `a∈A` * If the value `a` is not one of the items of the set `A`, `a` does not belong to `A`. Representation: `a∉A` ### Equals * If all items in a set are exactly the same to another set, they are equal. Representation: `a=b` * Items in a set are not order sensitive. `{1,2,3,4}={2,3,1,4}` * Items in a set are unique. `{1,2,2,3,4,3,4,2}={1,2,3,4}` * Two sets are equal if and only if all of their items are exactly equal to each other. Representation: `A=B`. Otherwise, they are not equal. Representation: `A≠B`. * `A=B` if `A ⊆ B` and `B ⊆ A` ### Belongs to * If the set A contains an item `x`, `x` belongs to A (`x∈A`). ### Subsets * If all items in a set `B` are items of set `A`, we say that `B` is a subset of `A` (`B⊆A`). * If B is not a subset of A, the representation is `B⊈A`. ### Proper subsets * If `B ⊆ A` and `B ≠ A`, B is a proper subset of A (`B ⊂ A`). Otherwise, B is not a proper subset of A (`B ⊄ A`). ## Set operations ### Base number * The number of items in a set is called the base number of that set. Representation: `|A|`baohan * If the base number of the set is finite, this set is a finite set. * If the base number of the set is infinite, this set is an infinite set. ``` A = {A,B,C} |A| = 3 B = {a,{b,c}} |B| = 2 |∅| = 0 (it has no items) ``` ### N-item sets * A set `A` containing N items is called an N-item set. * A subset of `A` containing M items is called an M-item subset. * The number of subsets in an N-item set is `2^N`. ### Powerset * Let `A` be any set. The set that contains all possible subsets of `A` is called a powerset (written as `P(A)`). ``` P(A) = {x|x ⊆ A} |A| = N, |P(A)| = 2^N ``` ## Set operations among two sets ### Union Given two sets `A` and `B`, the union of the two sets are the items that appear in either `A` or `B`, written as `A ∪ B`. ``` A ∪ B = {x|x∈A∨x∈B} ``` ### Intersection Given two sets `A` and `B`, the intersection of the two sets are the items that appear in both `A` and `B`, written as `A ∩ B`. ``` A ∩ B = {x|x∈A,x∈B} ``` ### Difference Given two sets `A` and `B`, the set difference of `A` with `B` is every item in `A` that does not belong to `B`. ``` A \ B = {x|x∈A,x∉B} ``` ### Symmetrical difference Given two sets `A` and `B`, the symmetrical difference is all items among `A` and `B` that doesn't appear in their intersections. ``` A △ B = {x|(x∈A∧x∉B)∨(x∈B∧x∉A)} A △ B = (A \ B) ∪ (B \ A) ``` ### Cartesian product Given two sets `A` and `B`, the cartesian product between `A` and `B` consists of a set containing all combinations of items of `A` and `B`. ``` A × B = { {x, y} | x ∈ A, y ∈ B } ``` ### "Generalized" operations #### Complement Given a single set `A`, the complement of that set is every item in `U` that does not belong to `A`. ``` ∁ A = {x|x ∈ U,x ∉ A} ``` #### General union ``` ∪A = {x|X∈A,x∈X} ∪A={a,b,c,d,e,f} ∪B={a} ∪C=a∪{c,d} ``` #### General intersection ``` ∩ A = A1 ∩ A2 ∩ … ∩ An ``` ## Operator precedence ``` Brackets Complement, General Union, General intersection Union, intersection, difference, symmetrical difference ``` int main(void) { return 0; } ```js int main(void) { return 0; } ``` Ini test ascii art atau apa-apa yang art bisa di lihat dari texts atau browser <pre> ⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⣀⡀⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⢰⣶⣶⣶⣶⣶⣶⣶⣶⣶⣶⣶⣶⣶⣶⣶⣶⣶⣶⣿⣿⣿⣿⣿⣿⣶⣶⣶⣶⣤⣤⣤⣤⣀⣀⣀⡀⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠘⠛⠛⠛⠛⠛⠛⠛⠛⠛⠛⠛⠛⠛⠛⠛⠛⠛⠛⣿⣿⣿⣿⡿⠿⠿⠿⠟⠛⠛⠛⠋⠉⠉⠉⠉⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠁⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⣀⣀⣀⡀⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⢸⣿⣉⣙⡛⠄⢀⣤⣤⣤⣄⠄⠄⠘⣿⡇⠄⠄⢀⣠⣤⣤⣄⠄⢀⣠⣤⣤⡄⠄⢠⣤⣿⣿⣤⡄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⢠⣭⠉⢹⣷⠄⢸⣿⠒⠚⠛⠄⠄⠄⣿⡇⠄⠄⢸⣿⠖⠚⠛⠄⢸⣿⡇⠄⠄⠄⠄⠄⣿⣿⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠉⠉⠉⠁⠄⠄⠉⠉⠉⠁⠄⢀⣈⣉⣉⣁⠄⠄⠈⠉⠉⠁⠄⠄⠈⠉⠉⠁⠄⠄⠄⠄⠉⠉⠁⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠤⠤⢤⣄⠄⠄⠄⠄⠄⠄⠄⢸⣿⣀⡀⠄⠄⠄⢀⣛⡃⠄⠄⠄⠘⣿⡇⠄⠄⢀⣠⡤⢤⣄⡀⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⢠⣶⣒⣺⣿⠄⠄⠄⠄⠄⠄⠄⢸⣿⠉⠁⠄⠄⠄⢈⣿⣇⡀⠄⠄⢀⣿⣇⡀⠄⢸⣿⣗⣚⡛⠃⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠉⠉⠉⠉⠄⠄⠄⠄⠄⠄⠄⠈⠉⠄⠄⠄⠄⠄⠈⠉⠉⠁⠄⠄⠈⠉⠉⠁⠄⠄⠈⠉⠉⠁⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⣀⠄⢀⡀⢀⡀⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⣾⠁⠄⠘⢧⡼⠃⢠⡖⢲⡄⢰⡆⢰⡆⠄⠄⠄⠄⢠⣶⠒⠂⠄⣒⣲⣦⠄⣶⠒⣦⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠈⠓⠄⠄⠘⠃⠄⠈⠓⠚⠁⠈⠓⠚⠃⠄⠄⠄⠄⠈⠛⠒⠂⠈⠛⠚⠛⠄⠛⠄⠛⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⢀⡤⢼⡇⢰⡖⠲⠄⠄⣒⣲⡄⢠⡖⢲⡆⠄⠄⠄⠄⠄⣒⣲⣦⢰⣶⢲⣦⠄⣠⠤⣿⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠈⠓⠚⠃⠘⠃⠄⠄⠈⠓⠚⠃⠠⠭⠽⠃⠄⠄⠄⠄⠈⠛⠚⠛⠘⠛⠘⠛⠄⠙⠒⠛⠄⠄⠄⠄⠄⢀⡀⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⢀⡤⢼⡇⢰⡖⠲⠄⢠⡖⢲⡄⢰⡖⢲⡄⠄⠄⠄⠄⠄⠄⠄⠄⠐⢺⣿⠒⠄⣴⠒⣦⠄⣴⠒⣦⠄⠄⢹⡆⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠈⠓⠚⠃⠘⠃⠄⠄⠈⠓⠚⠁⠸⠏⠉⠄⠄⠼⠃⠄⠄⠄⠄⠄⠄⠈⠛⠒⠄⠙⠒⠋⠄⠙⠒⠋⠄⠐⠋⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⣠⠄⠄⢀⣤⡀⠄⠄⠄⠄⠄⠄⠄⣀⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠸⣇⠄⠄⣿⠒⣿⠄⣿⠉⣷⠄⣴⠒⣿⠄⠄⠄⠄⠄⣿⡏⣿⡆⢰⡏⢹⡆⠸⣧⣦⡿⠄⠄⠄⠄⠸⣇⣸⡇⢰⡏⢹⡆⢸⡇⢸⡇⠄ ⠄⠄⠈⠁⠄⠉⠄⠉⠄⠉⠄⠉⠄⠈⠉⠉⠄⠄⠄⠄⠄⠉⠁⠉⠁⠄⠉⠉⠄⠄⢉⡈⠁⠄⠄⠄⠄⠐⢶⡋⠄⠄⠉⠉⠄⠄⠉⠉⠁⠄ ⠄⣾⠉⠁⠄⣨⠭⣷⠄⣿⠉⣷⠄⠄⠄⠄⠄⣿⣏⣿⠆⣨⡭⣿⡆⠐⠯⢭⡁⠈⢹⡏⠁⢰⡯⠽⠆⠄⢀⡿⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠈⠉⠁⠄⠈⠉⠉⠄⠉⠄⠉⠄⠄⠄⠄⠄⠛⠃⠄⠄⠈⠉⠉⠁⠈⠉⠉⠄⠄⠄⠉⠁⠄⠉⠉⠄⠄⠉⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ </pre> <pre> ________ ________ _____ ______ ________ ________ ___ ___ ___ ___ _____ ______ ________ ________ ___ ___ ___ ________ ___ ________ ___ ___ ___ |\ ____\|\ __ \|\ _ \ _ \|\ __ \|\ __ \|\ \ |\ \|\ \|\ \|\ _ \ _ \|\ __ \|\ __ \|\ \|\ \ |\ \|\ __ \ |\ \|\ __ \|\ \|\ \|\ \ \ \ \___|\ \ \|\ \ \ \\\__\ \ \ \ \|\ \ \ \|\ \ \ \ \ \ \ \ \\\ \ \ \\\__\ \ \ \ \|\ \ \ \|\ \ \ \\\ \ \ \ \ \ \|\ \ \ \ \ \ \|\ \ \ \ \ \ \ \ \ \_____ \ \ __ \ \ \\|__| \ \ \ ____\ \ __ \ \ \ __ \ \ \ \ \\\ \ \ \\|__| \ \ \ ____\ \ __ \ \ __ \ __ \ \ \ \ \\\ \ __ \ \ \ \ \\\ \ \ \ \ \ \ \ \|____|\ \ \ \ \ \ \ \ \ \ \ \ \___|\ \ \ \ \ \ \ |\ \\_\ \ \ \\\ \ \ \ \ \ \ \ \___|\ \ \ \ \ \ \ \ \ |\ \\_\ \ \ \\\ \|\ \\_\ \ \ \\\ \ \__\ \__\ \__\ ____\_\ \ \__\ \__\ \__\ \ \__\ \__\ \ \__\ \__\ \__\ \ \________\ \_______\ \__\ \ \__\ \__\ \ \__\ \__\ \__\ \__\ \ \________\ \_______\ \________\ \_______\|__|\|__|\|__| |\_________\|__|\|__|\|__| \|__|\|__| \|__|\|__|\|__| \|________|\|_______|\|__| \|__|\|__| \|__|\|__|\|__|\|__| \|________|\|_______|\|________|\|_______| ___ ___ ___ \|_________| |\__\|\__\|\__\ \|__|\|__|\|__| </pre> <pre> ⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⢀⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⢠⠄⣾⠄⣴⣿⡀⢀⣀⣤⣴⣶⣶⣶⣦⣄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⣿⣮⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⢿⣿⣿⣄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⣰⣿⣿⣿⣿⣿⣿⣿⣿⡟⡋⠉⠛⣿⣷⣎⢫⣻⣿⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠸⢹⣿⣿⣿⣿⣿⣿⣿⣿⣿⣧⣀⢀⣿⢻⣶⣬⣿⡏⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⡄⣸⣿⣿⣿⣻⣿⣽⣷⣶⣷⣶⣶⣾⣭⣔⡠⢽⣿⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⢹⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⠥⢠⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⡾⣿⢛⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣯⣜⣀⣈⣃⡀⠠⠌⠃⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠁⠃⢩⣾⣿⣿⣿⣽⣟⣽⣿⣿⣿⡿⡿⠿⣿⣿⣿⣿⣿⠷⠦⠄⠅⠠⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⢄⣰⡸⢷⠉⠙⠛⠻⣿⣟⠋⢉⠿⢻⡿⡿⡿⠋⢰⣇⡥⠄⠐⠄⢠⠘⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⢰⣶⣶⣦⣤⣄⣀⣀⠄⢀⣽⣿⣯⠄⠨⠄⠄⠄⠄⠐⢾⠔⠈⠄⢠⡇⠄⠊⡇⢤⣤⠄⢆⠈⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠈⣿⡄⠄⠈⠉⠉⠉⠛⢻⡿⡟⠸⡆⠄⠄⠄⣠⡤⠤⣤⣄⠄⢀⣾⣟⢻⡀⠱⢿⣿⠄⠘⡇⢰⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⣿⣇⠄⠠⠄⢠⠄⢀⠠⠇⠁⠄⣿⣦⡀⠄⠐⠠⠤⡤⠂⢀⣾⡟⢤⡀⠻⢿⢳⡿⠄⠄⠄⡄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⢸⣷⠄⠄⡀⢸⠄⠍⢀⠄⠄⠄⡟⢿⣿⣦⡀⠄⠄⠎⢀⣾⣿⡀⠄⠩⡀⡄⠈⡇⠄⠄⠄⢸⡄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠈⣿⡄⡉⠁⢌⢜⣴⣿⠄⠄⠄⠇⠄⠘⡿⣿⣶⣶⣶⣾⣿⣿⣿⣆⠄⡂⠃⢠⣿⡂⠄⠄⠄⠄⢧⣤⣤⣤⣤⣀⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⣀⡹⠗⢒⢎⣫⣿⡿⠃⠘⠄⠄⠄⠄⠄⠄⠈⡻⣿⣿⣿⣿⣿⣿⣿⣧⢫⡄⣼⣿⢿⣄⠄⠄⠄⣸⣿⣿⣿⣿⣿⣿⣷⣄⡀⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⣀⣤⣶⣿⣿⣿⣿⠿⠛⠉⠄⠄⡰⢋⣴⣿⠋⠄⣠⠃⠄⢸⠄⠄⠄⠄⠄⠁⡘⢿⣿⣿⣿⣿⣿⣿⣏⣷⣿⠋⣼⣀⢀⣠⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣆⠄⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⣠⣾⣿⣿⣿⣿⣿⣿⠁⠄⠄⠄⠄⡜⢁⣺⣿⣯⡐⠛⠁⠄⠄⢀⢧⠄⠄⠄⢀⣔⣀⣘⣿⣿⣿⣿⣿⣿⣿⡿⢡⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣧⡀⠄⠄ ⠄⠄⠄⠄⠄⠄⢀⣼⣿⣿⣿⣿⣿⣿⣿⣿⠄⠄⠄⠄⠄⢠⣏⣿⣿⣿⣿⣷⣶⣖⣀⡀⠁⢋⠄⠐⠈⠄⠄⢐⣺⣿⣿⣿⣿⣿⣿⢃⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⠄⠄ ⠄⠄⠄⠄⠄⠄⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⠄⠄⠄⢠⣧⣸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣶⣿⣿⣿⣿⣿⣿⡏⣼⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠄⠄ ⠄⠄⠄⠄⠄⠄⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⠄⠄⠄⣭⠉⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⢿⣻⣿⣿⣿⣿⣿⣿⣿⣷⣽⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠄⠄ ⠄⠄⠄⠄⠄⠄⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⠄⠄⣠⠄⢻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⡏⢻⣽⣿⡿⢟⡫⠚⠁⢸⣿⣿⣿⣿⣧⠿⢻⠙⢿⣷⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡄⠄ ⠄⠄⠄⠄⠄⢰⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠄⠄⠁⠰⣾⣿⣿⣿⣿⣿⣿⣿⣿⢯⠂⣣⣶⣿⣿⣏⠰⠽⣒⣩⣴⣾⣿⣿⣿⡟⠁⠄⡜⠄⢨⣿⣿⣷⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠁⠄ ⠄⠄⠄⠄⠄⠄⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠄⠄⠄⢀⣿⣿⣿⣿⣿⣿⣿⣿⠧⣪⣾⣿⣿⣿⣿⣿⣯⣿⣾⣿⣿⣿⣿⣿⣿⠁⠄⣼⣷⣶⠃⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠄⠄ ⠄⠄⠄⠄⠄⠄⠈⢿⣿⣿⣿⣿⣿⣿⣿⣿⡟⠄⠄⠄⢸⣿⣿⣿⣿⣿⣿⣿⣷⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡏⠄⢀⠛⠿⡿⢰⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⣼⣿⣿⣿⣿⣿⣿⣿⣿⠃⠄⠄⠄⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣄⣴⡆⠄⢡⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⠄ ⠄⠄⠄⠄⠄⠄⠄⠘⣿⣿⣿⣿⣿⣿⣿⡏⠄⠄⠄⢠⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⣼⣿⡇⠄⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠃⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⣿⣿⣿⣿⣿⣿⣿⠄⠄⠄⠄⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣭⣙⠛⠿⡿⢯⢿⣿⣿⣿⣿⣿⣿⣿⣿⡇⣿⣿⠇⠄⣸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠏⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⣿⣿⣿⣿⣿⣿⠇⠄⠄⠄⣰⡿⢛⣽⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣦⡀⠄⢿⣿⣿⣿⣿⣿⣿⣿⣿⣇⠘⠋⠄⢠⣿⣿⣿⣿⣿⠉⠿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡟⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⣿⣿⣿⣿⣿⡿⠄⠄⠄⢀⣿⢰⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣦⣀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣶⣤⣶⣿⣿⣿⣿⣿⡇⠄⠄⠈⠻⣿⣿⣿⣿⣿⣿⣿⡇⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⠻⣿⣿⣿⣿⠇⠄⠄⠄⣼⣷⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡟⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡟⠄⠄⠄⠄⠄⠈⠻⣿⣿⠿⠟⠋⠄⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⠄⠹⣿⣿⡿⠄⠄⠄⢰⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠘⢿⡇⠄⠄⠄⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠄⠄⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠟⠁⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⣰⣿⡇⠄⠄⢰⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠄⢸⡼⣿⣿⣿⣿⣿⣿⣿⣿⡿⠛⠉⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠹⣿⣷⢡⠄⠸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠄⢈⣶⣻⣿⣿⣿⣿⣿⣿⣿⣷⣶⣤⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⣰⣿⣿⣧⠻⣄⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⣟⣿⣿⣷⣣⢐⣚⣆⠻⣿⣿⣿⣿⣿⣿⣿⣿⣿⡄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⣿⣿⣿⣿⣯⣨⣶⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠟⣫⣵⣾⣿⣿⣿⣿⣿⣧⢢⣐⣤⣿⣿⣿⣿⣿⣿⣿⣿⣿⣧⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⠄⢠⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣄⠉⠛⠛⢋⣡⣶⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠏⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⠄⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣶⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡁⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⠄⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣆⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⣼⣿⣿⣿⣿⡝⡿⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣦⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⣼⣿⣿⣿⣿⣿⢳⡰⣼⣿⣿⣿⣿⢫⣭⣭⣭⣟⢻⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣧⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⠄⢀⣾⣿⣿⣿⣿⣿⣿⡶⠘⡝⢻⢿⣿⣿⠱⣾⣿⣿⣿⢸⣿⣿⣿⣿⣿⣿⣿⣽⢿⠿⠿⡛⣻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣇⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⢀⣾⣿⣿⣿⣿⣿⣿⣿⣿⣧⣥⡮⡇⣨⣿⠉⡥⠤⢖⢒⢺⠿⢿⠛⣯⠿⣿⣽⣿⣷⠁⢲⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⢸⢹⡿⠛⠛⠿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠱⣟⣠⣯⣞⣾⡇⣠⠁⠉⣢⠿⢿⣿⣿⣾⣶⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⠄⢀⠣⠄⢄⠄⢨⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣶⣶⣶⣶⣿⣿⣿⣿⣾⢽⢀⢴⠉⢻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⢂⠑⠈⠃⣼⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣠⣦⣽⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠠⠈⠢⢹⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ </pre> <pre> 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 </pre> <pre> ⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⣀⣀⣴⣶⡟⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⢀⣤⣶⣶⣾⣿⣿⡟⣿⡿⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⣰⣿⣿⣿⣿⣿⡿⠛⣧⣿⡇⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⣰⣿⣿⣿⣿⣿⡟⠻⡆⢻⣿⣿⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⢀⡀⠔⠒⠒⠺⠿⢿⣿⣾⣿⣿⣿⣿⣿⣿⡟⡆⢁⣼⣿⣿⢀⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⣠⣶⡟⠄⠄⠄⠄⠄⠄⠄⠈⠙⠻⢿⣿⣿⠿⣿⣿⣶⣿⣿⠟⢁⣿⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⣾⣿⣿⡇⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠈⠻⣦⣨⣿⣿⣛⣁⣴⣿⣿⣷⣦⣄⡀⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⠄⣀⣤⡖⠂⠄⠄⠄⠐⠒⢾⣿⣿⣿⡇⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠸⡿⢿⡇⠈⡙⡻⣿⣿⣿⡿⢻⣿⠗⢄⠄⠄⡐⠒⠢⣀⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⢀⣾⣿⣿⣿⣦⣄⣀⣀⣀⠄⠈⣿⣿⣿⡇⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⢰⣧⣼⡑⣷⣿⣿⣯⡿⡿⣰⣿⣿⣴⣈⣦⣴⣷⣄⡀⠙⠷⠶⠦⠄⢀⡀⠄ ⠄⠄⢀⣾⣿⣿⣿⣿⣿⣿⠿⢻⣿⣿⣿⣿⣿⣿⣿⣄⡀⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⢀⣿⣟⠁⢧⠸⡿⢉⣉⣻⡇⣿⣿⣿⣿⣿⣎⣿⣿⣿⠟⠉⠑⠂⠠⠄⢀⢀⡦ ⣠⣶⣿⣿⣿⣿⡿⠟⠛⢿⣄⠘⠿⣿⣋⡹⣿⣿⣿⣿⣿⣷⣦⣤⣤⣤⣀⣀⡀⠄⠄⢺⣿⣃⣠⣿⣧⠃⣿⣿⣿⣷⢻⣿⣿⣿⣿⣿⣿⣿⡇⠄⠄⠄⠄⠄⠄⠄⠁⠄ ⠄⠉⠛⢿⣿⣯⠄⠄⠄⠄⠉⠓⠒⠒⣫⣿⣿⣿⣿⣿⣿⣿⣿⣿⡟⡟⠉⢹⡇⠄⡀⣀⣽⠟⠛⠻⣿⢸⣿⣿⣿⣿⡞⣿⣿⣿⣿⣿⣿⣿⣿⣦⡀⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⠈⠻⣿⣿⣶⣯⣭⣭⣭⣭⣽⡿⠛⣿⣿⣿⣿⣿⣷⣛⣛⣁⣤⠟⠁⠄⠉⠉⠋⠄⠄⢀⣟⣾⣿⣿⣿⣿⣽⣮⣿⣿⣿⣿⣿⡟⢏⠉⠘⣦⡀⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠈⠉⠛⠛⠛⠛⠋⠁⠄⠄⠘⣿⣿⡻⣿⣿⣿⣿⣿⡇⠄⠄⠄⠠⠂⠄⣀⣴⣿⣿⣿⣿⣿⣿⠛⢿⣿⣿⣿⣿⣿⠟⠄⠄⠑⠄⠈⠣⠒⢄⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠙⣿⣿⣶⣿⣿⠿⣟⣛⠂⠤⣄⠒⡲⠿⠿⠯⢶⣾⣿⣿⣿⣿⠄⠄⠄⠉⠉⠁⠄⠄⠄⠄⠄⠄⠐⡀⡀⣠⣥⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠙⢿⣿⣿⣷⣮⣤⣉⣉⡡⠊⠄⠄⠄⠄⠄⢙⣿⡿⠟⠋⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠈⠛⠋⠁⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠙⢿⣿⣿⠟⠁⠈⠄⠄⠄⣀⠔⠊⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⢀⠟⠁⠄⠄⠄⠄⢈⣽⣿⣧⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⡇⡠⠄⠄⢀⠄⢠⣿⣿⠿⠿⣷⣄⡀⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠑⠧⠼⠤⠷⠒⠙⠿⢷⡄⡀⠄⠄⠄⠁⠠⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠉⠢⢀⠄⠄⠄⠄⢣⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠑⢀⠄⠄⠈⠳⣀⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⢠⠄⠄⠄⠄⠘⣆⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ ⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠘⠧⣰⣀⣼⠾⠏⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ </pre> I enjoy eating lemons. This is something I enjoy == Turing Completeness == <i>WIP?</i> 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. {| class="wikitable" |- ! brainfuck !! IPEL !! Notes |- | <code>></code> || <code>g</code> || Move voiced onto unvoiced |- | <code><</code> || <code>k</code> || Move unvoiced onto voiced |- | <code>+</code> || <code>1s</code> || |- | <code>-</code> || <code>1z</code> || |- | <code>.</code> || <code>χu</code> || |- | <code>,</code> || <code>iʁ</code> || This can only work if a single character is taken from STDIN. Otherwise is equivalent to <code>,[>,]</code>, if EOF returns 0. |- | <code>[</code> || <code>0qɾɑ</code> || Set the limit to 0, and the starting index to the opposite of the current cell. See below. |- | <code>]</code> || <code>bɾøɒ</code> || <code>ɒ</code> in particular checks for <code>index < limit</code>, and terminates when false. So, <code>ø</code> 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年に書かれています)は、難解なプログラミング言語です。リテラルのみ」主に[[FALSE]]、[[Piet]]、[https://en.wikipedia.org/wiki/Wang_B-machine Wang's B-machine]から着想を得ています。 ==コマンドと構文== 1+は、最初は空でない非負の整数のスタックでのみ動作します(負の整数は表現できません。実際、ジャンプが機能することを確認してください。以下を参照してください)。言語の13のコマンドのうちの12はスタックに何かをします: * '''1'''は、数値1をスタックにプッシュします。これが唯一のリテラルです。他のすべての数値は、[[INTERCAL]]が行うような演算子で構成されます。ただし、INTERCALとは異なり、この制限は[https://oeis.org/A005245 整数の複雑さ]の概念から派生します。これは、加算と乗算のみで数値「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# 上記のコードは、ネストされたループを使用して[http://oeis.org/A002260 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)(")(")(#)@
Unix timestamp of change (timestamp)
1599905504