00:41:32 -!- amby has quit (Quit: so long suckers! i rev up my motorcylce and create a huge cloud of smoke. when the cloud dissipates im lying completely dead on the pavement).
01:24:26 b_jonas: "as far as I know they're low-level" I feel wWwwW's qn makes sense, and I was interpreting it as looking for a language which was: fun, simple, fundamentaly low-level in that it is intuitive enough to grasp and *do* some limited things with immediately style of 'eso'-lang, and doesn't involve understanding too many abstract concepts at once. 'Here's 3 commands, now form a band' DIY style.
01:24:43 The fact that for one of my examples I mixed up a number of real 'normal' (and quite different from each other), and hypothetical concept languages that have been attempted by many people over time and exist only in parts in many places, but nothing concrete that fully meets this brief, is telling... sometimes esolangs just work better "in theory".
01:34:48 [[Jumpy]] M https://esolangs.org/w/index.php?diff=143577&oldid=143575 * PythonshellDebugwindow * (+114) Categories
01:57:15 -!- salpynx has quit (Quit: Leaving).
02:20:36 [[Brainyay]] https://esolangs.org/w/index.php?diff=143578&oldid=143088 * PhiPhiPHIpHi * (+60)
02:36:59 salpynx: to be clear by high-level I mostly mean it should be memory-safe and type-safe.
02:37:36 at least for some basic version of typesafe
03:28:10 I have some questions about libtom. (1) in "libtommath-1.0.1/bn_mp_to_unsigned_bin.c", is this really using an algorithm that takes time quadratic in the length of the input because it's shifting the whole big integer after each digit exported, and why?
03:30:13 (2) in "libtomfloat-0.02/mpf_div_d.c", why does that function never use mp_div_d the single-digit divison function? I understand that it can't always do that, because this function wants to accept any long as the divisor, so that can be bigger than a single digit, but why does it never seem to fall back at least in the common case of small divisors?
03:38:19 and for (1) it looks like the version in "tomsfastmath-0.13.1/src/bin/fp_to_unsigned_bin.c" does that too
04:03:09 [[User talk:Superstitionfreeblog]] N https://esolangs.org/w/index.php?oldid=143579 * ZCX islptng * (+1280) uhhhhhhhh
04:04:34 [[User talk:Superstitionfreeblog]] M https://esolangs.org/w/index.php?diff=143580&oldid=143579 * ZCX islptng * (+144)
04:27:06 -!- salpynx has joined.
04:31:44 fizzie: Is the zem.fi hill git repo publicly clonable (read-only)? I can't figure out a .git URL. Apologies for any silly log noise I have caused trying to guess one :)
04:34:22 I wanted to scrape all the warriors to explore source size vs. score (and also how commented source relates to good performance), I was going to scrape the web interface, but using git seems most direct
04:36:12 -!- wWwwW has joined.
04:43:17 [[User talk:PrySigneToFry]] M https://esolangs.org/w/index.php?diff=143581&oldid=143438 * ZCX islptng * (+251)
04:43:32 [[User talk:PrySigneToFry]] https://esolangs.org/w/index.php?diff=143582&oldid=143581 * ZCX islptng * (+1)
04:48:55 fizzie: found the answer on the bfjoust esowiki page: http://zem.fi/bfjoust/hill.git .. it wasn't obvious from GitWeb, which seems a common problem :)
05:02:41 hi wWwwW, I tried to answer your 'good esolang to learn' question earlier, that'll be in the logs from yesterday
05:02:55 ook
05:03:03 thx!
05:04:15 i saw your message
05:04:22 but whats the actual esolajng?
05:04:24 *esolang
05:06:08 brainf*** , and _probably_ Thue (the current featured language)
05:06:18 ok
05:07:24 ... the third suggestion I had doesn't actually exist like I imagined it... which is unfortunate
05:07:47 yea
05:11:11 oh, and writing in Deadfish enough to have installed one of the eso-interpreters and got it working enough to run your code (non-trivial for many of them, and some are likely buggy) could be a good way to get some practical eso-experience
05:11:38 k
05:16:53 -!- craigo has joined.
05:30:03 -!- Sgeo has quit (Read error: Connection reset by peer).
05:43:36 -!- tromp has joined.
06:07:33 -!- tromp has quit (Quit: My iMac has gone to sleep. ZZZzzz…).
06:30:26 -!- salpynx has quit (Quit: Leaving).
06:31:34 -!- tromp has joined.
07:20:06 -!- tromp has quit (Quit: My iMac has gone to sleep. ZZZzzz…).
07:34:19 -!- tromp has joined.
07:37:06 -!- Lord_of_Life has quit (Ping timeout: 252 seconds).
07:39:06 -!- Lord_of_Life has joined.
07:41:16 [[Special:Log/move]] move * Ractangle * moved [[All in one]] to [[What comes after letter "R"]]
07:41:16 [[Special:Log/move]] move * Ractangle * moved [[Talk:All in one]] to [[Talk:What comes after letter "R"]]
07:41:59 [[SML]] https://esolangs.org/w/index.php?diff=143587&oldid=143514 * Froginstarch * (+66) /* Instructions */
07:43:24 [[What comes after letter "R"]] https://esolangs.org/w/index.php?diff=143588&oldid=143583 * Ractangle * (-32)
08:18:39 -!- X-Scale has joined.
08:23:21 -!- X-Scale has quit (Ping timeout: 256 seconds).
08:58:02 -!- iddi01 has joined.
09:04:55 !zjoust XspeedX (>)*8(>[+[+[--[-[-[(-)*128[+.]]]]]]])*4(>[+[+[--[-[-[(-)*125[-.]]]]]]])*18
09:04:55 iddi01.XspeedX: points -1.95, score 17.94, rank 24/47
09:11:27 -!- __monty__ has joined.
09:13:40 I noticed from the logs that BF joust has got some attention (good news), but i think the reason that BF joust went dead in the past few years is that the hill is filled with powerful programs such that making a high-ranking program is hard, and people will quit after a few attempts.
10:03:06 ☺
10:32:03 -!- tromp has quit (Quit: My iMac has gone to sleep. ZZZzzz…).
11:14:31 salpynx: Yeah, for the esolangs.org rebranding I was planning of using cgit as the frontend, it puts the clone URL(s) right on the summary page.
11:20:16 There's been a few proposals to alleviate that, like offering a set of hills with fixed programs at different difficulty levels (beginner, intermediate, advanced), or a set of fixed programs on the existing hill that don't partake in the actual rankings, so that you could still get a sense of progress. Not sure how much that would help though.
11:46:52 -!- salpynx has joined.
11:48:31 !ztest unstable_atom >>---(>)*5(>>[(+)*7[-]+>+])*10>[-]>[--][--+]
11:48:32 salpynx.unstable_atom: points 2.55, score 23.18, rank 16/47
11:49:08 !zjoust unstable_atom >>---(>)*5(>>[(+)*7[-]+>+])*10>[-]>[--][--+]
11:49:09 salpynx.unstable_atom: points 2.55, score 23.18, rank 16/47
11:52:09 that is a remix of david_werecat.atom, which was the highest score-per-symbol warrior on the hill
11:57:56 Is remixing existing programs by other people considered cheating? (that's the second time salpynx did it)
12:00:30 [[Translated SLet]] N https://esolangs.org/w/index.php?oldid=143589 * PrySigneToFry * (+684) Created page with "Translated SLet is designed by PSTF. It is [[SLet]] but horribly translated by Baidu. 1. Take the Ge Liheng Number Generator: list let g lv 5 3 3 loop d 1 while is d less than 64 do list let g lv lv 0 g 1 3 3 let d lv 0 d 1 all print number g all
[[Joke language list]] https://esolangs.org/w/index.php?diff=143590&oldid=143536 * PrySigneToFry * (+64)
12:02:06 -!- iddi01 has quit (Quit: Client closed).
12:03:26 [[]] M https://esolangs.org/w/index.php?diff=143591&oldid=143519 * PrySigneToFry * (-43)
12:04:28 I'm exploring techniques, and locating ones that work in short programs. I named this latest one 'unstable' because I think it might move down very rapidly based on the 3 loops at the end which I think were over-optimised
12:05:59 -!- iddi01 has joined.
12:06:02 I wasn't intending to 'cheat', but I'd be interested what others think, I was analysing progam performance vs. length and trying to extract what works
12:06:16 -!- wib_jonas has joined.
12:07:26 fizzie: to be clear what I proposed is neither of those, I proposed a set of fixed programs that do participate in the scoring and ranking of the variable programs, but aren't rotated out of the hill even if they're worse than other programs.
12:13:36 while exploring this, I had an idea of length classes, behemoths that try and cover every strategy in one class, and lightweight algorithms that try to do well with as few commands as possible in another. Size doesn't seem to be a big predictor of score though. There seems to be a moderate size required for being smart, and I think there's a limit on how well very short programs can possibly do
12:16:56 [[User talk:PrySigneToFry]] https://esolangs.org/w/index.php?diff=143592&oldid=143582 * None1 * (+329) /* Make Translated ORK/Mihai Again10 Mor ary! */ I've translated your code
12:17:09 [[User talk:PrySigneToFry]] https://esolangs.org/w/index.php?diff=143593&oldid=143592 * None1 * (+235) /* Make Translated ORK/Mihai Again10 Mor ary! */
12:17:34 [[User talk:PrySigneToFry]] M https://esolangs.org/w/index.php?diff=143594&oldid=143593 * None1 * (+0) /* Make Translated ORK/Mihai Again10 Mor ary! */
12:18:35 re. remixing, the performance ended up being substantially different from the originals that I thought it was worth submitting, if it only jumped a couple of places I agree that would be annoying. my first got 20 place better than its original, and this latest jumped 9 places, which was harder to do further up the list
12:20:25 -!- salpynx has quit (Quit: Leaving).
12:31:27 [[Translated ORK/None1 again8]] N https://esolangs.org/w/index.php?oldid=143595 * None1 * (+720) Created page with "1. [[Translated ORK/Mihai Again12|]] smb://foo.example.com Required virtual size does not fit available size: requested=(%d, %d), min=(%d, %d), max=(%d, %d) xo ching xwo:n it diL ymeertdings nurse. Alive? Use page cache The man ate bread.
2.
12:31:46 -!- Everything has quit (Quit: leaving).
12:32:18 [[Translated ORK/Mihai Again12]] https://esolangs.org/w/index.php?diff=143596&oldid=143533 * None1 * (+70)
12:38:28 [[Template:Username display restrictions since when]] https://esolangs.org/w/index.php?diff=143597&oldid=143499 * None1 * (-22) There's no point trying to violate the rules
12:40:08 [[Execode]] M https://esolangs.org/w/index.php?diff=143598&oldid=143500 * None1 * (-58)
12:44:38 -!- tromp has joined.
12:50:20 [[Talk:Basilisk]] https://esolangs.org/w/index.php?diff=143599&oldid=143537 * None1 * (+290) /* Slitherfangs */
13:17:42 -!- tromp has quit (Quit: My iMac has gone to sleep. ZZZzzz…).
13:17:52 -!- Birb has joined.
13:20:01 -!- Birb has quit (Client Quit).
13:20:54 -!- CanisCorvus has joined.
13:30:46 -!- iddi01 has quit (Quit: Client closed).
13:53:55 [[Tic Tac Toe(Program Form)]] N https://esolangs.org/w/index.php?oldid=143600 * PrySigneToFry * (+5659) Created page with "{{Distinguish/Confusion|Tic Tac Toe}} Tic-tac-toe is a three-in-a-row game invented by the Germans that requires players to take turns to draw crosses or circles on a nine-grid square board, and whoever first arranges three identical marks into h
13:54:46 [[Tic Tac Toe(Program Form)]] https://esolangs.org/w/index.php?diff=143601&oldid=143600 * PrySigneToFry * (+47)
13:55:35 [[Tic Tac Toe(Program Form)]] https://esolangs.org/w/index.php?diff=143602&oldid=143601 * PrySigneToFry * (-3)
14:05:59 -!- tromp has joined.
14:36:00 [[User:None1]] https://esolangs.org/w/index.php?diff=143603&oldid=143521 * None1 * (+220) /* Languages that I know how to write */
14:36:46 [[User:None1]] M https://esolangs.org/w/index.php?diff=143604&oldid=143603 * None1 * (+1) /* Natural Languages */
14:37:42 -!- wib_jonas has quit (Quit: Client closed).
14:43:30 -!- wib_jonas has joined.
14:46:00 -!- Everything has joined.
14:51:51 [[Talk:Tic Tac Toe(Program Form)]] N https://esolangs.org/w/index.php?oldid=143605 * None1 * (+714) Created page with "In fact, there is a very simple strategy to not lose in Tic Tac Toe when you play first. Pick the square in the middle, then split the chessboard into 4 parts, like this: 112 4X2 433 Then, you always pick the other square in the part the opponent
14:53:38 [[Talk:Tic Tac Toe(Program Form)]] M https://esolangs.org/w/index.php?diff=143606&oldid=143605 * None1 * (-1)
15:24:41 Ok, I have a silly idea. Consider a language that is memory-safe, dynamically typed, and allows you manage user-defined composite types only by reference, like perl/python/ruby or scheme. Except imagine it insists on the by reference part even more, so there are no string value types, only mutable string buffer reference types. So far so good.
15:24:45 -!- Everything has quit (Quit: leaving).
15:26:48 Now change this to an esolang by not allowing destructors, whether built-in or user-defined. If you are holding a reference to heap, you'll have to explicitly call a freeing (or reference count decreasing) function on it. For a type that holds a unique reference, that freeing function will clear the reference too for memory safety; if there are
15:26:49 reference-counted allocations then you may need something slightly more complicated.
15:27:29 Why? I don't know, I don't think this has any advantage, it just occurs to me that this part of the language space could theoretically exist but it seems underexplored.
15:27:48 -!- tromp has quit (Quit: My iMac has gone to sleep. ZZZzzz…).
15:28:10 If you fail to call the destructor explicitly, the resources owned will just get leaked forever.
15:31:43 [[User talk:Superstitionfreeblog]] https://esolangs.org/w/index.php?diff=143607&oldid=143580 * Superstitionfreeblog * (+300)
15:32:43 [[List of ideas]] https://esolangs.org/w/index.php?diff=143608&oldid=141617 * B jonas * (+148) /* General Ideas */
15:33:35 This would be easier to design and implement than some other unusual combinations of properties by the way.
15:39:36 wib_jonas: This occurs in e.g. RPython, when allocating buffers for FFI calls. The pattern is technically RAII or context management, but it feels like writing a callback.
15:40:11 Like, here's my record for nested RAII in RPython; it's only five deep: https://github.com/monte-language/typhon/blob/master/typhon/rsodium.py
15:41:21 This is sugar for nasty explicit alloc and free with exception-handling, mostly.
15:42:32 korvo: I'm not sure if that counts as five deep, since the five memory blocks that you allocate don't depend on each other, so you could write it as just one with statement.
15:44:09 [[Filename "xxx" doesn't seem to be a valid filename. Please check if the filename your trying to execute is written correctly]] https://esolangs.org/w/index.php?diff=143609&oldid=138455 * Ractangle * (+64) /* See also */
15:44:22 Yeah, that's fair. I don't know if that actually works in RPython, but it should.
15:44:25 [[Filename "xxx" doesn't seem to be a valid filename. Please check if the filename your trying to execute is written correctly]] https://esolangs.org/w/index.php?diff=143610&oldid=143609 * Ractangle * (-64) /* See also */
15:45:04 but also interesting, thanks for showing that code
15:50:27 -!- amby has joined.
15:56:23 -!- tromp has joined.
16:13:14 -!- ais523 has joined.
16:18:53 unrelated topic, this blog seems interesting, it talks mostly about printing and scanning machine binary floating point numbers as decimal and why both are difficult: https://www.exploringbinary.com/
16:20:41 several years ago there a couple of decimal float constants were making the Internet programming news because programming languages that were expected to be mature had issues parsing them
16:20:52 either returning the wrong value or even entering an infinite loop
16:22:26 I sort of knew that these were hard problems, but that blog convinced me that they are even harder than I thought
16:22:38 ah, it's actually discussed on the blog you linked
16:22:47 e.g. https://www.exploringbinary.com/java-hangs-when-converting-2-2250738585072012e-308/
16:27:01 -!- Everything has joined.
16:27:38 my claim to fame here is that I found that sqlite3 had a bug where it sometimes incorrectly compared a double to an uint64_t, which can lead to a corrupted index for a table indexed on a column that has both floating point and integer values. usually you don't want to deliberately have both values mixed, but it can easily happen by accident because
16:27:39 some sqlite3 expressions convert a string to a number in a way that whether the result is integer or double depends on the value of the string, or you can get a similar problem if you insert into an sqlite3 table from another language that does the same, such as perl or lua.
16:31:46 perl actually also has the same comparison bug (or used to have it last I looked), which means sort {$a<=>$b} might give a result that's not sorted if you pass it strings, but it's less clear if it counts as a bug there, because sort {$a<=>$b} can also give a result that's not sorted if you pass it floats some of which are NaN, and that's probably
16:31:46 by design. maybe I should report it as a bug to perl, but I don't really have the guts to report bugs to perl anymore.
16:32:00 -!- wib_jonas has quit (Quit: Client closed).
16:34:45 there was an analysis (that ended up informing decisions made by the Rust standard library) of what sorting algorithms did if given a comparison function that wasn't a total order – some of them ended up duplicating elements, entering an infinite loop, or crashing
16:35:42 apparently, at one time, this prevented Android phones from making emergency calls in some situations – they were trying to sort a list to determine the best program/function to use to make the call, but broke ties arbitrarily using hashcode
16:36:56 which seems fine, except that the tiebreak comparison was implemented as (x.hashCode() - y.hashCode()) without guarding against integer overflow, so if there were three tied elements in the list, they could be cyclically greater than each other (according to the comparison) if one or two of the comparisons overflowed on the subtraction and the others didn't
16:37:08 and apparently this was enough to send the sort algorithm into an infinite loop
16:37:52 Rust now has a requirement for sorting algorithms in its standard library that, no matter how badly behaved the comparison function, they always either return a permutation of their inputs or panic
16:38:14 (and they're encouraged to panic if they notice that the comparison function isn't transitive, although of course a non-transitive function won't always be detected as that would involve extra comparisons)
16:38:54 There's a Dave Ackley paper about that, too. Not the Movable Feast Machine, but about bubble sort and robustness under errors.
16:40:33 -!- wWwwW71 has joined.
16:40:33 ok
16:40:33 i had asn
16:40:34 ...I think it might be this one? But I could have sworn it was a little longer and directly challenged the reader more. https://www.cs.unm.edu/~ackley/papers/ftxs2014-accepted.pdf
16:40:36 100 procent doable idea
16:40:40 for an esolang
16:40:42 i swaer
16:40:45 *swear
16:42:52 [[Snakel (Ractangle)]] https://esolangs.org/w/index.php?diff=143611&oldid=143573 * Ractangle * (+370) /* Syntax */
16:43:43 -!- wWwwW has quit (Ping timeout: 256 seconds).
16:45:20 wWwwW71: What's up?
16:45:44 -!- wWwwW71 has quit (Quit: Ping timeout (120 seconds)).
16:47:24 now I'm trying to work out who or what manually wrote that ping timeout message
16:47:28 it isn't one of Libera's
16:52:55 [[Olus2000]] https://esolangs.org/w/index.php?diff=143612&oldid=143317 * DolphyWind * (+2771)
16:54:47 [[User:Dolphy]] https://esolangs.org/w/index.php?diff=143613&oldid=143197 * DolphyWind * (-34) Redirected page to [[User:DolphyWind]]
16:56:47 -!- wWwwW has joined.
16:56:48 so what it is is ou have unicode chars and you do topological transfomation opne them
16:59:33 doesn't that depend on the font?
16:59:43 yea
16:59:46 jusdt predefine a font
17:00:08 I think one of cpressey's languages is based on the topological genus of the characters used in the program
17:02:53 https://esolangs.org/wiki/Wunnel
17:03:14 although it only cares whether there's a hole in the character or not, and doesn't specifically define the font
17:08:57 hmm… I think one technique for designing esolangs is to start with an idea and build a language that works with the idea, and work out what effect the idea has on the rest of the language – but sometimes the answer is "there isn't much of an effect", and then the idea works better as something to mix into another language to spice it up a bit rather than something that makes a language on its own
17:09:24 lots of people dislike LOLCODE because the although programs look funny, it's just a strange syntax for a fairly normal language
17:10:16 . o O ( Ook! )
17:10:20 (although the way in which it achieves TCness is weird – the specification sets a limit on integer sizes but not on string lengths, so the only actual means of infinite storage is forming large strings via concatenation, and the only way to retrieve it is to compare those strings to each other)
17:10:39 int-e: I think that was the first BF syntax substitution? or at least the first widely known one
17:10:52 and that's an interesting idea, once
17:10:55 -!- Everything has quit (Quit: leaving).
17:10:58 but has been really done to death and beyond in the years since
17:11:13 Plus the next esolang by DMM was Piet
17:12:38 even then, Piet is mostly just an interesting syntax on a fairly basic 2D imperative language
17:12:56 the way it does conditionals is less interesting than I expected/remembered
17:13:54 I think it still did something that hadn't been done
17:14:08 yes
17:14:40 also, for some reason in our article on Piet, the computational class section is at the start, before the specification
17:15:11 . o O ( The next ω Brainfuck substitutions. )
17:15:12 and it's bothering me a bit but I'm not sure whether it's worth fixing (and might even be a form of meta-commentary – the article is upside-down, and there's a discussion of upside-down Piet paintings later on)
17:15:30 the thing about ω is that even after those occur, there will still be an ω+1
17:16:22 I was working on an esolang that had transfinite loops, but gave up that approach when I realised that it could solve the halting problem and therefore I probably wouldn't be able to implement it
17:16:54 ais523: the specification part is newer, https://esolangs.org/w/index.php?title=Piet&oldid=73573 vs. https://esolangs.org/w/index.php?title=Piet&oldid=73620
17:17:48 [[Olus2000]] https://esolangs.org/w/index.php?diff=143614&oldid=143612 * DolphyWind * (+42)
17:18:23 https://esolangs.org/w/index.php?title=Piet&oldid=73573&diff=73620
17:18:37 just looks like the spec was added in the wrong plce?
17:23:22 [[Olus2000]] M https://esolangs.org/w/index.php?diff=143615&oldid=143614 * DolphyWind * (+35) I just realized my grammar is wrong, oops
17:23:45 ugh i have no ideas for esolangs
17:23:52 everything has been done or is impossible
17:29:00 [[Olus2000]] M https://esolangs.org/w/index.php?diff=143616&oldid=143615 * DolphyWind * (+0) Fix grammar again
17:29:52 there is a reason I tend to take a while between making esolangs
17:30:10 I have been mentally working on the BF Joust derivative I was talking about recently
17:30:12 its my only activity
17:30:13 wWwwW: Why would you put such expectations on yourself? Historically, linguists don't construct languages until they're twice your age.
17:30:48 Even Gauss and Euler were not inventing new branches of maths at that age.
17:31:00 yea ik
17:31:14 my plan is for it to effectively be a state machine, + 1 counter, + 1 pointer to the tape (which can only be set by updating it to your own current location): conditionals can test the current cell value (time-consuming, like in BF Joust), or the counter, distance from the pointer, or distance from your own flag (non-time-consuming)
17:31:16 but i hate just scrollin yt shorts
17:31:36 I think what you need is a large project you can work on
17:31:51 when I was your age I was writing terrible RPG clones in Microsoft Excel
17:31:58 i do have my conlang but like idk what t work on
17:32:16 also i (not to brag) is too fast with everything
17:32:20 like i make music in one day
17:33:07 actually, this is part of what lead me to eventually give up on Microsoft software – I was basically pushing the tools I was working on to the limit of what they could do, then it would break in the next version
17:33:29 lol
17:34:03 -!- tromp has quit (Quit: My iMac has gone to sleep. ZZZzzz…).
17:35:12 hey korvo kan you link me to MENACE?
17:35:33 Excel might seem like a horrible choice, but it's a marginally workable programming language (Visual Basic) combined with a persistent storage mechanism (the spreadsheet cells), combined with a mechanism that's just-about capable of creating a UI
17:35:59 because you can resize the cells to be square and have the language change the background colors
17:36:03 and put text in them
17:36:41 I think very few programming platforms provide this combination of features in an easily accessible way – but it's a pretty good combination for experimenting children
17:37:04 also i can do nothing cuz
17:37:06 two out of three isn't hard
17:37:11 im danish and have a 12 yr old high serria
17:38:43 I would encourage you to write programs, though, using whatever technology you have available – even if (maybe especially if!) it's terrible
17:38:56 but like
17:38:59 its not that its bad
17:39:02 theres just
17:39:03 none
17:39:05 idk why
17:39:08 -!- tromp has joined.
17:41:24 when I was somewhat older, I tried to learn Python using the bots in this channel
17:41:42 which meant writing Python programs all on one line, which didn't do much for the readability
17:41:58 I was using exec("") and putting spaces and newlines into the string, using single-space indentation
17:45:43 wWwwW: https://www.youtube.com/watch?v=R9c-_neaxeU
17:45:58 thx
17:54:37 -!- CanisCorvus has quit (Quit: Client closed).
17:55:12 [[Snakel (Ractangle)]] https://esolangs.org/w/index.php?diff=143617&oldid=143611 * Ractangle * (+31) /* How to get Snakel */
17:58:15 ais523: re sorting functions, the sorting function in old versions of perl had a similar problem, in particular it could access array out of bounds or something bad like that when the sort function was giving wrong results
18:00:11 ais523: also in the rust standard library, the sorted search trees like BTreeMap have somewhat fewer guarantees, in particular those are allowed to go to an infinite loop from an incorrect Ord according to the documentation
18:00:19 [[Torth]] N https://esolangs.org/w/index.php?oldid=143618 * DolphyWind * (+7367) Created page with "{{infobox proglang |name=Torth |paradigms=Concatenative |author=[[User:DolphyWind]] |year=[[:Category:2024|2024]] |memsys=[[:Category:Stack-based|Stack-based]] |class=[[:Category:Turing complete|Turing complete]] |majorimpl=[https://github.com/DolphyWind/esoteric/tree/
18:02:14 [[Snakel (Ractangle)]] https://esolangs.org/w/index.php?diff=143619&oldid=143617 * Ractangle * (+290) /* How to get Snakel */
18:02:54 I'd prefer somewhat stronger guarantees, as in I'd like a sort function that guarantees that it always returns a permutation of the input (doesn't go to an infinite loop or panic unless the comparison function that it calls does), and further, if you can partition the inputs such that any item in an earlier partition always compares less than any item in a later partition (but within a partition the
18:03:00 comparison can return anything) then the items in earlier partitions always occurr earlier in the output slice
18:04:03 and I'd like similar guarantees to the trees, only in that case I'm not sure I know what exact guarantees I'd want
18:05:49 hmm, I wonder if those guarantees can be upheld in O(n log n) time
18:06:42 I think mergesort does it? each of the lists being merged will always be sorted by partition, and the merge will merge in partition order
18:08:53 they can be upheld in O(n log n) time, but I don't know if they can be upheld without too much slowdown in practical cases
18:09:53 so maybe you need different implementations for this and a sort with more relaxed guarantees
18:10:34 at some point, designing a sort algorithm is like designing a compression algorithm – anything you do to increase performance in some cases will reduce it in others, so the aim is to find optimisations that help in common cases, and either hurt only cases that are unlikely to happen, or hurt all the not-very-common cases by an equal insignificant amount
18:10:55 come to think of it, that's surprisingly similar to BF Joust
18:16:19 any parsimonious sorting algorithm will do the trick, because it necessarily establishes x_1 <= x_2 <= ... <= x_n for its output, and that forces partitions to be separated with the smaller partition coming first (no larger element can immediately precede a smaller one)
18:16:22 sure. and for sort (or the search trees like in the sqlite3 index), compression, or floating point scanning or printing in decimal, you need worst case guarantees because you will often run them on adversarial input.
18:17:57 not sure what the tree constraint was supposed to be
18:18:46 int-e: I don't think so. that would be true for a sorting network, but a sorting algorithm can do conditionals (or even array indexing) interactively that depends on previous results from the comparison function, and when you prove that it establishes those inequalities you might use the condition that the comparison function returns consistent results and is transitive
18:18:59 anyway, that should allow merge sort, some implementations of heap sort, and quite a few quadratic time algorithms
18:19:45 b_jonas: if you haven't compared two elements that are adjacent in the result then they could be swapped
18:20:01 quadratic time is somewhat easier because it can try every comparison at least once
18:20:34 -!- CanisCorvus has joined.
18:20:47 [[Snakel (Ractangle)]] https://esolangs.org/w/index.php?diff=143620&oldid=143619 * Ractangle * (+462) /* Truth-machine */
18:20:50 the point of involving parsimony is that it means that the comparisons you've seen are actually consistent with a partial order.
18:21:19 int-e: yes, but I don't think that refutes what I'm saying. I'll have to think more about this though, maybe there aren't bad sorting algorithms of the kind I'm imagining
18:21:30 b_jonas: ooh, I think the correct requirement is that we want the output to be a valid tsort of the input, where x is considered greater than y in the tsort if the comparison algorithm can report that x is greater than y, and vice versa
18:21:38 or, well, with less rather than greater
18:21:45 this might be equivalent to your partition condition
18:21:53 (here, a cycle in the tsort can appear in arbitrary order)
18:22:06 b_jonas: if you haven't compared x_1 and x_2 then you can't tell which order they should be in in the result
18:22:15 same for x_2 and x_3 and so on.
18:23:05 * int-e is thinking of this as learning a total order by doing comparisons, starting with the discrete partial order on the inputs
18:23:33 int-e: in particular, suppose I want to sort just three values, and for this I use an algorithm that does all three comparisons and then looks up the three results in a pre-filled 27 element lookup table, where each element tells me the permutation that I should apply. if I assumed that the comparison function is proper then I might have put garbage in the elements of the lookup table for a cyclic
18:23:39 ordering a b_jonas: that's not parsimonious in all cases
18:24:23 parsimony means that if you have established a < b and b < c, you're no longer allowed to compare a and c.
18:24:41 int-e: oh, but that excludes a lot of practical sorting algorithms
18:24:49 but it does include merge sort
18:25:10 yeah, at least some merge sorts can satisfy it, so it's not like an impossible requirement
18:25:59 quicksort also complies with that (but isn't always O(n log n))
18:25:59 basically I was substantiating I think mergesort does it?
18:26:34 ais523: not all versions of quicksort do, but sure
18:27:09 b_jonas: I'm thinking of a traditional recursive in-plce quicksort
18:27:23 -!- wWwwW has quit (Quit: Client closed).
18:27:32 yeah, any pivot selection will kill it of course
18:27:36 for this purpose
18:27:37 where you pick a pivot, swap everything lower to the left and everything higher to the right (with the pivot ending up in between), then recursively sort the lists below and above the pivot
18:28:03 *any* - like picking the median of start, end, and central elements
18:28:03 ais523: I think I've seen a version of quicksort that, for large enough arrays, takes three elements, finds their median, and then partitions the large array to two around that median. I think that one isn't parsimon... what's that word?
18:28:09 parsleyed?
18:29:25 if a sorting algorithm had parsley in it that'd me suspicous of that algorithm a bit
18:29:44 b_jonas: I think there's an O(n log n) quicksort based on median-of-medians to guaranteed pick a pivot that isn't too low or too high, although it's exceptionally complicated and almost certainly worse than the alternatives
18:30:33 ais523: oh yeah, but that's not what I was thinking of, this one is simpler. I don't remember if it picks the three candidates randomized or not.
18:30:35 hmm, actually... if you do the median selection parsimoniously and seed the partitions based off that (so never comparing those 3 elements again) it should still be parsimonious.
18:31:19 but it really depends on how exactly you implement your quicksort, including potential clever tricks for terminating the partitioning loop
18:31:20 I have a feeling that it might sort-of degenerate to mergesort if you do enough median comparisons to make it O(n log n)
18:31:23 of course any non-randomized quicksort would be right out for something like rust's sort functions, because the can take quadratic time on adversarial input that's not even hard to find
18:32:13 I remember seeing a "maximally perverse comparison function" which would compare things transitively, but only decided on their relative ordering when it was actually called, and chose it (based on the elements it was given) to try to force sorting algorithms into worst cases
18:32:32 ais523: heh that reminds me of the observation that a top-down merge sort, implemented with lists and evaluated lazily, becomes a whacky heap sort dynamically
18:32:34 I think, but am not sure, that there was a claim that it could make any sorting algorithm hit its worst case, possibly under certain assumptions
18:33:25 ais523: right, but you don't even need that, if you have the source code of the quicksort function then you can probably feed it an array of small integers on which it performs badly and it's not too expensive to find such an array
18:33:50 b_jonas: yes but it's much more interesting if you don't have the source code
18:34:06 and can do it anyway
18:34:35 maybe in theory, but relying on an adversary not knowing the source code is usually a bad idea
18:35:54 well, the attack is more interesting – the defence may not be
18:36:44 [[Special:Log/newusers]] create * Pin * New user account
18:38:19 ais523: there is kind of a difference in defense, because with a well-behaved comparison function but adversarial elements in the slice, you can in theory defend with a randomized quicksort, but I don't think randomized quicksort is actually worth as a defense from adversarial attacks, some other sorting algorithm is usually better as defense
18:38:47 with an adversarial sort function, randomized quicksort isn't enough
18:39:04 yes, randomising doesn't help against the adversarial comparison function
18:42:46 https://www.youtube.com/watch?v=zDsqJTD5LL0 => GeoGuessr with two people betting the stake that the loser has to travel to the location for which they gave the most wrong (most distant) answer. am I the only one thinking that's a really stupid bet, because it creates the perverse incentive to throw by deliberately guessing very far from a location that is easy to travel to?
18:43:53 I suspect that there are probably hidden rules involved that are not stated (in the video, and possibly not even between the participants)
18:44:10 unless it's Agorans playing it, in which case it would be expected behaviour
18:46:02 :)
18:47:37 even with the perverse incentive, the game still works, because you are aiming not to throw by as much as possible, but simply throw by more than the maximum distance you'll get it wrong on your other answers, so that you can avoid travelling at all if you are better at GeoGuessr than your opponent and they use the same strategy
18:51:18 ais523: maybe. it depends on how much you'd like to travel. in my case I wouldn't like to travel outside of Europe, and here the first location was clearly European France, which I'm fine with traveling to, so I'd probably throw to the antipode in that round
18:52:40 ais523: also they're both beginners in GeoGuessr (which makes the bet strange in first place) so I'm not sure if either of them can confidently know that they're better than the other in GeoGuessr
18:53:16 now I'm wondering what other Frances there are
18:53:30 and to be clear, they did recognize France (they live in the UK so it's not too surprising)
18:54:22 ais523: there are a few bits in Africa, especially Madagacar and Réunion, a bit or two in Central-America or South-America, and ... maybe there's something in Asia too? I can't remember
18:54:37 not Madagascar, sorry, what's the other one in Africa?
18:55:53 I don't remember the specifics, I just remember there are bits of France very spread out around the world with various statuses spread out well in the range of part of france to independent ex-colony of france
18:56:18 I've watched expert Geoguessr players play, they can figure out what sort of equipment has been used to take the pictures by looking at its shadow, and that immediately narrows down the range of different countries because they had different camera equipment available in different countries
18:56:31 and also that in GeoGuessr the natural geography and especially plants in the non-European parts looks very different from European France, but the man-made stuff, especially bollards and phone numbers, look very much like France
18:56:43 (obviously the camera doesn't take a picture of itself unless it happens to look in a mirror, which is rare – but it often takes a picture of its own shadow)
18:58:19 ais523: I have watched a lot of geoguessr plays. whether they qualify as "experts" is a matter of definition, but at least they're good enough that I can learn from them, and a few of them even aim to teach Geoguessr.
19:01:05 (obviously because there's so many bits of France outside Europe, what I said might not apply to all bits of them)
19:05:15 hehe, the sixth location in that video is funny, because it starts by looking at a vehicle with “Tromsø taxi" written on it
19:06:33 and then later a building that says “Tromsø” in big letters on its front
19:18:10 -!- craigo has quit (Quit: Leaving).
19:20:28 -!- wWwwW has joined.
19:21:19 hey korvo on menace i have to questions
19:21:27 first could you make it text based and a program
19:21:48 seocnd of all if you dot have error handeling what would happen if you inputted some random shit?
19:24:47 wWwwW: Yes, it can be implemented as a program. The matchboxes and beads are just a very slow abacus-like computer.
19:24:58 k
19:25:26 And, interestingly, random inputs still can allow learning the correct behavior at a decent rate. The trick is to enforce the *rules* of tic-tac-toe.
19:25:49 i wonder
19:25:59 now his makes no sense but:
19:26:05 if you make it print the learning progress
19:26:14 This is how the "Alpha" series from DeepMind works when playing Go or Chess; it plays random legal moves and slowly learns what moves are good from what rules are allowed.
19:26:15 then feed it back into menace for it to learn
19:26:28 how to play its learning process
19:26:30 [[Ekativ]] https://esolangs.org/w/index.php?diff=143621&oldid=143558 * She.the.people * (-258)
19:27:00 is tht possible
19:27:07 Sure. This was the "Zero" series from DeepMind; they learned by playing against themselves. Really, this was *two* learning processes at the same time.
19:27:38 no not that way
19:27:59 but the actual input of this text based menace is just copy pasted from an uotput describing the larning process
19:29:42 wWwwW: Ah, no. "describing" means that you're thinking of a document for humans. But MENACE is only a pile of matchboxes.
19:30:15 yea but if you format it
19:30:23 like what would happen?
19:30:32 in a format that works ofc
19:30:51 The question makes no sense, sorry.
19:31:01 aww:(
19:31:11 It's like asking what happens if I play Mozart for a plant.
19:31:38 Of course the Mozart, being audio waves, will vibrate the plant. But it won't be meaningful to the plant; it won't be water, nitrates, etc.
19:32:16 Similarly, of course you can take a human-readable document and encode it as a series of tic-tac-toe moves. But MENACE only cares about one meaning of tic-tac-toe: what move is least likely to lose.
19:32:16 apparently some plants are able to communicate, but they typically do it by releasing chemicals into the soil that other plants are able to detect
19:32:38 yea
19:32:44 trees do that normally
19:32:46 cross species
19:33:24 which humans cant do lol
19:36:22 [[Ekativ]] https://esolangs.org/w/index.php?diff=143622&oldid=143621 * She.the.people * (+58)
19:38:29 wWwwW: Maybe it's worth pointing out that a learning machine doesn't understand what it learns. Its outputs improve over time (perhaps assuming that the inputs are diverse or easy in some way) but it doesn't do that by building some sort of model of its context or problem.
19:38:56 MENACE doesn't have any model of tic-tac-toe. It has an annotated graph of the possible moves of tic-tac-toe.
19:39:33