←2018-08-12 2018-08-13 2018-08-14→ ↑2018 ↑all
00:00:32 <wob_jonas> If it's a code for the barber to kill you, you're screwed. If it's just an unnecessary order because the king won't micromanage you, the barber will just skip that part.
00:01:18 <shachaf> zzo38: You can certainly have all your hair cut if you have no hair.
00:01:24 <wob_jonas> It could be worse. You could be a soldier under a commanding officer that gives you stupid orders all the time.
00:01:25 <shachaf> Maybe that's the implication.
00:01:44 <shachaf> You can only have some of your hair cut if you have some hair, though.
00:03:23 <zzo38> Ah, of course, I suppose so, that can be sense
00:08:44 -!- aloril has quit (Ping timeout: 256 seconds).
00:11:04 -!- aloril has joined.
00:16:57 <xkapastel> evolve a brainfuck program to put the largest number possible on a tape with bignums
00:17:31 <xkapastel> a program synthesis benchmark due to chaitin: https://pdfs.semanticscholar.org/7370/00d9e2ea2a1ae9829b681b402831d5f0e3a3.pdf
00:18:46 <xkapastel> if i'm understanding this correctly, that's a good "hard problem" to compare synthesis methods since it requires you to evolve modularity
00:21:09 -!- ais523 has joined.
00:23:00 <wob_jonas> ais!
00:24:08 <ais523> re: control structures, I find a very commonly used control structure is "attempt to do X, if it succeeds, continue, if it fails, do some cleanup and try again"
00:24:11 <wob_jonas> ais523: "or, well, except that Rust ? only supports Option and Either" => it will be a bit more general than that technically, applying to more types, but not really more expressive. still just allows to write early exits like you can do with an Either, but with more general types
00:24:17 <ais523> this is hard to express in terms of the usual control structures
00:24:54 <shachaf> ais523: If you support general monads, do you impose an order of execution on expressions?
00:25:02 <shachaf> f(x?, y?) and so on.
00:25:27 <ais523> shachaf: you have to
00:25:39 <ais523> either that or declare it unspecified
00:25:45 <shachaf> Right.
00:26:20 <wob_jonas> ais523: um, I write stuff like that with loops. like, for example, when my cbstream bot fails to retrieve the answer from perlmonks, it logs the error, sometimes switches to another webserver (there's three of them), and sleeps for a while, then retries. but the whole thing about querying the server is in a loop anyway, it's just different actions
00:26:20 <wob_jonas> after when it succeeds and when it fails.
00:27:03 <shachaf> I was wondering whether to do that.
00:27:42 <ais523> wob_jonas: what specific sort of loop?
00:27:54 <ais523> in particular, what's the control condition?
00:28:13 <wob_jonas> ais523: an infinite one, mostly. let me check. there's some fatal errors that break out of the whole thing.
00:28:43 <wob_jonas> it's not really a good example of coding. the whole thing is over ten years old and very obsolete and ripe for a rewrite.
00:28:46 <ais523> right, my current idiom for this is while (true) { try; if (success) break; cleanup; }
00:28:56 <ais523> but that doesn't seem like a good fit for a while loop at all
00:29:04 <ais523> I think it's some new control structure that hasn't been named yet
00:29:06 <wob_jonas> and I will have to rewrite because "for over ten years with over twenty users" sounds good on my CV
00:30:25 <wob_jonas> or at least work a lot on it so it works
00:30:35 <wob_jonas> (it would still be obsolete, mind you)
00:30:47 <wob_jonas> but the perlmonks server is worse
00:31:14 <wob_jonas> it's horribly unsecure from the user's point of view, at least I think, although I never really wrote a proof of concept exploit
00:31:38 <wob_jonas> but it would need some major fixes too and the perlmonks gods are too busy to do that too
00:32:49 <wob_jonas> So, the loop I'm talking about is a loop do; ... end which is an infinite loop
00:34:28 -!- puck has quit (Quit: *eh*).
00:35:19 <wob_jonas> so, "http://russell2.math.bme.hu/~ambrus/sc/cbstream/#can_i_get_the_source_of_cbstream" ,
00:35:50 <wob_jonas> this loop is just one ruby thread by the way. the body starts with timed condition variable wait loop, which in normal operation amounts to a sleep 30, but the sleep amount varies if there are errors, and it can be woken up early if someone sends a message from irc to perlmonks,
00:36:28 <wob_jonas> then it checks for the emergency stop button (for which some perlmonks operators have a password),
00:36:33 -!- puckipedia has joined.
00:36:35 <wob_jonas> then it does the http query to perlmonks,
00:37:34 <wob_jonas> then it parses the reply (which could also cause a retriable error, but this shouldn't normally happen; it used to because of a misunderstanding between what format perlmonks thought it sends and what I received but I'd cleaned that up, so it should only happen in the very rare case if the reply gets truncated),
00:37:53 -!- Guest8451 has joined.
00:38:03 <wob_jonas> errors during the http query itself do happen sometimes though, and are retriable.
00:38:33 <wob_jonas> most of them, anyway. there's some that are fatal, on purpose, so the perlmonks admins can use that to kill cbstream too.
00:39:13 <wob_jonas> anyway, then the success or error and the time the query took and the current time is logged, then on success if any messages were found they're sent to the other thread through a queue so it can print them on irc,
00:39:33 -!- puckipedia has changed nick to puck.
00:39:36 <wob_jonas> and that's the whole loop in the retreive from perlmonks thread.
00:41:46 <wob_jonas> there are three other threads, one to send messages to perlmonks when someone writes the message on irc, one to read from irc, and one to write from irc.
00:41:50 <wob_jonas> these are ruby threads, not OS threads.
00:42:10 <wob_jonas> and there's some initialization code before the four threads start.
00:42:44 -!- Guest8451 has quit (Ping timeout: 256 seconds).
00:45:49 <wob_jonas> As for those event abstraction libraries, I'm partial to schmorp's libev, at least if you're not targeting win32, but any unix. It handles a lot of details about the better kernel interfaces each unix comes up to replace select/poll, of which there are several in various brands in unix.
00:46:08 <wob_jonas> It can't hide all the details, so you have to read the manual carefully, but it's still a pretty well done library.
00:46:34 <wob_jonas> At least if you are willing to read a well-written manual.
00:46:51 <wob_jonas> Since you write esolang specs, you probably are willing.
00:47:13 <wob_jonas> For win32, I do not recommend it. There's some win32 compatibility, but frankly, win32 is just so different and that's not what libev was made for.
00:48:46 <wob_jonas> Only difficulty is, its interface is a really C-like one, optimized for the case when you want to write a high-performance server watching many file descriptors at the same time, and you can write code that doesn't corrupt memory or cause undefined behavior by calling C libraries wrong.
00:49:12 <ais523> win32 has WaitForMultipleObjects which is a really good idea but it's incompatible with a decent proportion of what you'd want to use it for
00:49:15 <wob_jonas> But if that's what you want, the interface is well designed, and the manual is well written, the implementation is good, and schmorp reacts to sane questions.
00:50:14 <wob_jonas> I can't really tell much about win32. I do a fair share of work on win32, but not the part where I have to write programs that have to deal with the unique ... difficulties of win32.
00:51:02 <wob_jonas> And schmorp doesn't program on win32 either, he writes programs for unices, so he doesn't write libraries that help win32 much.
00:52:09 <wob_jonas> Frankly, avoiding having to deal with the unique parts of win32 is a good life choice.
00:52:18 <ais523> yes
00:52:25 <ais523> I pretty much gave up on Windows when win16 became obsolete
00:52:50 <ais523> Windows prides itself on its backwards compatibility, but it isn't actually as compatible as all that
00:53:01 <shachaf> When was that?
00:53:03 <wob_jonas> well, it did become a bit better since the older
00:53:06 <wob_jonas> um
00:53:06 <ais523> despite Microsoft's best efforts, things break, and trying to develop new programs to old APIs is really hard
00:53:10 <wob_jonas> since XP, let's say
00:53:22 <ais523> shachaf: old win16 functionality started breakinh around win95-win98
00:53:27 <ais523> although it was /meant/ to work
00:53:37 <shachaf> As I remember it Windows XP could still run Windows 2.0 programs.
00:53:55 <ais523> in windows 2 you could play sound through the system speaker
00:53:59 <ais523> in windows 98 that just doesn't work
00:54:05 <ais523> the API exists but does nothing
00:54:28 <wob_jonas> I did run _some_ win16 programs on windows 95 osr2 and they worked fine, but those were programs by MS itself
00:54:45 <wob_jonas> the same old versions of programs, not updated
00:55:46 <ais523> one thing that really annoyed me was that there was no standard program for transferring data between Windows 95 and Windows XP, which is something I really needed
00:55:49 <ais523> (I had an appropriate cable)
00:55:52 <ais523> in the end I ended up writing one
00:56:01 <ais523> that just shoved the data down the serial port
00:56:04 <wob_jonas> ais523: um, you mean like copying files?
00:56:10 <wob_jonas> between two different computers?
00:56:25 <ais523> right, but more like cat as it didn't send the filenames
00:56:29 <wob_jonas> because on the same computer you could just mount the same fat32 disk
00:56:50 <ais523> basically the equivalent of piping a file into netcat on one computer and out of netcat on another
00:57:02 <ais523> (which is a method I've actually used to send people files before now)
00:57:13 <wob_jonas> yeah
00:57:54 <wob_jonas> well, between two DOS computers, I used norton commander for dos to send files through serial port cable or parallel port cable. was easy to set up.
00:58:00 <wob_jonas> also used flopppies of course.
00:58:30 <wob_jonas> and you could use an old small hard disk if you had the time to open the cases and power down the computer and all that.
00:58:35 <ais523> more recent DOS had a built-in command for that, I think
00:58:38 <wob_jonas> but cable worked well.
00:58:38 <ais523> I forget what it was named though
00:59:03 <ais523> I remember it ran at 115200 baud, though, which was surprising for me as I didn't realise speeds above 9600 existed
00:59:57 <wob_jonas> ais523: `mode com ...` to set up serial port, then `copy con1 filename` on destination and `copy filename con1` on source?
01:00:05 <wob_jonas> plus there were some other programs that didn't come with dos
01:00:09 <wob_jonas> besides norton commander
01:00:14 <wob_jonas> but norton commander worked fine for me
01:00:42 <ais523> IIRC it had a "GUI"
01:00:46 <wob_jonas> and I you can still use it on windows 95 osr2, and likely windows 98 too. I don't know about windows xp, but it should probably work.
01:00:47 <ais523> (although using VGA text mode)
01:00:59 <wob_jonas> ais523: norton commander's link has a pretty good gui
01:01:57 <wob_jonas> I also used floppies. they work well when the two computers are too far for a cable and you don't want to move them. just cycle three floppies around, split the file with zip or other programs.
01:02:11 <ais523> I'm pretty sure this isn't a separate downloaded/purchased program I was using (unless it was a DOS program that came with Windows?)
01:02:20 <wob_jonas> I dunno
01:02:27 <ais523> I guess it could have been installed by the manufacturer, but in the days of Windows 95 people probably weren't preinstalling DOS programs
01:02:33 <wob_jonas> there could be other programs I just don't know about
01:02:54 <wob_jonas> I did install custom programs to my machine
01:03:14 <wob_jonas> I still have an image with many of those useful programs (some are lost)
01:03:48 <wob_jonas> (and a decent one-floppy compressed rescue disk, and that annoying bot that connects a DOS machine to an irc channel)
01:04:22 <ais523> aha, some searching found it: "interlink" (or "interlnk" because filenames were 8.3 back then)
01:04:49 <wob_jonas> possible
01:05:02 <ais523> nah, I remembered it as soon as I saw the name
01:05:15 <ais523> part of ms-dos 6, apparently
01:05:29 <wob_jonas> I probably just don't remember it much because norton commander worked well, I used it for transfer on cable many times
01:05:58 <wob_jonas> so it's that or floppies
01:08:41 <wob_jonas> for me
01:09:27 <wob_jonas> but these days I barely even run DOS. I'm keeping it around because there are some old games that are worth to revisit and the DOS port is good.
01:09:51 <wob_jonas> some are native DOS only, specifically the Commander Keen series
01:10:20 <wob_jonas> I don't play them these days, but will probably eventually get to it "when I have time"
01:10:40 <ais523> I think most people use DOSbox for that nowadays
01:11:02 <wob_jonas> yeah. I use bochs, or at least used it the last time. dosbox is better for some newer dos games.
01:11:24 <wob_jonas> mostly due to differences in video card and sound card capabilities.
01:11:41 <wob_jonas> might have changed in later versions of bochs and qemu and dosbox of course.
01:11:46 <wob_jonas> anyway, each of them have uses.
01:12:49 <wob_jonas> back when I used it, bochs had ... interesting bugs. so I disabled the coprocessor, which would in theory slow things down if I weren't on a machine that was from the future compared to what those DOS programs were made for.
01:14:30 <wob_jonas> and doesn't matter for the games anyway
01:16:29 <zzo38> I also use DOSBOX to run LHA, since sometimes I want to copy a file from this computer to another computer with DOS that cannot load ZIP files created from this computer.
01:16:34 <wob_jonas> by coprocessor I mean the 80387 interface of course
01:17:23 <ais523> now I'm wondering when separate 387s died out
01:17:26 <wob_jonas> cannot load zip files? can't you just install some software on it to load those zip files?
01:17:42 <ais523> they're all emulated in hardware nowadays
01:17:47 <wob_jonas> ais523: between 486 and 586. some 486s have the coprocessor built in, and all 586s do.
01:17:55 <ais523> wob_jonas: I assume djgpp has a working unzip program
01:18:02 <wob_jonas> the codenames were 486 DX versus 486 SX.
01:18:20 <ais523> well, nowadays of course, the 387 isn't even a separate part of the chip (apart from its registers), it's all done in microcode
01:18:23 <wob_jonas> but I don't know which one is which .
01:18:27 <zzo38> There is the program to load ZIP files, but it is an old version and is not compatible with the ZIP files created by 7-Zip.
01:19:09 -!- tromp has joined.
01:19:29 <wob_jonas> 7-zip maintains a DOS version of 7-zip. it's not as complete as the windows version, but it should work.
01:19:58 <wob_jonas> but there are lots of other dos programs that can read zip files.
01:20:32 <ais523> actually, I think DJGPP has its own zip program that's distributed as a .exe file to avoid the chicken-and-egg issue (it distributes most of its files as .zip files)
01:24:18 -!- tromp has quit (Ping timeout: 272 seconds).
01:32:47 <wob_jonas> I'm leaving now, sorry. G'nite.
01:32:51 -!- wob_jonas has quit (Quit: http://www.kiwiirc.com/ - A hand crafted IRC client).
01:33:28 -!- ais523 has quit (Remote host closed the connection).
01:34:41 -!- ais523 has joined.
01:42:21 -!- S_Gautam has joined.
01:47:51 -!- ais523 has quit (Ping timeout: 240 seconds).
01:48:23 -!- ais523 has joined.
01:57:05 -!- ais523 has quit (Quit: quit).
02:36:51 -!- u0_a101 has quit (Ping timeout: 240 seconds).
02:38:10 <zzo38> Is this file format for Free Hero Mesh levels does it looks like good to you? http://zzo38computer.org/fossil/heromesh.ui/wiki?name=Level+file+format
03:00:00 -!- Taneb has quit (Quit: I seem to have stopped.).
03:02:26 -!- Taneb has joined.
03:06:45 -!- tromp has joined.
03:11:20 -!- tromp has quit (Ping timeout: 272 seconds).
03:11:35 -!- imode has quit (Ping timeout: 240 seconds).
03:24:34 -!- u0_a101 has joined.
04:01:12 -!- tromp has joined.
04:05:21 -!- tromp has quit (Ping timeout: 240 seconds).
04:15:33 <esowiki> [[Surtic]] M https://esolangs.org/w/index.php?diff=57314&oldid=57306 * Galaxtone * (-14) /* C */ Removed "ASCII"
04:17:44 -!- r3m10 has joined.
04:19:04 <esowiki> [[Surtic]] M https://esolangs.org/w/index.php?diff=57315&oldid=57314 * Galaxtone * (-18) /* S */ Removed "ASCII"
04:19:29 -!- r3m10 has quit (Remote host closed the connection).
04:23:40 <esowiki> [[Surtic]] https://esolangs.org/w/index.php?diff=57316&oldid=57315 * Galaxtone * (+97) /* S */ Fixed TYPO, removed undefined behaviour of string put, changed default value of string get for differentiation between NULL and end of string.
04:52:34 <esowiki> [[Surtic]] M https://esolangs.org/w/index.php?diff=57317&oldid=57316 * Galaxtone * (+6) /* S */ Added "UTF-8"
04:54:59 -!- tromp has joined.
04:59:38 -!- tromp has quit (Ping timeout: 272 seconds).
05:01:10 <esowiki> [[Surtic]] https://esolangs.org/w/index.php?diff=57318&oldid=57317 * Galaxtone * (+28) /* C */ Added "UTF-8"
05:02:08 <esowiki> [[Surtic]] https://esolangs.org/w/index.php?diff=57319&oldid=57318 * Galaxtone * (-92) /* Instruction Syntax */ Removed force of UTF-8 to ascii, sorry for all the edits :P
05:08:29 <esowiki> [[Surtic]] M https://esolangs.org/w/index.php?diff=57320&oldid=57319 * Galaxtone * (+67) /* S */
05:09:16 -!- oerjan has joined.
05:40:57 * oerjan wonders if Yurume_______ and zemhill____ are using the same client :P
05:48:47 -!- tromp has joined.
05:52:57 -!- tromp has quit (Ping timeout: 240 seconds).
06:32:15 -!- atslash has joined.
06:32:18 <zzo38> Natural numbers are found a lot in mathematics, for example in category theory, the finite discrete categories are natural numbers, and addition, multiplication, exponentiation of those categories is like the addition, multiplication, exponentiation of those numbers. Isn't it?
06:38:08 <xkapastel> if you mean there are product, sum, and exponential types in common programming languages, then the analogy to numbers can be extended as far as you like
06:38:20 <xkapastel> you can have negative and fractional types for instance
06:38:33 <xkapastel> so you're dealing with rational numbers instead of natural numbers
06:39:10 <xkapastel> you just need to find computational interpretations that obey the algebraic laws
06:39:54 <xkapastel> https://www.cs.indiana.edu/~sabry/papers/rational.pdf
06:41:33 <zzo38> I meant the product, sum, exponential of categories, although what you mention is something too. I do not expect categories to have fractions, although you could perhaps have a program language with negative and fractional types. Can you have the types corresponding to irrational and complex numbers though?
06:42:05 <zzo38> I suppose that with exponents and fractions the result can be irrational.
06:42:55 <zzo38> I will read it
06:43:24 <oerjan> xkapastel: i think i read that pdf once, and it doesn't actually work if you think about it.
06:43:48 <xkapastel> well it executes, but there is a problem in the denotational semantics
06:44:03 <xkapastel> and there are some problems with e.g. binding a fractional value to itself
06:44:25 <xkapastel> you can also "divide by zero" at the type level
06:44:42 <zzo38> I did think you could have factorials if you have a bijective function type, some time before, I don't know quite though exactly
06:44:46 <oerjan> yeah you get contradictions if you try to take it literally.
06:44:50 <xkapastel> one of the authors of the paper discussed this stuff on reddit
06:44:59 <oerjan> i don't recall exactly which ones i thought of.
06:45:02 <zzo38> I think I read that document too, but do not remember and do not know how to work it either
06:45:10 <xkapastel> but it's still interesting, and can probably be fixewd
06:45:26 <xkapastel> you can also keep going with the analogy and do things like radical types, imaginary types, although i'm not sure how
06:53:23 <esowiki> [[User:SlackerSnail]] N https://esolangs.org/w/index.php?oldid=57321 * SlackerSnail * (+29) Created page with "[https://ajc2.xyz My website]"
06:53:31 <zzo38> Yes, it is still interesting
07:02:21 <zzo38> I had a article in esolang wiki titled "Gentzen"; how can the variant with linear logic be done, though?
07:05:56 <zzo38> That PDF document does say that these negative and fraction types are used with reversible program language, which seem a less problem to me than something that isn't reversible
07:12:16 -!- tromp has joined.
07:36:57 -!- u0_a101 has quit (Ping timeout: 240 seconds).
07:39:59 -!- SopaXorzTaker has joined.
07:53:44 -!- Phantom_Hoover has joined.
07:53:44 -!- Phantom_Hoover has quit (Changing host).
07:53:44 -!- Phantom_Hoover has joined.
08:20:19 -!- moei has quit (Quit: Leaving...).
08:35:44 -!- AnotherTest has joined.
08:59:04 -!- Numline15 has joined.
08:59:58 -!- Numline15 has quit (K-Lined).
09:12:19 -!- jem1 has joined.
09:12:35 -!- jem1 has quit (Remote host closed the connection).
09:16:11 -!- moei has joined.
09:17:42 -!- rogue2 has joined.
09:17:53 -!- salios has joined.
09:17:56 -!- rogue2 has quit (Remote host closed the connection).
09:18:01 -!- salios has quit (Remote host closed the connection).
09:20:57 -!- ws2k323 has joined.
09:22:43 -!- ws2k323 has quit (Remote host closed the connection).
09:23:40 -!- drathir9 has joined.
09:25:16 -!- drathir9 has quit (Remote host closed the connection).
10:02:27 -!- Thorne25 has joined.
10:04:11 -!- Thorne25 has quit (Remote host closed the connection).
10:07:46 -!- xkapastel has quit (Quit: Connection closed for inactivity).
10:14:51 -!- Phantom_Hoover has quit (Remote host closed the connection).
10:15:29 -!- AlexZ1 has joined.
10:17:26 -!- AlexZ1 has quit (Remote host closed the connection).
10:22:27 -!- oerjan has quit (Quit: Later).
10:22:52 -!- impomatic has joined.
10:56:02 <esowiki> [[Talk:Entfedern]] https://esolangs.org/w/index.php?diff=57322&oldid=51827 * Zseri * (+339) cat variation
10:56:34 -!- Fogity has quit (Ping timeout: 256 seconds).
10:59:19 -!- Fogity has joined.
11:14:21 -!- AnotherTest has quit (Ping timeout: 240 seconds).
11:29:08 <esowiki> [[Unfedern]] N https://esolangs.org/w/index.php?oldid=57323 * Zseri * (+1262) Created page with "{{infobox proglang |name=Unfedern |paradigms=procedural, declarative, object-oriented |author=[[User:zseri]] |year=[[:Category:2018|2018]] |typesys=static |memsys=variable-bas..."
11:51:28 -!- zseri has joined.
11:59:25 -!- tromp has quit (Remote host closed the connection).
12:02:53 -!- arooni12 has joined.
12:03:54 -!- tromp has joined.
12:04:34 -!- arooni12 has quit (Remote host closed the connection).
12:28:08 -!- Rune_K has joined.
12:30:02 -!- Rune_K has quit (Remote host closed the connection).
12:42:50 -!- xkapastel has joined.
13:43:31 -!- iDanoo14 has joined.
13:44:23 -!- iDanoo14 has quit (K-Lined).
13:55:33 -!- davidfg423 has joined.
13:57:19 -!- davidfg423 has quit (Remote host closed the connection).
14:03:01 -!- arseniiv has joined.
14:04:04 -!- casdr8 has joined.
14:05:18 -!- Turbo-Folker has joined.
14:05:35 -!- casdr8 has quit (Remote host closed the connection).
14:07:03 -!- Turbo-Folker has quit (Remote host closed the connection).
14:13:05 <esowiki> [[Special:Log/newusers]] create * Sinthorion * New user account
14:20:30 -!- sleepnap has joined.
14:21:05 -!- Fogity has quit (Ping timeout: 240 seconds).
14:22:01 -!- Fogity has joined.
14:22:05 -!- SopaXorzTaker has quit (Remote host closed the connection).
14:57:24 -!- __idiot__ has joined.
14:57:54 -!- __idiot__ has quit (Remote host closed the connection).
14:58:48 -!- ephemer0l_3 has joined.
15:03:40 -!- ephemer0l_3 has quit (Remote host closed the connection).
15:12:14 -!- SopaXorzTaker has joined.
15:22:13 -!- bradcomp has joined.
15:28:39 -!- SopaXorzTaker has quit (Remote host closed the connection).
16:10:26 <esowiki> [[Esolang:Introduce yourself]] https://esolangs.org/w/index.php?diff=57324&oldid=57288 * Sinthorion * (+128) Introduction
16:17:20 -!- Phex has joined.
16:18:47 -!- r3m4 has joined.
16:19:09 -!- r3m4 has quit (Remote host closed the connection).
16:20:21 -!- Phex has quit (Remote host closed the connection).
16:32:48 <esowiki> [[Brainfuck algorithms]] https://esolangs.org/w/index.php?diff=57325&oldid=57186 * Sinthorion * (+443) more input algorithms
16:33:17 <esowiki> [[Brainfuck algorithms]] M https://esolangs.org/w/index.php?diff=57326&oldid=57325 * Sinthorion * (-7)
17:16:15 <xkapastel> anyone here interested in a new brainfuck based game?
17:16:18 <xkapastel> https://bfbignum.github.io/
17:16:37 <xkapastel> "single player" unlike bf joust
17:17:19 <bradcomp> that sounds interesting. It's been so long since I wrote bf though
17:17:36 <xkapastel> don't worry, you're not writing bf in this one
17:19:33 <int-e> huh, is the synthesizer supposed to be written in bf?
17:19:46 <xkapastel> int-e: no, it's written in whatever you want
17:19:55 <int-e> then you'll be dividing by 0 a lot.
17:19:56 <xkapastel> it must execute BF at some point though, don't you think?
17:20:04 <xkapastel> why?
17:20:27 <xkapastel> i would love to see how you solve this with a denominator of 0
17:20:48 <xkapastel> i'm not even sure what that would imply. are you secretly an agi?
17:21:14 <int-e> because the likeliest candidate for the best program is just 57+ signs followed by . (if the output is in ASCII decimal)
17:21:14 <bradcomp> Interesting that it's based on a BF variant instead of actual BF. I was expecting the number to be a string representation
17:21:45 <xkapastel> int-e: i'm not sure i follow, you're saying the largest number you can output is 57?
17:21:59 <int-e> xkapastel: 57 is the ASCII code for '9'.
17:22:10 <xkapastel> int-e: see rule 4
17:22:31 <xkapastel> that's not even a large number by the way
17:22:45 <int-e> xkapastel: even easier than; it's all plusses followed by a single .
17:22:53 <xkapastel> so i doubt it would even do well, although you're the second person to try that
17:23:11 <xkapastel> int-e: okay imagine this, the time limit is 4096 steps
17:23:18 <xkapastel> you're saying the largest number you can output is like 4095?
17:23:24 <int-e> yes
17:23:39 <xkapastel> are you sure you don't wanna think about it
17:23:42 <int-e> in order for a cell to reach n, it has to be incremented n times
17:23:51 <int-e> brainfuck is too limited.
17:23:53 -!- sleepnap has quit (Ping timeout: 276 seconds).
17:24:23 <xkapastel> hm, maybe i've put the rules the wrong way round, and it shouldn't be limited by time, but it's an adaptation of another game
17:24:35 <xkapastel> i'm not sure that's true though, you should be able to do better
17:25:08 <int-e> xkapastel: you're welcome to find a flaw in my reasoning
17:25:16 <bradcomp> I agree. The only way to increase the value of a cell is by incrementing it. Addition and multiplication are all derived from inc
17:25:47 <int-e> xkapastel: you can make this more interesting with a size limit
17:25:54 <bradcomp> Program size might be a better indicator
17:26:12 <xkapastel> yeah, maybe the real limit is size and not time
17:26:23 <bradcomp> Or just switch to actual BF and look for the decimal representation of the largest number
17:26:29 <int-e> (you'll *also* want to have a time limit; otherwise you'll be in busy beaver territroy where you'll have trouble scoring things at all)
17:26:37 <xkapastel> bradcomp: that one is not too interesting i think
17:27:07 <int-e> (btw I should have used '1' instead of '9' earlier, printing 8 more digtits is worth far more than that meager factor of 9)
17:27:26 <int-e> meagre.
17:27:33 <Hooloovo0> to me it looked like it was looking for bf BBs
17:27:42 <Hooloovo0> which does sound kind of boring and impossibly difficult
17:27:53 <Hooloovo0> maybe you have a target number to reach, in the shortest bf program?
17:28:07 <bradcomp> BBs?
17:28:11 <xkapastel> busy beaver
17:28:24 <bradcomp> ah
17:29:25 <int-e> But regardless, the notion of "total number of BF operations executed in the search for the target program." is impossible to pinpoint and shouldn't be part of the rules.
17:29:44 <xkapastel> why is it impossible?
17:30:07 <xkapastel> i would think you need to execute bf at some point to evaluate candidate programs
17:31:20 <int-e> xkapastel: I might be generating code like [->++<], but the search program would just do x[i+1] = 2*x[i]; x[i] = 0. And possibly never have an explicit tape at all.
17:31:21 <myname> my program would just poll the wiki entry for braiinfuck numbers
17:32:09 <int-e> xkapastel: at which point I would argue that no brainfuck instructions are executed because what the search does isn't expressed in terms of increments, decrements and moving left or right.
17:32:14 <xkapastel> int-e: yeah, changing representations like that is hard to pin down besides saying "don't do that", but i'm not sure how else to measure work
17:32:27 <xkapastel> it's important to know how much effort was put in to finding a program
17:32:50 <xkapastel> the program itself is not interesting
17:32:55 <xkapastel> what's interesting is the method you used to create it
17:33:14 <int-e> xkapastel: So measure actual work. CPU time. Fix a bytecode based programming language like Python and look for a way to count the number of bytecode instructions executed...
17:33:45 <int-e> It should be objective and not depend on how a judge happens to read a particular program.
17:33:48 <xkapastel> i suppose it could be based on webassembly
17:34:28 <bradcomp> What about number of 'candidate programs' generated. I can imagine there might be synthesizers that don't generate candidate programs though
17:35:13 <int-e> bradcomp: Yeah I don't see a need for candidate programs as such, at least not written in Brainfuck.
17:35:55 <xkapastel> int-e: really? why not?
17:36:10 <bradcomp> I wasn't restricting it to BF. You'll need some sort of Intermediate representation at least though
17:36:50 -!- sleepnap has joined.
17:38:05 <int-e> xkapastel: because I think that working with a higher level language that can be translated to brainfuck but can also be executed efficiently will be much more effective than trying to generate Brainfuck directly, unless you have very stringent size constraints on the code.
17:38:49 <xkapastel> i guess that just needs to be banned
17:38:57 <int-e> good luck with that
17:39:31 <xkapastel> yeah, the best way to do it is to count synthesizer steps i guess
17:39:42 <xkapastel> of course translating to avoid the work count is cheating
17:40:50 <xkapastel> oh, one way it could work
17:40:58 <xkapastel> the only feedback is provided by some kind of api harness
17:41:08 <xkapastel> but this still requires standardizing some sort of environment for synthesis
17:41:17 <xkapastel> so i guess webassembly or something like it is needed
17:46:24 <xkapastel> maybe: the programming language is undefined (but happens to be the same one very time), so you can't just write an "equivalent" evaluator
17:46:56 <xkapastel> in the end i don't mind using the honor system, it's just a game
17:47:00 <esowiki> [[Surtic]] M https://esolangs.org/w/index.php?diff=57327&oldid=57320 * Galaxtone * (+0) /* Infinite Cat */
17:47:49 <xkapastel> there's also the approach they used in that Sonic-based deep learning game recently
17:48:00 <xkapastel> https://blog.openai.com/retro-contest/
17:48:06 <xkapastel> there were many different sonic games involved
17:48:28 <xkapastel> the semantics of instructions could be changed slightly somehow so you can't know them ahead of time
17:48:58 <xkapastel> also https://blog.openai.com/learning-dexterity/
17:49:01 <xkapastel> "domain randomization"
17:50:12 <xkapastel> e.g. increment and decrement could have different values, move left/right could have different values
17:51:09 -!- MDead has joined.
17:52:27 -!- MDude has quit (Ping timeout: 240 seconds).
17:52:33 -!- MDead has changed nick to MDude.
18:09:32 -!- Phantom_Hoover has joined.
18:09:32 -!- Phantom_Hoover has quit (Changing host).
18:09:32 -!- Phantom_Hoover has joined.
18:16:24 -!- imode has joined.
18:26:22 <xkapastel> that thing about just doing `+` over and over and then `.` is not true in general, there's a kind of constant factor slowdown involved in being limited to brainfuck which is going to be overwhelmed at some point by the algorithm you used to make big numbers
18:26:36 <xkapastel> limited to increment/decrement*
18:26:59 <xkapastel> an additive constant
18:29:14 <xkapastel> it couldn't be true otherwise bf wouldn't be turing complete
18:29:49 <xkapastel> if the size of the number you can express with a program is linear in the length of the program how could you be turing complete?
18:30:43 -!- steveeJ11 has joined.
18:30:51 -!- steveeJ11 has quit (Remote host closed the connection).
18:35:05 <bradcomp> bf is turing complete because it has nested loops. So the source code necessary to express a bignum can be much smaller than the number, but it will end up with more operations than a straight incrementation program
18:37:02 -!- AnotherTest has joined.
18:38:06 -!- Sousapro29 has joined.
18:38:21 <xkapastel> okay, i guess i was wrong it's actually always a constant number of operations more than the number you can express
18:40:35 -!- Sousapro29 has quit (Remote host closed the connection).
18:42:56 <xkapastel> hm it's not constant, i was way off :<
18:43:02 <Phantom_Hoover> <bradcomp> bf is turing complete because it has nested loops.
18:43:04 <Phantom_Hoover> hmmmmmmmmmmmmm
18:43:30 <Phantom_Hoover> that could easily not be true
18:43:31 <int-e> loop programs = primitive recursive functions
18:44:20 <Phantom_Hoover> clearly you don't need unbounded nesting because a program that implements a UTM has only bounded loop nesting
18:44:37 <int-e> yeah, one loop is enough
18:44:50 <int-e> but it has to be unbounded
18:44:53 <Phantom_Hoover> that was going to be my next line of attack
18:45:05 <bradcomp> I'm not suggesting that _all_ TC languages need nested loops. I am just saying that's what does it for BF
18:45:05 <Phantom_Hoover> why's that
18:45:40 <Phantom_Hoover> in fact that's provably not the case
18:45:50 <xkapastel> what is the other BF feature that would give it completeness?
18:46:21 <Phantom_Hoover> proof: cap loop length at the max. used by some brainfuck self-interpreter that runs a program encoded on the tape
18:46:27 <int-e> Well, it's true that you need nesting (2 levels should suffice) to make BF Turing-complete.
18:46:58 <Phantom_Hoover> you can write any finite data without using a loop so you can translate any brainfuck program into this
18:47:42 <Phantom_Hoover> int-e, ok, where's the proof though
18:48:17 <Phantom_Hoover> my gut feeling is that brainfuck without any loop nesting at all is TC
18:49:04 <xkapastel> what does a BF program like that look like?
18:49:08 <int-e> Phantom_Hoover: without nesting, the loop body adds a fixed vector at the current pointer position and shifts the pointer by a fixed amount. so you can solve the halting problem (I'm assuming the tape has only finitely many non-zero cells at each point in time)
18:49:24 <bradcomp> https://esolangs.org/wiki/Brainfuck_minus_-#Depth_two_nesting
18:49:26 <Phantom_Hoover> yeah that's a plausible line of argument
18:50:19 <bradcomp> While not a proof that it can't be done without nesting, I think that article counts as some evidence
18:51:05 <bradcomp> i.e. it's been proven to be TC with limited nesting, but not without nesting
18:51:42 <int-e> absence of proof is not proof of absence
18:52:18 <bradcomp> I know that, and explicitly said it isn't a proof
18:52:41 <Phantom_Hoover> yeah ok depth 1 has solvable halting
18:52:51 <Phantom_Hoover> (disregarding input)
18:53:29 -!- tromp has quit (Remote host closed the connection).
18:53:44 <Phantom_Hoover> gah fuck now i'm not sure again
19:05:53 -!- gurmble has joined.
19:06:35 -!- grumble has changed nick to Guest76306.
19:06:35 -!- Guest76306 has quit (Killed (weber.freenode.net (Nickname regained by services))).
19:06:35 -!- gurmble has changed nick to grumble.
19:09:55 -!- tromp has joined.
19:18:06 -!- lynn_ has joined.
19:18:44 -!- grumble has quit (Quit: It would appear there's a kernel update).
19:20:54 -!- subleq_ has joined.
19:21:21 -!- grumble has joined.
19:24:24 -!- me` has joined.
19:24:24 -!- me` has quit (Excess Flood).
19:25:18 -!- subleq has quit (*.net *.split).
19:25:25 -!- lynn has quit (*.net *.split).
19:25:26 -!- xa0 has quit (*.net *.split).
19:25:29 -!- me` has joined.
19:25:29 -!- me` has quit (Excess Flood).
19:26:16 -!- xa0 has joined.
19:26:16 -!- xa0 has quit (Excess Flood).
19:27:17 -!- xa0 has joined.
19:27:17 -!- xa0 has quit (Excess Flood).
19:27:48 -!- zzo38 has quit (Ping timeout: 260 seconds).
19:28:35 -!- xa0 has joined.
19:28:35 -!- xa0 has quit (Excess Flood).
19:29:28 -!- xa0 has joined.
19:29:28 -!- xa0 has quit (Excess Flood).
19:30:19 -!- xa0 has joined.
19:30:19 -!- xa0 has quit (Excess Flood).
19:31:13 -!- xa0 has joined.
19:31:13 -!- xa0 has quit (Excess Flood).
19:33:19 -!- xa0 has joined.
20:05:49 -!- LKoen has joined.
20:14:03 <esowiki> [[Turi]] https://esolangs.org/w/index.php?diff=57328&oldid=53311 * Osmarks * (-49)
20:14:05 -!- aloril has quit (Ping timeout: 240 seconds).
20:24:29 -!- aloril has joined.
20:38:04 -!- XorSwap has joined.
20:38:52 -!- XorSwap has quit (Client Quit).
20:55:35 -!- j-bot has quit (Remote host closed the connection).
20:55:45 -!- j-bot has joined.
20:57:30 -!- zseri has quit (Quit: Leaving).
21:21:16 -!- LKoen has quit (Quit: “It’s only logical. First you learn to talk, then you learn to think. Too bad it’s not the other way round.”).
21:31:33 -!- tromp has quit (Remote host closed the connection).
21:35:44 -!- tromp has joined.
21:46:45 -!- impomatic has quit (Read error: Connection reset by peer).
21:49:50 -!- sleepnap has left.
22:15:13 -!- tromp has quit (Remote host closed the connection).
22:18:50 -!- AnotherTest has quit (Ping timeout: 256 seconds).
22:23:57 -!- aloril has quit (Ping timeout: 240 seconds).
22:29:04 -!- aloril has joined.
22:30:51 -!- tromp has joined.
22:35:04 -!- tromp has quit (Ping timeout: 244 seconds).
23:04:31 -!- atslash has quit (Quit: This computer has gone to sleep).
23:09:19 -!- tromp has joined.
23:13:59 -!- modin2 has joined.
23:14:02 -!- tromp has quit (Ping timeout: 272 seconds).
23:14:15 -!- modin2 has quit (Remote host closed the connection).
23:23:43 <shachaf> Sgeo_: olist tomorrow, right?
23:25:32 <Sgeo_> There either will be an olist tomorrow or not, so 50-50 chance.
23:27:31 <Sgeo_> I just googled for that hoping to find the Daily Show clip, instead I find people who are actually confused.
23:29:09 <Sgeo_> https://www.reddit.com/r/askphilosophy/comments/3wsj3a/my_chances_are_always_50_for_everything_am_i_wrong/ ISN'T actually that confused, apparently this person just thinks "50-50" is an appropriate name for "may or may not happen"
23:29:38 <Sgeo_> (I only skimmed the comments)
23:41:21 -!- Phantom_Hoover has quit (Remote host closed the connection).
23:44:28 -!- arseniiv has quit (Ping timeout: 260 seconds).
23:54:27 -!- bradcomp has quit (Ping timeout: 240 seconds).
←2018-08-12 2018-08-13 2018-08-14→ ↑2018 ↑all