←2023-07-29 2023-07-30 2023-07-31→ ↑2023 ↑all
00:29:32 -!- Hooloovoo has quit (Quit: ZNC 1.8.2+deb2+b1 - https://znc.in).
00:30:52 -!- Hooloovoo has joined.
01:24:39 -!- razetime has joined.
01:25:46 -!- Noisytoot has quit (Quit: ZNC 1.8.2 - https://znc.in).
01:31:50 -!- Noisytoot has joined.
01:50:34 <esolangs> [[So is your face.]] M https://esolangs.org/w/index.php?diff=112561&oldid=112548 * None1 * (+2) /* Syntax */
01:51:41 <esolangs> [[User:None1]] https://esolangs.org/w/index.php?diff=112562&oldid=112525 * None1 * (+23)
02:04:12 <esolangs> [[Hello world program in esoteric languages (N-Z)]] https://esolangs.org/w/index.php?diff=112563&oldid=112526 * None1 * (+57) /* SNUSP */
02:18:07 <esolangs> [[So is your face.]] https://esolangs.org/w/index.php?diff=112564&oldid=112561 * None1 * (+189) Added my Python interpreter and change Unimplemented to implmented.
02:39:56 <esolangs> [[Goldfuck]] N https://esolangs.org/w/index.php?oldid=112565 * None1 * (+1979) Created page with "Goldfuck is a derivative of [[!!Fuck]] created by [[User:None1]] ==Syntax== Any Goldfuck program is the golden ratio (or "phi") recited, with wrong digits. Starting from the digit after the decimal point, a correct digit stands for ! in [[!!Fuck]], while a wrong digit s
02:42:22 <esolangs> [[Goldfuck]] https://esolangs.org/w/index.php?diff=112566&oldid=112565 * None1 * (+191) /* Example Programs */
02:46:35 -!- razetime has quit (Ping timeout: 244 seconds).
02:47:14 <esolangs> [[Goldfuck]] M https://esolangs.org/w/index.php?diff=112567&oldid=112566 * None1 * (-24) /* Hello World */ Fixed program
02:49:26 <esolangs> [[Goldfuck]] M https://esolangs.org/w/index.php?diff=112568&oldid=112567 * None1 * (+0) /* Cat Program */ Fixed program
02:51:12 <esolangs> [[Language list]] https://esolangs.org/w/index.php?diff=112569&oldid=112549 * None1 * (+15) /* G */ Added [[Goldfuck]]
02:52:08 <esolangs> [[User:None1]] https://esolangs.org/w/index.php?diff=112570&oldid=112562 * None1 * (+73)
02:53:50 <esolangs> [[Goldfuck]] M https://esolangs.org/w/index.php?diff=112571&oldid=112568 * None1 * (+0) /* Hello World */ Better formatting
02:54:45 <esolangs> [[Programming abillities of different esolangs]] M https://esolangs.org/w/index.php?diff=112572&oldid=112384 * None1 * (-49) /* flag */
02:56:09 <esolangs> [[Programming abillities of different esolangs]] https://esolangs.org/w/index.php?diff=112573&oldid=112572 * None1 * (+324) /* !!brainfeed */ Added [[!!Fuck]]
02:56:41 <esolangs> [[Programming abillities of different esolangs]] M https://esolangs.org/w/index.php?diff=112574&oldid=112573 * None1 * (-21) /* Brainfuck */ Uh Oh
02:58:46 <esolangs> [[Hello world program in esoteric languages (nonalphabetic and A-M)]] https://esolangs.org/w/index.php?diff=112575&oldid=112453 * None1 * (+653) /* Goldfish */
03:02:29 -!- razetime has joined.
03:09:09 <esolangs> [[Goldfuck]] M https://esolangs.org/w/index.php?diff=112576&oldid=112571 * None1 * (+9967) Added the correct golden ratio for comparison
03:11:00 <esolangs> [[Goldfuck]] M https://esolangs.org/w/index.php?diff=112577&oldid=112576 * None1 * (-9247) /* Example Programs */ Wrap
03:52:31 -!- razetime has quit (Ping timeout: 245 seconds).
04:16:33 -!- siesta has joined.
04:38:37 -!- ais523 has joined.
04:51:49 -!- siesta has quit (Quit: ang mamatay ng dahil sayo...).
04:51:54 <esolangs> [[Goldfuck]] M https://esolangs.org/w/index.php?diff=112578&oldid=112577 * None1 * (-5) /* Example Programs */
04:59:44 -!- b_jonas has joined.
05:00:44 <esolangs> [[!!Fuck]] https://esolangs.org/w/index.php?diff=112579&oldid=105666 * None1 * (+297) Added an example of the [[Truth Machine]]
05:02:54 <esolangs> [[Goldfuck]] https://esolangs.org/w/index.php?diff=112580&oldid=112578 * None1 * (+296) /* Example Programs */ Added an example of the [[Truth Machine]]
05:03:32 <esolangs> [[Goldfuck]] M https://esolangs.org/w/index.php?diff=112581&oldid=112580 * None1 * (+0) /* Truth Machine */
05:04:16 <esolangs> [[Goldfuck]] M https://esolangs.org/w/index.php?diff=112582&oldid=112581 * None1 * (+291) /* Truth Machine */
05:05:37 -!- ais523 has quit (Read error: Connection reset by peer).
05:06:27 <esolangs> [[Truth-machine]] https://esolangs.org/w/index.php?diff=112583&oldid=112536 * None1 * (+291) /* Implementations */ Added [[!!Fuck]]
05:08:45 <esolangs> [[Truth-machine]] https://esolangs.org/w/index.php?diff=112584&oldid=112583 * None1 * (+295) /* Godencode */ Added [[Goldfuck]]
05:09:33 <esolangs> [[Truth-machine]] M https://esolangs.org/w/index.php?diff=112585&oldid=112584 * None1 * (+64) /* Goldfuck */
05:09:37 <b_jonas> ais523: you know what this is really similar to? two-prime fractran. so you can add up the increment and decrement statements and, for each conditional restart statement, know how much the variables changed since the start of the program, and that works backwards two, you can make restart statements for any difference in the two variables. the difference from fractran is, in fractran you restart if
05:09:43 <b_jonas> *both* variables are positive, whereas here you restart if *either* variable is negative
05:10:10 <b_jonas> in the form where your statements are restart if x<0 and restart if y<0 that is
05:10:10 -!- ais523 has joined.
05:11:16 <b_jonas> int-e: ping
05:13:00 -!- ais523 has quit (Read error: Connection reset by peer).
05:14:25 -!- ais523 has joined.
06:14:55 <esolangs> [[Analscript]] M https://esolangs.org/w/index.php?diff=112586&oldid=112560 * PythonshellDebugwindow * (+72) Categories
07:24:12 -!- tromp has joined.
07:52:31 -!- tromp has quit (Read error: Connection reset by peer).
07:57:35 -!- jix_ has changed nick to jix.
08:30:28 -!- ais523 has quit (Read error: Connection reset by peer).
08:31:50 -!- ais523 has joined.
08:34:04 -!- tromp has joined.
08:46:26 <esolangs> [[!!Fuck]] https://esolangs.org/w/index.php?diff=112587&oldid=112579 * None1 * (+2464) /* Examples */ Added example of computing the golden ratio
08:46:53 <esolangs> [[!!Fuck]] M https://esolangs.org/w/index.php?diff=112588&oldid=112587 * None1 * (+0) /* Compute the golden ratio (with line feeds) */
08:53:33 <esolangs> [[!!Fuck]] M https://esolangs.org/w/index.php?diff=112589&oldid=112588 * None1 * (+18) /* Compute the golden ratio (with soft wraps) */
09:25:10 <b_jonas> I think if you had n registers with increment, decrement, and branch to start if negative commands, then you could translate The waterfall model with n clocks into this
09:27:10 <b_jonas> the clocks are simulated directly by the registers. your translated program would first decrement each clock. then for each clock, increment the clocks as you'd need if this clock reached zero, branch to start if that clock is negative, undo those increments.
09:28:06 <b_jonas> unfortunately you're interested in the behavior for two or three registers, and you probably need more clocks than that for TC-ness
09:28:34 <b_jonas> ah no, the construction is slightly more complex
09:29:21 <b_jonas> I think you need to represent the clocks biased in the registers such that the register value of zero represents the clock with as much water as it has after it's incremented from its own trigger
09:30:00 -!- razetime has joined.
09:30:22 <b_jonas> and IIUC the reason why this n-register machine may be more powerful than an n-clock TWM is that it can have multiple triggers at different values of the clocks, and it can decrement the clocks by more than one so that different triggers can be reached depending on the value modulo the decrement
09:32:05 -!- Sgeo has quit (Read error: Connection reset by peer).
09:32:17 -!- razetime has quit (Remote host closed the connection).
09:32:23 <b_jonas> I suspect that with four registers you'd get turing-completeness by simulating a 2-register Minsky machine, with one register storing the state and another register needed temporarily to store the new PC when the old PC resets, but I'm not sure in this
09:43:56 -!- Lord_of_Life_ has joined.
09:44:59 -!- Lord_of_Life has quit (Ping timeout: 264 seconds).
09:45:15 -!- Lord_of_Life_ has changed nick to Lord_of_Life.
09:52:39 <int-e> pong?
09:54:57 <int-e> (on that topic, there's still a bug in my translation from Minsky machines due to the offset tweak)
09:55:00 <int-e> also I'm not here.
10:03:51 <b_jonas> good
10:03:55 <b_jonas> I don't see you
10:28:14 <esolangs> [[Beditasm]] M https://esolangs.org/w/index.php?diff=112590&oldid=112293 * None1 * (+18) /* Commands */
10:34:52 <esolangs> [[Trivial brainfuck substitution]] https://esolangs.org/w/index.php?diff=112591&oldid=111055 * None1 * (+157) /* Example Members of the TrivialBrainfuckSubstitution family */ Added.example of [[Scratch is dumb]]
10:35:32 <esolangs> [[Trivial brainfuck substitution]] M https://esolangs.org/w/index.php?diff=112592&oldid=112591 * None1 * (+0) /* Example Members of the TrivialBrainfuckSubstitution family */
10:39:30 <esolangs> [[Trivial brainfuck substitution]] M https://esolangs.org/w/index.php?diff=112593&oldid=112592 * None1 * (+0) /* Example Members of the TrivialBrainfuckSubstitution family */
10:53:01 <esolangs> [[Esolang:Categorization]] M https://esolangs.org/w/index.php?diff=112594&oldid=112496 * EsolangGuy * (-137)
10:54:54 <esolangs> [[Esolang:Categorization]] M https://esolangs.org/w/index.php?diff=112595&oldid=112594 * EsolangGuy * (-4721) Blanked the page
10:55:43 <esolangs> [[Esolang:Categorization]] https://esolangs.org/w/index.php?diff=112596&oldid=112595 * EsolangGuy * (+4256)
10:56:06 <esolangs> [[Esolang:Categorization]] https://esolangs.org/w/index.php?diff=112597&oldid=112596 * EsolangGuy * (+566)
11:00:20 -!- tromp has quit (Quit: My iMac has gone to sleep. ZZZzzz…).
11:06:17 <esolangs> [[Scratch is dumb]] https://esolangs.org/w/index.php?diff=112598&oldid=112541 * None1 * (+918) /* Turing completeness */ Implement the esolang in Python and add implemented category
11:06:22 <int-e> b_jonas: good
11:08:57 <esolangs> [[User:None1]] M https://esolangs.org/w/index.php?diff=112599&oldid=112570 * None1 * (+6) Formatting
11:47:24 -!- tromp has joined.
11:56:32 <esolangs> [[Esolang:Categorization]] https://esolangs.org/w/index.php?diff=112600&oldid=112597 * EsolangGuy * (+41)
11:59:16 <esolangs> [[Esolang talk:Categorization]] https://esolangs.org/w/index.php?diff=112601&oldid=110635 * EsolangGuy * (+54)
11:59:56 <esolangs> [[Esolang talk:Categorization]] https://esolangs.org/w/index.php?diff=112602&oldid=112601 * EsolangGuy * (+0)
12:13:05 <int-e> b_jonas: so hmm did you ping me for something specific or just because the topic might interest me because of yesterday's discussion?
12:13:29 <int-e> (which it did)
12:37:02 <int-e> . o O ( Cool new CSS trick: type "body" as "bode" and wonder why the rules aren't reply )
12:37:10 <int-e> applied
13:10:43 -!- tromp has quit (Quit: My iMac has gone to sleep. ZZZzzz…).
13:11:24 <b_jonas> int-e: just for yesterday's discussion about the computational model that ais brought upp
13:12:38 <int-e> okay then
13:12:46 <int-e> (thanks)
13:25:28 -!- tromp has joined.
13:29:38 <ais523> OK, so this is an esolang thing I've been working on for far too long and have now finished: http://ais523.me.uk/articles/netrunner-is-turing-complete.html
13:30:00 <ais523> (I didn't finish the one for Magic: the Gathering, but people widely believe that to be TC already, so it's less interesting than the Netrunner result which is new)
13:31:06 <ais523> there is an esolang implemented as part of the article, but it's just a two-counter machine with vaguely quirky control flow
13:31:50 <ais523> I wanted to get it finished before the new Netrunner set came out, partly because if I post it during spoiler season people are more likely to see the post, and partly because I'm worried that they may imminently be about to errata a card in a way that breaks the construction
13:34:52 <int-e> . o O ( esoteric card counters )
13:34:54 <river> is there a list of all articles on your site?
13:35:35 <ais523> river: so far this is the only one
13:35:50 <ais523> I have another site which has a blog, and a list
13:35:58 <ais523> there will likely be an article list once the new site gets more used
13:36:39 <ais523> http://nethack4.org/blog/ if you are interested in reading articles I have written, but all of those are about NetHack – I started a new site so that I could write about other topics
13:37:58 -!- Noisytoot has quit (Remote host closed the connection).
13:39:31 -!- Noisytoot has joined.
13:50:02 -!- Noisytoot has quit (Excess Flood).
13:51:50 -!- Noisytoot has joined.
14:16:33 -!- ais523 has quit (Quit: quit).
14:16:50 -!- Noisytoot has quit (Ping timeout: 252 seconds).
14:23:34 -!- Noisytoot has joined.
15:44:57 -!- tromp has quit (Read error: Connection reset by peer).
15:47:18 -!- ais523 has joined.
16:04:20 <esolangs> [[Fnaf sort]] N https://esolangs.org/w/index.php?oldid=112603 * Cinnamony * (+290) Created page with "Fnaf sort is a sorting algorithm that kills the data with the scooper until it's sorted properly. == Example == First let's say we have this dataset. 1 45 3 3008 We use the scooper on them. 1435 003 8 And we repeat until this iteration: 4 15 38003 Or any ot
16:23:05 -!- razetime has joined.
16:25:41 <b_jonas> ais523: make sure to link the article from the esowiki, it's clearly on topic
16:47:05 <ais523> b_jonas: I agree it's on-topic but there's nowhere obvious to put it
17:10:55 <int-e> . o O ( make a stub for Netrunner, put it on the talk page. )
17:11:19 <int-e> . o O ( information hiding )
17:20:13 <ais523> but Netrunner is a card game, not a programming language – the relevance is that it's TC, and the wiki doesn't have an easy way to handle TC things that aren't programming languages
17:20:57 <int-e> Just make a page and see if anyone deletes it ;-)
17:22:37 <int-e> (I know, it's awkward, to say the least, to go against principles as an admin.)
17:23:44 <ais523> well, as an admin you really want to find the best way to make this sort of thing viable, rather than doing it badly and having people copy you
17:24:19 <ais523> I can see an argument for making a user page for "non-programming-languages that are Turing complete", although the inclusion criteria might be awkward
17:28:04 <b_jonas> I think you can create a page for something like OpenTTD or Magic: the Gathering that isn't a programming language but has something interesting programming-wise to say about them
17:28:28 <b_jonas> I'd probably just create the page and put it into [[Category:Languages]]
17:28:46 <sknebel> make it a language: "NetrunnerScript", which happens to run in terms of a Netrunner deck :D
17:29:14 <b_jonas> wait
17:29:40 <b_jonas> we have a [[Category:Proofs]]
17:29:49 <b_jonas> it's documented on [[Esolang:Categorization]]
17:29:55 <int-e> . o O ( Weird Machines )
17:30:00 <b_jonas> so make a proof page instead of a language page if you wish
17:30:11 <b_jonas> "for pages that prove something, or attempt to"
17:30:18 <int-e> (a weird machine is something that exhibits computational properties even though it isn't designed for that purpose)
17:32:46 <ais523> a proof page would be appropriate but the proof is already a long article hosted offsite, so I guess the page here would have to be a summary of or description of the proof?
17:43:06 <b_jonas> ais523: at least a link and a summary of what the proof is about, but if you wish you can just copy the entire article if you want to license it freely under the Creative Commons CC0 public domain dedication
17:43:55 <b_jonas> int-e: yes, it's kind of like how we define esoteric based on the creator's intent, so we might as well design programming language based on the creator's intent
17:53:31 <ais523> b_jonas: copying the article would be difficult, I wrote it by hand in HTML and don't really want to translate it all into wikimarkup – also there are a large number of external links that feel inappropriate for the wiki context
17:54:46 <ais523> also for a long time my working definition of an esolang was "a programming language for which writing an improved standard library would be wasted effort", although that has a few false negatives (e.g. Befunge) and so I've started to move away from it
17:56:30 <int-e> that test also failed for INTERCAL, didn't it
17:57:33 <ais523> I'm not sure – people did write a number of libraries for INTERCAL, they just didn't get *used* very much
17:58:05 <ais523> I think the writing was more in the challenge of the writing, rather than because there was any plan of the libraries being used
18:00:41 -!- Noisytoot has quit (Quit: ZNC 1.8.2 - https://znc.in).
18:01:27 -!- Sgeo has joined.
18:02:29 -!- Noisytoot has joined.
18:04:00 <b_jonas> ais523: most of what you have in that HTML Just Works on the wiki. you have to mass-replace the a-href elements, plus edit the summary, details, thead, tbody tags. or give permission and let someone else mess with the formatting.
18:05:09 <b_jonas> in particular, the h2 and h3 tags work and the wiki creates a table of contents automatically from them
18:06:11 <ais523> I think I'd still prefer not to have the article itself there – it wasn't written in a style appropriate for an encyclopedia
18:06:40 <ais523> which possibly doesn't matter on Esolang, I guess?
18:07:25 <zzo38> Not all programming languages have standard libraries though, and perhaps it is not always applicable (although that is not always clear), and that seems to be not specific to only esolangs.
18:07:30 <ais523> also it is a travesty that <details> doesn't work in MediaWiki – loads of wikis end up replicating its functionality using JavaScript, which then means that the pages don't work properly without JavaScript
18:08:16 <b_jonas> the esowiki is an encyclopedia?
18:08:42 <b_jonas> I don't think https://en.wikipedia.org/wiki/Wikipedia:Five_pillars applies
18:09:36 <ais523> I'm not sure whether it is an encyclopedia or not, but I generally write articles there as though they were encyclopedia articles, and find other articles there more usable when they're written in the same style
18:10:26 <b_jonas> "it is a travesty that <details> doesn't work in MediaWiki – loads of wikis end up replicating its functionality using JavaScript, which then means that the pages don't work properly without JavaScript" => no, I feel it's quite the opposite! the javascript reimplementations are nice because I can just override them to open or close with just user-side CSS with no javascript, whereas the details tags
18:10:32 <b_jonas> are seemingly impossible to open with CSS
18:11:08 <b_jonas> this is a possibly unique case where the new HTML innovation is inadequate and I prefer the javascript replacements even if you don't care about old browsers
18:11:39 <ais523> hmm… is this a consequence of the <summary> being inside the <details>, so that a closed <details> can't be implemented simply by display:none?
18:12:02 <ais523> actually, thinking about it, <summary> is backwards: the inside tag should be around everything *except* the summary
18:12:28 <ais523> and clicking on the summary portion should just toggle the display:none versus display:block of the non-summary
18:13:19 <ais523> but given that I normally browse without JavaScript, it is very annoying to have to deal with these things manually, especially when they're default-closed: my standard approach is to open up a debugger and edit out the display:none manually
18:13:35 <b_jonas> ais523: or perhaps they should have just introduced a new CSS property for whether the summary is open or not. it would apply only to elements that CSS thinks are summaries (summary tags mostly, but you know how CSS can turn any element into a table so perhaps it can turn any element to a summary)
18:13:40 <b_jonas> I don't know
18:14:26 <b_jonas> "given that I normally browse without JavaScript" => it turns out that on most sites, they default to open by default when there's no javascript. this could be a problem if it reveals spoilers, but usually it's a boon.
18:14:45 <ais523> I'd say that more than half default to open, but enough don't to be a problem
18:15:15 <b_jonas> I know perhaps three exceptions: some of the Wikimedia collapses, https://sqlite.org/docs.html , and tvtropes.org
18:15:28 <zzo38> I think that what you describe about "impossible to open without CSS" might be a problem with CSS or with the definition of <details> if that is the case. Also, would it be possible to just do it normally but a JavaScript code can implement them too in case they are not already implemented?
18:16:08 <b_jonas> but the point is, for these three I have user CSS workarounds to open them, whereas I would like the summary tags in https://www.darthsanddroids.net/ to default open, but I can't with just CSS, I'd probably need greasemonkey or a rewriting proxy HTTP server or something for it
18:17:05 <b_jonas> zzo38: sorry, I'm saying that the summary tags are impossible to open with just CSS without javascript
18:17:08 <zzo38> It is a problem with the design of web browsers I think; the design could be made differently in such a way that it would work, I think. This might require some nonstandard features, but even if such features are only used by end-users and not by the document author, it could still work.
18:17:24 <zzo38> b_jonas: Yes, sorry, that is what I meant; I wrote it wrong
18:17:31 <esolangs> [[Category talk:Languages based on food]] N https://esolangs.org/w/index.php?oldid=112604 * EsolangGuy * (+31) Created page with "JUST START A DISCUSSION ALREADY"
18:19:08 <b_jonas> ftr, https://dpaste.com/AUNLP2JLD is what used to work for tvtropes, not sure if it still works
18:20:02 <zzo38> Is there a function exposed to the JavaScripts to open them?
18:20:04 <ais523> ugh, am I giong to hvae to go delete a lot of categories again?
18:20:06 <ais523> zzo38: yes
18:20:23 <ais523> or, no, that category talk page doesn't have a corresponding category
18:21:11 <zzo38> If there is such function then user scripts should be possible to automatically open them by default, I think. Using nonstandard ways such as document scripts can make it more complicated then each one might be different and better user controls for stuff implemented by document scripts can be difficult if there is not a common interface (e.g. ARIA).
18:21:15 <b_jonas> note that tvtropes has like three different pieces of content that are revealable with javascript: some sidebar menus, inline footnotes, and spoilers.
18:22:20 <zzo38> I use All The Tropes which is MediaWiki and has footnotes on bottom and I think spoilers are just made by same text colour as the background colour (and are marked with an outline)
18:22:22 <b_jonas> zzo38: for all but the spoilers the easiest would probably be to just have them open by default without scripts, and the scripts close them if they load.
18:23:24 <zzo38> Yes, as long as it is able to close them before they are displayed, I suppose.
18:23:59 <esolangs> [[Special:Log/delete]] delete * Ais523 * deleted "[[Category talk:Languages based on food]]": category talk page that does not correspond to a category (and the category likely shouldn't be created, either)
18:24:47 <ais523> fwiw, I think it may be possible to recreate the behaviour of <details> purely using CSS? it's probably something along the lines of messing about with a:active formatting
18:25:04 <b_jonas> zzo38: I think HTML has a thing for this, where you can mark a script so the render waits until the script loads and executes but with a timeout if the script can't load
18:26:22 <sknebel> scripts can open/close <details> tags
18:27:12 <sknebel> the usual way of building something like it without a <display> tag is/was using a checkbox (restyled to not look like one) and making the content visible depending on if the checkbox is checked or not, CSS can do that
18:27:40 <b_jonas> ais523: admittedly it would be nicer if the javascript implementations didn't change the style attribute of the element, but instead changed either the class attribute or a data-something attribute, so you can more easily refer to open and closed blocks with custom CSS, but even if they change the style attribute you can do an uglier custom CSS workaround
18:27:46 <zzo38> ais523: Can it be done as an implementation of the standard element names (<details>) and working whether or not the browser implements <details>? Alternatively, can the details block be specified by ARIA so that a "ARIA view" might be able to display them even if CSS is not working (e.g. if the user deliberately disabled it; I sometimes do disable CSS deliberately)?
18:29:04 <b_jonas> zzo38: browsers typically just ignore start and end tags for elements unknown to them, so you can easily have a solution that works even when details isn't supported if you just nest some other element that's supported elsewhere too
18:29:54 -!- razetime has quit (Ping timeout: 260 seconds).
18:32:55 <b_jonas> but anyway, feel free to just create a short proof page that gives the abstract and links to your webpage
18:33:39 <ais523> I probably won't get to this today, anyway
18:33:50 <b_jonas> it's useful because when someone wants to find the proof, searching the wiki is easier than searching the channel logs
18:34:13 <b_jonas> plus it does search engine optimization
18:57:49 <b_jonas> I wonder when someone will try to prove Stacklands Turing-complete
18:58:27 <b_jonas> you'd probably need some similar crazy construction with very little control flow and only a few counters
18:59:01 <ais523> I don't know of Stacklands
18:59:02 <b_jonas> it certainly doesn't seem as programmable as M:tG
18:59:15 <ais523> Netrunner is very short on counters but the control flow isn't too bad
19:01:14 <b_jonas> I think Stacklands might have the problem where it can't have unlimited storage without player interaction
19:01:49 <b_jonas> and you certainly can't restrict player interaction, unlike M:tG, so you probably want something that's TC when the player doesn't do anything
19:02:44 <ais523> the Netrunner proof has a lot of actions by players, but it's set up so that doing the "wrong action" either causes you to immediately lose, or else comes to the same thing as the right action
19:02:52 <ais523> (and a description of what the "right action" is is very simple)
19:03:20 <b_jonas> I mean it can't expand its storage space by unlimited amounts without player interaction after the player sets up some starting space
19:03:25 <b_jonas> s/starting space/starting state/
19:04:06 <ais523> oh, that's painful
19:04:09 <b_jonas> ais523: right, but I don't think you can restrict the player that way either in Stacklands, at least not until you're in a state that's simply unwinnable
19:05:10 <b_jonas> maybe the Stacklands devs have people interested too and add features useful for programming in a future expansion.
19:05:50 <b_jonas> you can certainly do that in a way that the features are still legitimate gameplay features as well
19:06:13 <b_jonas> because accidental TCness is easy
19:06:48 <b_jonas> alas, despite that the name of the game has "Stack" in it, I think you'll only get a counter machine, not a directly usable stack in the programming sense
19:07:07 <ais523> there is a Netrunner card spoiled this week that made me start wondering whether one of the Netrunner card designers is trying to make it Turing-complete (even though I didn't end up using it)
19:07:10 <b_jonas> which means you'll have an exponential slowdown at least, double exponential if you're unfortunate
19:08:06 <ais523> I think the Netrunner construction may be triple-exponential compared to a Turing-machine? it uses a two-stack machine to emulate another two-stack machine with the 2**x × 3**x construction
19:08:28 <ais523> and I'm not sure whether two-stack machines can emulate Turing machines faster than double-exponentially
19:08:56 <ais523> (just getting a working multiply and divide by 2 and 3 was hard enough, I couldn't immediately find a way to get 5 working too)
19:11:37 <b_jonas> triple exponential? nice
19:13:29 <b_jonas> that also shows how much more programmable M:tG is
19:13:40 <ais523> emulating a two-stack machine with another two-stack machine, and encoding the stacks into one stack rather than just using the two individually, is the sort of thing that you wouldn't really expect to have to do in a proof
19:14:11 <b_jonas> later games learned from M:tG and reduced some of the crazyness
19:15:10 <ais523> I think that it might potentially be avoidable, but there doesn't seem to be an easy way to do that – Netrunner doesn't have very many usable counters and the proof as it's written uses the third-most-usable counter purely by adding it to the other two, one of which is only finitely large and wraps
19:15:46 <ais523> (because it's used as the instruction pointer most of the time, not because the game rules limit it)
19:16:35 <ais523> fwiw, I have wondered whether Yu-Gi-Oh! is Turing-complete, but don't know the game well enough to tell; I suspect not because it has finite limits on most things and the rest are hard to test for
19:17:19 <ais523> or, well, creating an infinite loop in Yu-Gi-Oh! is actually against the rules so it wouldn't be TC, the language would be total but contain a termination tester, which is a weird combination of features
19:17:53 <ais523> (and if an infinite loop is created but not by a player, the "card most responsible for the loop" gets destroyed – good luck formalizing that!)
19:19:14 <b_jonas> eh, the M:tG infinity rules are already difficult to formalize, though only part of that is innate computational problems and part is that the comprehensive rules doesn't define them accurately enough
19:19:46 <ais523> the online simulators seem to implement the loop rules as "if more than X actions occur without player input, then either it's an illegal loop and the player couldn't do that thing, or if a player wasn't responsible, arbitrarily pick some card involved in the loop and destroy that"
19:20:39 <ais523> I actually think the M:tG infinity rules are very simple, just badly written – a loop occurs when it creates an infinitely repeating sequence of actions, as in the same actions happen in the same order each time round the loop
19:21:23 <ais523> I expect such loops are fairly easy to detect and prove infinite or non-infinite, because anything that's complex enough to be hard to prove would probably cause the actions to not be a perfectly repeating sequence
19:21:32 <b_jonas> sure, the online simulators not only don't try solve uncomputable problems, they also won't let you allocate unlimited amounts of memory even in programs that clearly halt
19:21:59 <b_jonas> if your construction is triple exponential then that will be a relevant limitation
19:22:38 <ais523> it isn't, you won't actually reach the large numbers before you get bored / the game times out / your connection breaks
19:22:43 <b_jonas> ais523: oh, is that how you interpret the loop rules in M:tG? that's very different from how I interpreted them
19:23:03 <b_jonas> ais523: sure, then it's a time limitation rather than a space limitation
19:23:04 <ais523> b_jonas: it isn't how I *initially* interpreted them, but I came to that conclusion after discussing with some very high-level judges
19:23:12 <b_jonas> I see
19:23:52 <b_jonas> so what happens in M:tG if you create an infinite loop in the programming sense that isn't breakable by the players but isn't a loop in that rules sense?
19:24:34 <ais523> you have to play through the steps of the loop – it is possible you will get a slow play penalty for not progressing the game, if you have an alternative, but the details on that seem somewhat fuzzy
19:24:39 <b_jonas> I feel like that shouldn't be too hard if you do it deliberately
19:25:11 <zzo38> I believe Pokemon card is not Turing complete because it only has finite memory (e.g. you cannot add more counters on a stack of cards than the HP of its highest evolution, the number of areas where cards may be placed is limited, and I think the cards are designed to ensure that nothing can (except with coin tosses, maybe) make the game go on forever anyways).
19:25:13 <ais523> there is a well-known ruling that if there's a probabilistic loop, i.e. the gamestate can repeat but only with a certain probability, you can only go around the loop once and then you get a slow play penalty if you continue
19:25:22 <b_jonas> hmm, so either it's a penalty or one of the players will eventually concede to real world matters?
19:25:50 <zzo38> I have not seen that "well-known ruling", as far as I can remember?
19:26:10 <b_jonas> or a judge will force them to concede to real world matters I guess
19:26:54 <ais523> zzo38: I am looking for it but my Internet is being very slow; the ruling was made famous by a deck called "Four Horsemen", you might have luck searching for that
19:27:38 <ais523> (I am trying to search for it, but Internet issues are making that difficult)
19:28:04 <ais523> ooh
19:28:09 <ais523> @google magic the gathering four horsemen ruling
19:28:24 <lambdabot> Plugin `search' failed with: <<timeout>>
19:28:35 <ais523> oh come on, it's being slow for lambdabot too? :-D
19:29:07 <int-e> I suspect the host is blocked, but the command bitrotted anyway.
19:29:52 <int-e> (extracting a useful reply from the megaton load of html that google replies with these days is not easy, and it's a moving target)
19:30:46 <esolangs> [[Revapp]] https://esolangs.org/w/index.php?diff=112605&oldid=110907 * Abo-Junghichi * (+7) /* Example */
19:31:10 <b_jonas> of course the loops that come up in typical games are simpler, either they just clearly trigger the M:tG loop rules, like three Faceless Butchers, or it's breakable by a player and also clearly a win for the player who so usually either the other player concedes or the player who sets it up just goes on to win (though possibly quite slowly)
19:32:31 <b_jonas> by the way, I wonder if M:tG made Banishing Light and lots of similar cards to replace Oblivion Ring not only to reduce rules difficulties for casual players, but also to reduce the chance of loops by making the card able to exile only permanents controlled by an opponent
19:33:09 <ais523> I think preventing the loop was possibly intentional
19:33:16 <b_jonas> there were at least two rules difficulties with O-Ring and Journey to Nowhere that tripped us up as casuals
19:34:56 <b_jonas> one is that the target permanent remains permanently exiled if the O-Ring is destroyed before the etb trigger resolves, and istr the rules bulletin or something explicitly said that this is why they introduced the new exile-until template,
19:35:18 <b_jonas> the other is how the O-Ring behaves in multiplayer when the controller of the O-Ring leaves the game
19:36:43 <ais523> zzo38: https://blogs.magicjudges.org/telliott/2012/11/02/horsemyths/ is a description of the randomized/non-deterministic loop situation, with respect to the Four Horsemen deck
19:38:48 <b_jonas> ais523: I don't understand, what card adds the randomness?
19:39:04 <ais523> b_jonas: Emrakul, the Aeons Torn
19:39:06 <ais523> it shuffles the deck
19:39:28 <ais523> and the combo only works if it mills certain cards in the correct order, but it's an infinite mill combo
19:39:45 <ais523> so in theory, if you mill them in the wrong order you just mill to Emrakul and try again
19:39:48 <b_jonas> ah
19:40:52 <b_jonas> in the infinite hit point deck that I built, I do shuffle cards back to my deck, but their order doesn't matter much except perhaps in how quickly I win. I don't shuffle more than once.
19:41:13 <b_jonas> well, it could matter in whether I win if the opponent has a way to kill me despite the infinite hit points
19:41:16 -!- SGautam has joined.
19:41:44 <ais523> the rule is just that if the same gamestate randomly occurs twice in a loop that has random effects – where "same" only counts parts of the gamestate that are actually relevant to the loop – you have to stop there and not continue
19:42:06 <ais523> (and two different shuffled versions of the same cards are considered to be the same for judging purposes, if nobody knows which order the cards are in)
19:42:29 <b_jonas> with infect most likely
19:43:48 <b_jonas> or also poisonous, because that's what they put on Virulent sliver
19:44:00 <b_jonas> ah right, that was in Future Sight, it precedes infect
19:44:35 <ais523> poisonous was finally released as a non-futureshifted ability, but it was renamed to toxic and the mechanics were changed very slightly (poisonous is a trigger, toxic doesn't use the stack)
19:45:06 <ais523> which means that Virulent Sliver and Snake Cult Initiation didn't get errata'ed to have toxic, and were left with the old keyword
19:45:09 <b_jonas> ais523: makes sense, the other half of infect was turned to wither
19:45:24 <ais523> wither came before infect
19:45:26 <b_jonas> ais523: sure, same as all the old non-lifelink cards
19:45:31 <ais523> also, infect is boosted by pump spells and toxic isn't
19:45:58 <esolangs> [[Truth-machine]] https://esolangs.org/w/index.php?diff=112606&oldid=112585 * Abo-Junghichi * (-32) /* Revapp */
19:46:17 <b_jonas> I see, toxic gives one poison counter and also normal health damage
19:47:24 <b_jonas> and you're right, wither was much earlier, in Shadowmoor, then infect in Scars of Mirroding from the phyrexians
19:48:24 <ais523> I am pretty familiar with Virulent Sliver because it was one of the most important cards in the best deck I ever built
19:48:58 <ais523> (which basically worked like "combo elves" from Legacy, but in Ravnica–Time Spiral standard using Slivers instead of Elves)
19:49:41 <ais523> because this was Standard not Legacy, you couldn't viably win on turn 3, so the Virulent Slivers existed as a) a distraction that the opponents would have to deal with to not get aggroed to death and b) for their mana cost, which was important for the combo
19:50:55 <b_jonas> Shadowmoor and Eventide introduced Wither, Persist, and Undying, creatures that etb with -1/-1 counters, which can interact in funny ways
19:52:11 <ais523> `card-by-name Kitchen Finks
19:52:13 <HackEso> Kitchen Finks \ 1(g/w)(g/w) \ Creature -- Ouphe \ 3/2 \ When Kitchen Finks enters the battlefield, you gain 2 life. \ Persist (When this creature dies, if it had no -1/-1 counters on it, return it to the battlefield under its owner's control with a -1/-1 counter on it.) \ SHM-U, MMA-U
19:52:25 <ais523> that was played in Modern as part of a 2-card combo, but I forget what the other card was
19:52:38 <ais523> it put +1/+1 counters on the Finks when it ETBed, giving you infinite sacrifices
19:52:53 <ais523> or possibly prevented the -1/-1 counters being placed
19:53:37 <b_jonas> I recalled that there was a sliver that gives poison counters because I played against sliver decks, but didn't remember the specifics
19:53:47 <b_jonas> it wasn't the most relevant sliver card in those decks
19:55:53 <esolangs> [[Special:Log/newusers]] create * Kmojzo * New user account
19:56:37 <b_jonas> ais523: the tournament one that I remember is Vampire Hexmage from Zendikar plus Dark Depths from Coldsnap, but that doesn't have to do with +1/+1 or -1/-1 counters
19:59:38 <ais523> zzo38: here's another article about the Four Horsemen incident: https://articles.starcitygames.com/articles/indefinite-infinite-loops-at-scg-legacy-open-la/
19:59:51 <b_jonas> but there was also a casual combo with actual persist that I played in M:tG vanishing three-card blind at https://forums.giantitp.com/showthread.php?500660&p=21773784#post21773784 :
20:00:01 <ais523> b_jonas: that one is still played in Legacy, although mostly using a newer combo half instead
20:00:07 <ais523> `card-by-name Thespian's Stage
20:00:08 <HackEso> Thespian's Stage \ Land \ {T}: Add {C}. \ {2}, {T}: Thespian's Stage becomes a copy of target land and gains this ability. \ GTC-R
20:00:24 <b_jonas> that was a special rules round where every creature was given persist by the rules
20:01:40 <b_jonas> ais523: ah nice
20:02:38 -!- tromp has joined.
20:04:15 <ais523> both halves of the combo are lands, which makes it difficult to directly interact with (although many Legacy decks contain removal spells that work on an indestructable 20/20)
20:04:56 <b_jonas> makes sense
20:19:00 -!- ais523 has quit (Quit: quit).
20:38:50 -!- m5zs7k has quit (Ping timeout: 245 seconds).
20:39:12 -!- m5zs7k has joined.
20:39:39 <b_jonas> ais523: "Rather than coming from randomised booster packs, Netrunner cards are purchased as sets whose contents are known in advance" => that's also true in practice in the constructed formats of M:tG. presumably when you consider computational complexity, you aren't playing limited formats like draft from a single-block.
20:40:23 <b_jonas> but it does make a difference in that the prices of cards don't differ so much from each other
20:41:02 <b_jonas> there aren't cards that you'd want in your deck but are way too expensive
20:43:13 -!- tromp has quit (Quit: My iMac has gone to sleep. ZZZzzz…).
20:51:07 <esolangs> [[User:B jonas]] https://esolangs.org/w/index.php?diff=112607&oldid=109725 * B jonas * (+192) /* Todo */
21:20:06 -!- tromp has joined.
21:37:44 -!- tromp has quit (Quit: My iMac has gone to sleep. ZZZzzz…).
22:37:59 -!- tromp has joined.
22:54:31 -!- tromp has quit (Quit: My iMac has gone to sleep. ZZZzzz…).
23:08:56 -!- tromp has joined.
23:23:32 -!- tromp has quit (Quit: My iMac has gone to sleep. ZZZzzz…).
23:43:55 <esolangs> [[Special:Log/newusers]] create * * New user account
23:51:41 <esolangs> [[Esolang:Introduce yourself]] https://esolangs.org/w/index.php?diff=112608&oldid=112555 * * (+160)
←2023-07-29 2023-07-30 2023-07-31→ ↑2023 ↑all