Mercurial > repo
annotate minsk @ 10278:b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
author | HackBot |
---|---|
date | Thu, 16 Feb 2017 01:05:47 +0000 |
parents | |
children |
rev | line source |
---|---|
10278
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
1 <!DOCTYPE html> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
2 <html lang="en" dir="ltr" class="client-nojs"> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
3 <head> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
4 <meta charset="UTF-8"/> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
5 <title>The Amnesiac From Minsk - Esolang</title> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
6 <script>document.documentElement.className = document.documentElement.className.replace( /(^|\s)client-nojs(\s|$)/, "$1client-js$2" );</script> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
7 <script>(window.RLQ=window.RLQ||[]).push(function(){mw.config.set({"wgCanonicalNamespace":"","wgCanonicalSpecialPageName":false,"wgNamespaceNumber":0,"wgPageName":"The_Amnesiac_From_Minsk","wgTitle":"The Amnesiac From Minsk","wgCurRevisionId":45748,"wgRevisionId":45748,"wgArticleId":10083,"wgIsArticle":true,"wgIsRedirect":false,"wgAction":"view","wgUserName":null,"wgUserGroups":["*"],"wgCategories":["Languages","Turing complete","Output only","Unimplemented","Cell-based","Low-level","2015"],"wgBreakFrames":false,"wgPageContentLanguage":"en","wgPageContentModel":"wikitext","wgSeparatorTransformTable":["",""],"wgDigitTransformTable":["",""],"wgDefaultDateFormat":"dmy","wgMonthNames":["","January","February","March","April","May","June","July","August","September","October","November","December"],"wgMonthNamesShort":["","Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],"wgRelevantPageName":"The_Amnesiac_From_Minsk","wgRelevantArticleId":10083,"wgRequestId":"c87139c8cdc92ae552b0a067","wgIsProbablyEditable":false,"wgRestrictionEdit":[],"wgRestrictionMove":[],"wgWikiEditorEnabledModules":{"toolbar":true,"dialogs":true,"preview":false,"publish":false}});mw.loader.implement("user.options",function($,jQuery,require,module){mw.user.options.set({"variant":"en"});});mw.loader.implement("user.tokens",function ( $, jQuery, require, module ) { |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
8 mw.user.tokens.set({"editToken":"+\\","patrolToken":"+\\","watchToken":"+\\","csrfToken":"+\\"});/*@nomin*/; |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
9 |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
10 });mw.loader.load(["mediawiki.page.startup","skins.vector.js"]);});</script> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
11 <link rel="stylesheet" href="/w/load.php?debug=false&lang=en&modules=mediawiki.legacy.commonPrint%2Cshared%7Cmediawiki.sectionAnchor%7Cmediawiki.skinning.interface%7Cskins.vector.styles&only=styles&skin=vector"/> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
12 <meta name="ResourceLoaderDynamicStyles" content=""/> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
13 <link rel="stylesheet" href="/w/load.php?debug=false&lang=en&modules=site&only=styles&skin=vector"/> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
14 <script async="" src="/w/load.php?debug=false&lang=en&modules=startup&only=scripts&skin=vector"></script> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
15 <meta name="generator" content="MediaWiki 1.27.1"/> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
16 <link rel="shortcut icon" href="/favicon.ico"/> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
17 <link rel="search" type="application/opensearchdescription+xml" href="/w/opensearch_desc.php" title="Esolang (en)"/> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
18 <link rel="EditURI" type="application/rsd+xml" href="//esolangs.org/w/api.php?action=rsd"/> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
19 <link rel="copyright" href="/wiki/Esolang:Copyrights"/> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
20 <link rel="alternate" type="application/atom+xml" title="Esolang Atom feed" href="/w/index.php?title=Special:RecentChanges&feed=atom"/> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
21 </head> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
22 <body class="mediawiki ltr sitedir-ltr ns-0 ns-subject page-The_Amnesiac_From_Minsk rootpage-The_Amnesiac_From_Minsk skin-vector action-view"> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
23 <div id="mw-page-base" class="noprint"></div> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
24 <div id="mw-head-base" class="noprint"></div> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
25 <div id="content" class="mw-body" role="main"> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
26 <a id="top"></a> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
27 |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
28 <div class="mw-indicators"> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
29 </div> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
30 <h1 id="firstHeading" class="firstHeading" lang="en">The Amnesiac From Minsk</h1> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
31 <div id="bodyContent" class="mw-body-content"> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
32 <div id="siteSub">From Esolang</div> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
33 <div id="contentSub"></div> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
34 <div id="jump-to-nav" class="mw-jump"> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
35 Jump to: <a href="#mw-head">navigation</a>, <a href="#p-search">search</a> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
36 </div> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
37 <div id="mw-content-text" lang="en" dir="ltr" class="mw-content-ltr"><p><b>The Amnesiac From Minsk</b> is a series of <a href="/wiki/Esoteric_programming_language" title="Esoteric programming language">esoteric programming languages</a> designed by <a href="/wiki/User:Ais523" title="User:Ais523">User:ais523</a> towards the end of <a href="/wiki/Category:2015" title="Category:2015">2015</a>. They are arranged as a sequence of "difficulty levels"; higher-level languages are intended to be harder to program in (and lower-level languages can be seen as <a href="/wiki/Wimpmode" title="Wimpmode">wimpmodes</a> for the higher-level languages). <a href="/wiki/Minsky_machine" title="Minsky machine">Minsky machines</a> can be seen as a "level 0", or a wimpmode for the language as a whole, as they have a strict superset of its functionality. |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
38 </p><p>In addition to the obvious <a href="/wiki/Minsky_machine" title="Minsky machine">Minsky machines</a>, inspirations for the language include <a href="/wiki/StackFlow" title="StackFlow">StackFlow</a> and <a href="/wiki/Unassignable" title="Unassignable">:≠</a>. It's also less directly inspired by <a href="/wiki/Three_Star_Programmer" title="Three Star Programmer">Three Star Programmer</a> and <a href="/wiki/MiniMAX" title="MiniMAX">MiniMAX</a>, via <a href="/wiki/Last_ReSort" title="Last ReSort">Last ReSort</a>. |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
39 </p> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
40 <div id="toc" class="toc"><div id="toctitle"><h2>Contents</h2></div> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
41 <ul> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
42 <li class="toclevel-1 tocsection-1"><a href="#The_Amnesiac_From_Minsk.2C_level_1"><span class="tocnumber">1</span> <span class="toctext">The Amnesiac From Minsk, level 1</span></a> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
43 <ul> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
44 <li class="toclevel-2 tocsection-2"><a href="#Semantics"><span class="tocnumber">1.1</span> <span class="toctext">Semantics</span></a></li> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
45 <li class="toclevel-2 tocsection-3"><a href="#Syntax"><span class="tocnumber">1.2</span> <span class="toctext">Syntax</span></a></li> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
46 <li class="toclevel-2 tocsection-4"><a href="#Implementation_in_and_of_other_languages"><span class="tocnumber">1.3</span> <span class="toctext">Implementation in and of other languages</span></a></li> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
47 </ul> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
48 </li> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
49 <li class="toclevel-1 tocsection-5"><a href="#The_Amnesiac_From_Minsk.2C_level_2"><span class="tocnumber">2</span> <span class="toctext">The Amnesiac From Minsk, level 2</span></a> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
50 <ul> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
51 <li class="toclevel-2 tocsection-6"><a href="#Semantics_2"><span class="tocnumber">2.1</span> <span class="toctext">Semantics</span></a></li> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
52 <li class="toclevel-2 tocsection-7"><a href="#Syntax_2"><span class="tocnumber">2.2</span> <span class="toctext">Syntax</span></a></li> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
53 <li class="toclevel-2 tocsection-8"><a href="#Implementing_level_1_in_level_2"><span class="tocnumber">2.3</span> <span class="toctext">Implementing level 1 in level 2</span></a></li> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
54 <li class="toclevel-2 tocsection-9"><a href="#Implementing_level_2_in_level_1"><span class="tocnumber">2.4</span> <span class="toctext">Implementing level 2 in level 1</span></a></li> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
55 </ul> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
56 </li> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
57 <li class="toclevel-1 tocsection-10"><a href="#The_Amnesiac_From_Minsk.2C_level_3"><span class="tocnumber">3</span> <span class="toctext">The Amnesiac From Minsk, level 3</span></a> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
58 <ul> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
59 <li class="toclevel-2 tocsection-11"><a href="#Semantics_3"><span class="tocnumber">3.1</span> <span class="toctext">Semantics</span></a></li> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
60 <li class="toclevel-2 tocsection-12"><a href="#Syntax_3"><span class="tocnumber">3.2</span> <span class="toctext">Syntax</span></a></li> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
61 <li class="toclevel-2 tocsection-13"><a href="#Implementing_level_3_in_level_2"><span class="tocnumber">3.3</span> <span class="toctext">Implementing level 3 in level 2</span></a></li> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
62 </ul> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
63 </li> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
64 <li class="toclevel-1 tocsection-14"><a href="#The_Amnesiac_From_Minsk.2C_level_4"><span class="tocnumber">4</span> <span class="toctext">The Amnesiac From Minsk, level 4</span></a> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
65 <ul> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
66 <li class="toclevel-2 tocsection-15"><a href="#Semantics_4"><span class="tocnumber">4.1</span> <span class="toctext">Semantics</span></a></li> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
67 <li class="toclevel-2 tocsection-16"><a href="#Syntax_4"><span class="tocnumber">4.2</span> <span class="toctext">Syntax</span></a></li> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
68 <li class="toclevel-2 tocsection-17"><a href="#Implementing_level_4_in_level_3"><span class="tocnumber">4.3</span> <span class="toctext">Implementing level 4 in level 3</span></a></li> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
69 <li class="toclevel-2 tocsection-18"><a href="#Implementation_in_Last_ReSort"><span class="tocnumber">4.4</span> <span class="toctext">Implementation in Last ReSort</span></a></li> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
70 </ul> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
71 </li> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
72 <li class="toclevel-1 tocsection-19"><a href="#See_also"><span class="tocnumber">5</span> <span class="toctext">See also</span></a></li> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
73 </ul> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
74 </div> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
75 |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
76 <h2><span class="mw-headline" id="The_Amnesiac_From_Minsk.2C_level_1">The Amnesiac From Minsk, level 1</span></h2> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
77 <h3><span class="mw-headline" id="Semantics">Semantics</span></h3> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
78 <p>At level 1, a The Amnesiac From Minsk program consists of a set of counters, each of which is initialized to a value specified in the program. Each counter can hold an unbounded positive integer (i.e. 0 is not a valid value, so a counter will fail to decrement from 1). The other thing that the program specifies is a list of triggers for each counter: one that runs when the counter is incremented, one which runs when the counter is decremented, and one which runs when an attempt is made to decrement the counter, but which fails because the counter's value is 1. |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
79 </p><p>The triggers work in a very similar way to in :≠; when the counter is changed, the corresponding trigger will run immediately afterwards. Unlike in :≠, recursion is allowed, i.e. it's legal for a trigger on a counter to start a cascading chain of triggers that results in another change to that same counter. However, again unlike in :≠, the triggers are tail calls (and thus none of the usual state for tracking recursion is required to implement The Amnesiac From Minsk); the trigger does not return after it runs (or at any other time). Given that every possible change to a counter (and thus everything that you can do in the language) will trigger some trigger or other, this means that there's no point in the code for a trigger containing more than one command, as the first command will never return. (These rules are the same as those used for <code>pop</code> commands in StackFlow.) |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
80 </p><p>The program halts if a counter is incremented, and the trigger for that increment causes the same counter to be incremented again. (At this point, it is clear that the program is incapable of making further progress.) Likewise, it halts if a counter fails to decrement from 1, and the trigger for that decrement causes an attempt to be made to decrement that same counter again. The implementation starts by incrementing the first counter, and allowing the program to run its course via triggers from there. |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
81 </p><p>As an extension, if a program contains precisely two counters that are not decremented by any trigger, incrementing the one that appears earlier in the program will write a 0 bit to standard output, and incrementing the one that appears later in the program will write a 1 bit to standard output. In the common case where implementations write bits an octet at a time, they should write bits that appear earlier at the more significant end of the byte. |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
82 </p> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
83 <h3><span class="mw-headline" id="Syntax">Syntax</span></h3> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
84 <p>Syntactically, the language looks like this: |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
85 </p> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
86 <pre>L1 + = - |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
87 0: +1; +2; -1; @5 |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
88 1: -0; -2; -1; @9 This is a comment. |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
89 2: +0; +1; -0; @12 |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
90 </pre> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
91 <p>Horizontal whitespace is insignificant anywhere, except that it's disallowed in the middle of a literal integer (although programmers are encouraged to make the columns line up); vertical whitespace is significant. The first line must consist of <code>L1+=-</code>, typically with whitespace added. Each subsequent row line start with a nonnegative integer (the counter number), in sequence starting at 0 and ascending from there. This is followed by the triggers for increment, failed decrement, successful decrement, separated by semicolons; then a semicolon, <code>@</code>, and the initial value for the counter. Anything beyond that is a comment, and should be ignored by implementations. The triggers themselves are expressed as <code>+</code> or <code>-</code> (for increment and for decrement attempt, respectively), followed by the number of the counter to affect. |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
92 </p> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
93 <h3><span class="mw-headline" id="Implementation_in_and_of_other_languages">Implementation in and of other languages</span></h3> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
94 <p>A level 1 The Amnesiac From Minsk program is clearly a special case of a Minsky machine (specifically, one in which the program does not have to remember why it tried to increment or decrement a given counter, because all the information is provided with knowledge of what it's currently doing, thus "amnesiac"). |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
95 </p><p>Slightly less obviously, but nonetheless with a pretty direct construction, you can compile any level 1 The Amnesiac From Minsk program into StackFlow via representing a counter as a stack with one distinguished symbol at the bottom (that re-pushes itself upon an attempt to pop it) and a different symbol for the other elements of the stack. The "successful decrement" and "failed decrement" triggers have exact analogues in StackFlow (the rules for the "not bottom of stack" and "bottom of stack" symbols for the stack that corresponds to the counter). The "increment" trigger does not directly have an analogue, but because a StackFlow rule can contain multiple <code>push</code> commands, it is possible to simply inline the trigger into every rule that increments the counter corresponding to the stack. |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
96 </p><p>Going the other way, The Amnesiac From Minsk can be proved <a href="/wiki/Turing_complete" title="Turing complete" class="mw-redirect">Turing complete</a> at level 1 via implementing Minsky machines in it. The construction works like this: we treat the Minsky machine as a set of counters, plus a state machine that remembers what the system is currently doing. For each state of the state machine, we have a counter that is normally 1, but is 2 while that state is executing. These are connected in chains via failed-decrement triggers; thus attempting to decrement the first counter in a chain will set every counter in the chain to 1 and run the successful-decrement trigger for the current state (if that state is in the chain). |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
97 </p><p>This gives a way to increment counters without losing state, using an "increment chain" for all states that do an increment: you increment the counter for the state, have its increment trigger increment the data counter you wanted to increment, have its increment trigger attempt to decrement the first counter in the increment chain, and have the successful-decrement trigger increment the counter for the next state, and so on. It can be seen by inspection that each trigger in the chian is only used for one purpose, meaning that we have no clashes and thus arbitrary increment behaviour will work. |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
98 </p><p>For decrements, things are rather more complex; we can't use the same construction directly because a decrement has two possible results. Instead, we have two chains: "successful decrement" (which contains one element per decrementing state), and "failed decrement" (which also contains one element per decrementing state). Additionally, we have two separate counters, "success control" and "failure control", for each decrementing state. As with the implementation of increments, these are all 1 except when a decrement is in progress. You start a decrement via incrementing the "succesful decrement" element for the current state, which (via its increment trigger) increments the "failed decrement" element for the current state, which decrements the data counter in question. Its triggers then attempt to decrement the first element of either the "successful decrement" or "failed decrement" chain, depending on the success or failure of the decrement. |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
99 </p><p>The failed-decrement triggers for these two chains are used to maintain the chain behaviour. The successful-decrement triggers for the "successful decrement" and "failed decrement" chains attempt to decrement the "failure control" or "success control" counter respectively for the state in question. Each of these counters will increment the other on a failed decrement, attempt to decrement the first element of the "succesful decrement" or "failed decrement" chain respectively on an increment, and move onto the next state (via incrementing an appropriate chain element to start its increment or decrement) on successful decrement. |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
100 </p><p>Here's an example to show how this works, using a successful decrement in the third state in the chain: |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
101 </p> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
102 <pre>s.dec chain f.dec chain s.control f.control |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
103 11111...111 11111...111 1 1 Before starting the decrement |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
104 11211...111 11111...111 1 1 Decrement starts from outside |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
105 11211...111 11211...111 1 1 After the first trigger |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
106 --- Data counter decremented here, and decrements the s.dec chain --- |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
107 11111...111 11211...111 1 1 f.control fails to decrement |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
108 11111...111 11211...111 2 1 so it increments s.control |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
109 11111...111 11111...111 2 1 which decrements f.dec chain |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
110 11111...111 11111...111 1 1 s.control decrement succeeds |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
111 </pre> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
112 <p>and now we're back where we started, but the "success control" decrement trigger runs and moves onto the next part of the program. Everything is symmetrical between success and failure, so if the decrement had failed instead, the example would be the same but with success and failure state swapped. |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
113 </p> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
114 <h2><span class="mw-headline" id="The_Amnesiac_From_Minsk.2C_level_2">The Amnesiac From Minsk, level 2</span></h2> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
115 <h3><span class="mw-headline" id="Semantics_2">Semantics</span></h3> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
116 <p>Level 2 works pretty similarly to level 1, with one big difference: instead of a decrement from 1 failing, it succeeds, decrementing the counter to 0. This is known as a "critical state" for the counter (in the sense that bad things can potentially happen very soon); if a counter that's currently at 0 is decremented again, you get <a href="/wiki/Undefined_behaviour" title="Undefined behaviour" class="mw-redirect">undefined behaviour</a>, a state which must be avoided in any valid program. The trigger in the <code>=</code> column has similar semantics as in level 1 – it runs on an attempt to decrement a counter at 1 – but is now called the "critical decrement" rather than "failed decrement" trigger (as the decrement didn't actually fail). (Fans of :≠ will be reminded of the way that that language works, in which you mustn't, say, attempt to disable a function that's already disabled. This language has quite a similar style.) |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
117 </p> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
118 <h3><span class="mw-headline" id="Syntax_2">Syntax</span></h3> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
119 <p>The syntax for level 2 is entirely analogous for that at level 1; the semantic changes do not require any syntactic changes. The only difference is that the first line is |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
120 <code>L2+=-</code> rather than <code>L1+=-</code>. |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
121 </p> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
122 <h3><span class="mw-headline" id="Implementing_level_1_in_level_2">Implementing level 1 in level 2</span></h3> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
123 <p>Making a similar change to a Minsky machine would be trivial; after a critical decrement, you could just increment the counter again then continue what you were doing. It turns out that it's possible to do something similar in The Amnesiac From Minsk (although the construction is a bit more complex due to the absence of an instruction pointer). |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
124 </p><p>The idea is to emulate each level 1 counter with a triple of level 2 counters, called "value", "restore", and "increment". While the counter is not being accessed, "value" holds the same value as the level 1 counter being emulated would, and the other two hold 1. The triggers are connected as follows: |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
125 </p> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
126 <ul><li> "value" successful-decrement is the same as the emulated counter's successful-decrement trigger</li> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
127 <li> "value" critical-decrement increments "restore"</li> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
128 <li> "value" increment decrements "restore"</li> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
129 <li> "restore" successful-decrement is the same as the emulated counter's failed-decrement trigger</li> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
130 <li> "restore" critical-decrement increments "restore"</li> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
131 <li> "restore" increment decrements "increment"</li> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
132 <li> "increment" successful-decrement is the same as the emulated counter's increment trigger</li> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
133 <li> "increment" critical-decrement increments "increment"</li> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
134 <li> "increment" increment increments "value"</li></ul> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
135 <p>In order to emulate incrementing the counter, we increment "increment": |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
136 </p> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
137 <pre>value restore increment |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
138 x 1 1 Before starting the increment |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
139 x 1 2 Increment starts from outside |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
140 x+1 1 2 "value" incremented |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
141 x+1 0 2 so it decrements "restore" |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
142 x+1 1 2 which increments itself |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
143 x+1 1 1 which decrements "increment" |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
144 </pre> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
145 <p>and as that was a successful-decrement, we run the increment trigger, as desired. |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
146 </p><p>To emulate decrementing the counter, we decrement "value". For a successful-decrement, this is trivial: it decrements successfully and the successful-decrement trigger runs. An emulated failed-decrement is more interesting: |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
147 </p> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
148 <pre>value restore increment |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
149 1 1 1 Before starting the decrement |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
150 0 1 1 Decrement starts from outside |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
151 0 2 1 "restore" incremented |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
152 0 2 0 so it decrements "increment" |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
153 0 2 1 which increments itself |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
154 1 2 1 which increments "value" |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
155 1 1 1 which decrements "restore" |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
156 </pre> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
157 <p>and now we're back where we started, continuing with the emulated failed-decrement trigger. Which is as we wanted. |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
158 </p><p>Because The Amnesiac From Minsk is Turing complete at level 1, and we can compile level 1 into level 2, it's Turing complete at level 2 too. |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
159 </p> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
160 <h3><span class="mw-headline" id="Implementing_level_2_in_level_1">Implementing level 2 in level 1</span></h3> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
161 <p>Going the other way is simpler, but not entirely trivial; incrementing a counter after a failed decrement leaves it in a different state from incrementing a counter after a critical decrement. The method we use is to construct signed counters out of pairs of unsigned counters; we have a "positive" and a "negative" counter, with triggers as follows: |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
162 </p> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
163 <ul><li> "positive" failed-decrement increments "negative"</li> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
164 <li> "negative" failed-decrement increments "positive"</li> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
165 <li> "positive" successful-decrement is the same as the emulated counter's successful-decrement trigger (because it runs on decrements from 2 or more to 1 or more)</li> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
166 <li> "negative" increment is the same as the emulated counter's critical-decrement trigger (because it runs on decrements from 1 or less to 0 or less)</li> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
167 <li> "positive" increment is the same as the emulated counter's increment trigger (and runs on increments from 1 or more to 2 or more)</li> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
168 <li> "negative" successful-decrement is the same as the emulated counter's increment trigger (and runs on increments from 0 or less to 1 or less)</li></ul> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
169 <p>The two counters effectively encode a single integer, whose value is (positive - negative) + 1, which gives all the behaviour that level 2 needs (while potentially useful for other purposes, too, as the "undefined" behaviour of decrementing a critical trigger is both well-defined and useful in this construction). |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
170 </p> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
171 <h2><span class="mw-headline" id="The_Amnesiac_From_Minsk.2C_level_3">The Amnesiac From Minsk, level 3</span></h2> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
172 <h3><span class="mw-headline" id="Semantics_3">Semantics</span></h3> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
173 <p>Unlike levels 1 and 2, in which only one counter is incremented or decremented at a time, a counter adjustment in the level 3 language affects two counters at once. Specifically, incrementing counter <i>x</i> decrements counter <i>x</i>+1, and a decrement cannot be made except via incrementing the previous counter. (The exception is incrementing the last counter; this doesn't cause a counter to be decremented.) The implementation starts running the program via incrementing the first counter, as before, but it now also has the side effect of decrementing the second counter. The first counter starts at 1, and can only go up from there (because there is no way to decrement it). |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
174 </p><p>The language otherwise works like the level 2 language; decrementing a counter at 1 is a critical decrement, and that counter thus must not be decremented (and thus the previous counter must not be incremented) until the counter has been restored to a positive value. With the previous-level languages, this would cause problems, as two triggers would run as a result of the two changes. Level 3 does not use increment triggers, just decrement triggers; as a result, you get a successful-decrement or critical-decrement trigger running for the counter that was decremented. Again, the last counter is an exception, and does have an increment trigger, which runs when the last counter is incremented (as no counter is decremented in this case). |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
175 </p><p>The I/O (well, output) extension explained above doesn't really work at this level. At present, there's no defined replacement for it, although perhaps one will be added at some point. |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
176 </p> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
177 <h3><span class="mw-headline" id="Syntax_3">Syntax</span></h3> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
178 <p>Syntax is basically the same as with levels 1 and 2, but with the increment triggers removed, and with only the increment half of an adjustment shown (and the first line changed to <code>L3=-</code>): |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
179 </p> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
180 <pre>L3 = - |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
181 1: +2; +1; @5 |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
182 2: +0; +3; @9 This is a comment. |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
183 3: +1; +0; @12 |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
184 +: +1 |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
185 </pre> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
186 <p>As can be seen, the last line starts with <code>+:</code> and has a single trigger specified, which is the increment trigger for the last counter. Note also that the first row is labeled <code>1:</code>; the counter numbers still start at 0, but as counter 0 cannot be decremented, there's correspondingly no point in specifying decrement triggers for it. |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
187 </p> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
188 <h3><span class="mw-headline" id="Implementing_level_3_in_level_2">Implementing level 3 in level 2</span></h3> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
189 <p>This is pretty trivial; you can use the same counters in level 2 as in level 3, and just have the increment trigger of each counter (but the last) decrement the following counter. As such, level 3 can be seen as a strict subset of level 2; it's level 2 with the additional constraint that all but the last increment trigger has to have a specified value. |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
190 </p><p>It's currently not known whether going the other way round (implementing level 2 in level 3) is possible. It seems likely, though; the most promising approach is to place padding counters (that are never allowed to get near 1) between meaningful counters, and to increment and re-decrement counters in order to prevent the padding getting too small. (The main problem is to handle the re-decrement of the "value" counters; the problem is that if you set a counter to remember you're doing a re-decrement, it's hard to treat that counter consistently between an emulated successful decrement and an emulated failed decrement.) |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
191 </p> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
192 <h2><span class="mw-headline" id="The_Amnesiac_From_Minsk.2C_level_4">The Amnesiac From Minsk, level 4</span></h2> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
193 <h3><span class="mw-headline" id="Semantics_4">Semantics</span></h3> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
194 <p>Level 4 of The Amnesiac From Minsk is similar to level 3, but with different behaviour for the triggers, and a restriction on the counters as well. The restriction on the counters is that you may never have two critical counters in a row (attempting to create such a situation is undefined behaviour); as with level 3, the first counter always starts at 1 and can only go up from there (although the last counter can go down to 0). As for the triggers, each counter has but a single trigger; the result of the decrement determines which counter's trigger runs: |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
195 </p> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
196 <ul><li> If, in an increment/decrement pair, the decrement is critical, then the trigger for the decremented counter runs.</li> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
197 <li> Otherwise, the trigger for the incremented counter runs.</li></ul> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
198 <p>As an extra rule (that's part of the language definition, in order to make the language easier to implement, but which would nonetheless be obeyed by any useful program even if it didn't exist because otherwise some counters couldn't change both up and down), all the triggers that exist must be distinct (i.e. increment different counters). |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
199 </p> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
200 <h3><span class="mw-headline" id="Syntax_4">Syntax</span></h3> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
201 <p>Syntax works as in previous levels, with the same sorts of changes; the first line is now <code>L4?</code>, and each line only lists one trigger. There are no longer special cases for the first and last lines. Thus, the language looks like this: |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
202 </p> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
203 <pre>L4  ? |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
204 0: +2; @1 |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
205 1: +0; @9 This is a comment. |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
206 2: +1; @12 |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
207 3: +3; @5 |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
208 </pre> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
209 <h3><span class="mw-headline" id="Implementing_level_4_in_level_3">Implementing level 4 in level 3</span></h3> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
210 <p>Just like implementing level 3 in level 2, this is trivial; you simply copy each of the triggers from the level 4 program into the two corresponding triggers in the level 3 program (apart from the first trigger, which has only one corresponding trigger (the successful-decrement trigger for the second counter) and thus only gets copied to one place). |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
211 </p><p>It's currently unknown whether it's possible to go the other way, and implement level 3 in level 4. |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
212 </p> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
213 <h3><span class="mw-headline" id="Implementation_in_Last_ReSort">Implementation in Last ReSort</span></h3> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
214 <p>To implement The Amnesiac From Minsk level 4 in <a href="/wiki/Last_ReSort" title="Last ReSort">Last ReSort</a>, we first construct a list of integers from the list of counters by taking a cumulative sum of the initial values of the counters. So for example, if the initial values were (in order) 1, 7, 0, 4, 2, our cumulative sum would be 1, 8, 8, 12, 14. Then we permute the list according to the list of triggers; the element corresponding to the target of the trigger of the last counter comes first, the element corresponding to the target of the trigger of the penultimate counter counter comes second, and so on. The initial pointer points to the element that was permuted from the element corresponding to the first counter (which will always have the value 1). |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
215 </p><p>Taking our example from above: |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
216 </p> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
217 <pre>L4  ? |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
218 0: +2; @1 |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
219 1: +0; @9 This is a comment. |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
220 2: +1; @12 |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
221 3: +3; @5 |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
222 </pre> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
223 <p>we get a list [1, 10, 22, 27], which would then be reordered as [27, 10, 1, 22] to provide the Last ReSort program, with the initial pointer pointing to the third element. |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
224 </p><p>In order to see how this construction works, consider what one Last ReSort step is doing, when interpreted through the lens of this construction: |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
225 </p> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
226 <ul><li> The increment is adding 1 to a single cumulative sum element. This corresponds to incrementing the accumulated element that was added at that point and decrementing the next element (which is exactly how memory changes in The Amnesiac From Minsk level 4).</li> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
227 <li> The retargeting is selecting an element. If the list of cumulative sums were strictly in order (i.e. we accumulated only positive values), then the element that would be selected is the nth from the end, if we incremented counter n (which is exactly the element that's the target of the decremented counter). The only way in which it can fail to be in strict order is if we decremented a counter down to 0, causing its cumulative sum to equal that of the counter afterwards and thus cause the pointer to point at the element before as a consequence of Last Resort's tiebreak rules (corresponding to using the target from the counter afterwards). Note that a three-way tie, which would cause problems, cannot happen because we disallow having two critical counters in a row.</li></ul> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
228 <p>In other words, the two languages are doing the same thing. |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
229 </p> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
230 <h2><span class="mw-headline" id="See_also">See also</span></h2> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
231 <ul><li> <a href="/wiki/Minsky_machine" title="Minsky machine">Minsky machine</a></li> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
232 <li> <a href="/wiki/StackFlow" title="StackFlow">StackFlow</a></li> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
233 <li> <a href="/wiki/Unassignable" title="Unassignable">:≠</a></li> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
234 <li> <a href="/wiki/Last_ReSort" title="Last ReSort">Last ReSort</a></li></ul> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
235 |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
236 <!-- |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
237 NewPP limit report |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
238 Cached time: 20170129113539 |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
239 Cache expiry: 86400 |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
240 Dynamic content: false |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
241 CPU time usage: 0.052 seconds |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
242 Real time usage: 0.054 seconds |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
243 Preprocessor visited node count: 75/1000000 |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
244 Preprocessor generated node count: 80/1000000 |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
245 Post‐expand include size: 0/2097152 bytes |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
246 Template argument size: 0/2097152 bytes |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
247 Highest expansion depth: 2/40 |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
248 Expensive parser function count: 0/100 |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
249 --> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
250 |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
251 <!-- |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
252 Transclusion expansion time report (%,ms,calls,template) |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
253 100.00% 0.000 1 - -total |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
254 --> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
255 |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
256 <!-- Saved in parser cache with key esolang_wiki:pcache:idhash:10083-0!*!0!!en!*!* and timestamp 20170129113539 and revision id 45748 |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
257 --> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
258 </div> <div class="printfooter"> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
259 Retrieved from "<a dir="ltr" href="https://esolangs.org/w/index.php?title=The_Amnesiac_From_Minsk&oldid=45748">https://esolangs.org/w/index.php?title=The_Amnesiac_From_Minsk&oldid=45748</a>" </div> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
260 <div id="catlinks" class="catlinks" data-mw="interface"><div id="mw-normal-catlinks" class="mw-normal-catlinks"><a href="/wiki/Special:Categories" title="Special:Categories">Categories</a>: <ul><li><a href="/wiki/Category:Languages" title="Category:Languages">Languages</a></li><li><a href="/wiki/Category:Turing_complete" title="Category:Turing complete">Turing complete</a></li><li><a href="/wiki/Category:Output_only" title="Category:Output only">Output only</a></li><li><a href="/wiki/Category:Unimplemented" title="Category:Unimplemented">Unimplemented</a></li><li><a href="/wiki/Category:Cell-based" title="Category:Cell-based">Cell-based</a></li><li><a href="/wiki/Category:Low-level" title="Category:Low-level">Low-level</a></li><li><a href="/wiki/Category:2015" title="Category:2015">2015</a></li></ul></div></div> <div class="visualClear"></div> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
261 </div> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
262 </div> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
263 <div id="mw-navigation"> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
264 <h2>Navigation menu</h2> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
265 |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
266 <div id="mw-head"> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
267 <div id="p-personal" role="navigation" class="" aria-labelledby="p-personal-label"> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
268 <h3 id="p-personal-label">Personal tools</h3> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
269 <ul> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
270 <li id="pt-createaccount"><a href="/w/index.php?title=Special:CreateAccount&returnto=The+Amnesiac+From+Minsk" title="You are encouraged to create an account and log in; however, it is not mandatory">Create account</a></li><li id="pt-login"><a href="/w/index.php?title=Special:UserLogin&returnto=The+Amnesiac+From+Minsk" title="You are encouraged to log in; however, it is not mandatory [o]" accesskey="o">Log in</a></li> </ul> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
271 </div> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
272 <div id="left-navigation"> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
273 <div id="p-namespaces" role="navigation" class="vectorTabs" aria-labelledby="p-namespaces-label"> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
274 <h3 id="p-namespaces-label">Namespaces</h3> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
275 <ul> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
276 <li id="ca-nstab-main" class="selected"><span><a href="/wiki/The_Amnesiac_From_Minsk" title="View the content page [c]" accesskey="c">Page</a></span></li> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
277 <li id="ca-talk" class="new"><span><a href="/w/index.php?title=Talk:The_Amnesiac_From_Minsk&action=edit&redlink=1" title="Discussion about the content page [t]" accesskey="t" rel="discussion">Discussion</a></span></li> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
278 </ul> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
279 </div> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
280 <div id="p-variants" role="navigation" class="vectorMenu emptyPortlet" aria-labelledby="p-variants-label"> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
281 <h3 id="p-variants-label"> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
282 <span>Variants</span><a href="#"></a> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
283 </h3> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
284 |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
285 <div class="menu"> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
286 <ul> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
287 </ul> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
288 </div> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
289 </div> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
290 </div> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
291 <div id="right-navigation"> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
292 <div id="p-views" role="navigation" class="vectorTabs" aria-labelledby="p-views-label"> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
293 <h3 id="p-views-label">Views</h3> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
294 <ul> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
295 <li id="ca-view" class="selected"><span><a href="/wiki/The_Amnesiac_From_Minsk" >Read</a></span></li> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
296 <li id="ca-viewsource"><span><a href="/w/index.php?title=The_Amnesiac_From_Minsk&action=edit" title="This page is protected. You can view its source [e]" accesskey="e">View source</a></span></li> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
297 <li id="ca-history" class="collapsible"><span><a href="/w/index.php?title=The_Amnesiac_From_Minsk&action=history" title="Past revisions of this page [h]" accesskey="h">View history</a></span></li> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
298 </ul> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
299 </div> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
300 <div id="p-cactions" role="navigation" class="vectorMenu emptyPortlet" aria-labelledby="p-cactions-label"> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
301 <h3 id="p-cactions-label"><span>More</span><a href="#"></a></h3> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
302 |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
303 <div class="menu"> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
304 <ul> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
305 </ul> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
306 </div> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
307 </div> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
308 <div id="p-search" role="search"> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
309 <h3> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
310 <label for="searchInput">Search</label> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
311 </h3> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
312 |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
313 <form action="/w/index.php" id="searchform"> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
314 <div id="simpleSearch"> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
315 <input type="search" name="search" placeholder="Search" title="Search Esolang [f]" accesskey="f" id="searchInput"/><input type="hidden" value="Special:Search" name="title"/><input type="submit" name="fulltext" value="Search" title="Search the pages for this text" id="mw-searchButton" class="searchButton mw-fallbackSearchButton"/><input type="submit" name="go" value="Go" title="Go to a page with this exact name if it exists" id="searchButton" class="searchButton"/> </div> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
316 </form> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
317 </div> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
318 </div> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
319 </div> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
320 <div id="mw-panel"> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
321 <div id="p-logo" role="banner"><a class="mw-wiki-logo" href="/wiki/Main_Page" title="Visit the main page"></a></div> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
322 <div class="portal" role="navigation" id='p-navigation' aria-labelledby='p-navigation-label'> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
323 <h3 id='p-navigation-label'>Navigation</h3> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
324 |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
325 <div class="body"> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
326 <ul> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
327 <li id="n-mainpage-description"><a href="/wiki/Main_Page" title="Visit the main page [z]" accesskey="z">Main page</a></li><li id="n-portal"><a href="/wiki/Esolang:Community_portal" title="About the project, what you can do, where to find things">Community portal</a></li><li id="n-Language-list"><a href="/wiki/Language_list">Language list</a></li><li id="n-recentchanges"><a href="/wiki/Special:RecentChanges" title="A list of recent changes in the wiki [r]" accesskey="r">Recent changes</a></li><li id="n-randompage"><a href="/wiki/Special:Random" title="Load a random page [x]" accesskey="x">Random page</a></li><li id="n-help"><a href="/wiki/Esolang:Help" title="The place to find out">Help</a></li> </ul> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
328 </div> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
329 </div> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
330 <div class="portal" role="navigation" id='p-tb' aria-labelledby='p-tb-label'> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
331 <h3 id='p-tb-label'>Tools</h3> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
332 |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
333 <div class="body"> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
334 <ul> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
335 <li id="t-whatlinkshere"><a href="/wiki/Special:WhatLinksHere/The_Amnesiac_From_Minsk" title="A list of all wiki pages that link here [j]" accesskey="j">What links here</a></li><li id="t-recentchangeslinked"><a href="/wiki/Special:RecentChangesLinked/The_Amnesiac_From_Minsk" title="Recent changes in pages linked from this page [k]" accesskey="k">Related changes</a></li><li id="t-specialpages"><a href="/wiki/Special:SpecialPages" title="A list of all special pages [q]" accesskey="q">Special pages</a></li><li id="t-print"><a href="/w/index.php?title=The_Amnesiac_From_Minsk&printable=yes" rel="alternate" title="Printable version of this page [p]" accesskey="p">Printable version</a></li><li id="t-permalink"><a href="/w/index.php?title=The_Amnesiac_From_Minsk&oldid=45748" title="Permanent link to this revision of the page">Permanent link</a></li><li id="t-info"><a href="/w/index.php?title=The_Amnesiac_From_Minsk&action=info" title="More information about this page">Page information</a></li> </ul> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
336 </div> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
337 </div> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
338 </div> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
339 </div> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
340 <div id="footer" role="contentinfo"> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
341 <ul id="footer-info"> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
342 <li id="footer-info-lastmod"> This page was last modified on 3 December 2015, at 08:42.</li> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
343 <li id="footer-info-copyright">Content is available under <a href="/wiki/Esolang:Copyrights" title="Esolang:Copyrights">CC0 public domain dedication</a>.</li> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
344 </ul> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
345 <ul id="footer-places"> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
346 <li id="footer-places-about"><a href="/wiki/Esolang:About" title="Esolang:About">About Esolang</a></li> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
347 <li id="footer-places-disclaimer"><a href="/wiki/Esolang:General_disclaimer" title="Esolang:General disclaimer">Disclaimers</a></li> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
348 </ul> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
349 <ul id="footer-icons" class="noprint"> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
350 <li id="footer-copyrightico"> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
351 <a href="http://creativecommons.org/publicdomain/zero/1.0/"><img src="/w/resources/assets/licenses/cc-0.png" alt="CC0 public domain dedication" width="88" height="31"/></a> </li> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
352 <li id="footer-poweredbyico"> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
353 <a href="//www.mediawiki.org/"><img src="/w/resources/assets/poweredby_mediawiki_88x31.png" alt="Powered by MediaWiki" srcset="/w/resources/assets/poweredby_mediawiki_132x47.png 1.5x, /w/resources/assets/poweredby_mediawiki_176x62.png 2x" width="88" height="31"/></a> </li> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
354 </ul> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
355 <div style="clear:both"></div> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
356 </div> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
357 <script>(window.RLQ=window.RLQ||[]).push(function(){mw.loader.state({"user":"ready","user.groups":"ready"});mw.loader.load(["mediawiki.toc","mediawiki.action.view.postEdit","site","mediawiki.user","mediawiki.hidpi","mediawiki.page.ready","mediawiki.searchSuggest"]);});</script><script>(window.RLQ=window.RLQ||[]).push(function(){mw.config.set({"wgBackendResponseTime":181});});</script> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
358 </body> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
359 <!-- Cached 20170129113539 --> |
b1dc3ef300c2
<oerjan> fetch minsk https://esolangs.org/wiki/The Amnesiac From Minsk
HackBot
parents:
diff
changeset
|
360 </html> |