←2020-06-19 2020-06-20 2020-06-21→ ↑2020 ↑all
00:14:13 -!- adu has quit (Quit: adu).
00:17:29 -!- adu has joined.
00:31:03 <t20kdc> TIL it's possible to make an x86 Linux brainfuck compiler via the same "add this header, replace character X with string Y, add this footer" methodology as for some other esoteric languages
00:32:21 <b_jonas> t20kdc: well of course. if you allow footers, you can make a "compiler" (that embeds an interpreter) for a lot of things.
00:32:34 -!- Phantom__Hoover has quit (Ping timeout: 240 seconds).
00:32:38 <t20kdc> b_jonas: not even embedding an interpreter, though
00:33:03 <t20kdc> b_jonas: actual compiler, albeit with slightly odd loop handling
00:33:36 <b_jonas> sure, in this case you can do that too
00:33:43 <b_jonas> though you would have to add an upper limit to the code size
00:33:48 <b_jonas> but it can be a large upper limit
00:33:48 <zzo38> Yes, although presumably it is not optimal, I think
00:41:52 <esowiki> [[Talk:Jumplang]] https://esolangs.org/w/index.php?diff=74061&oldid=73263 * Emerald * (+175) /* Minimization */ new section
01:19:30 -!- Arcorann has joined.
02:11:30 -!- Phantom__Hoover has joined.
02:18:49 -!- Phantom__Hoover has quit (Ping timeout: 264 seconds).
02:47:57 -!- ProofTechnique has quit (Ping timeout: 260 seconds).
02:48:07 <t20kdc> well, I now have a pet brainfuck-compiler-written-in-brainfuck, though it's not very fast
02:48:47 <t20kdc> (and by 'pet' I mean 'cute and not very useful', not the device type. target: i386 Linux ELF.)
02:49:40 <t20kdc> it basically amounts to appending a bunch of premade fragments together, so...
02:49:51 -!- ProofTechnique has joined.
02:50:30 <b_jonas> t20kdc: nice. how much does it optimize?
02:50:45 <t20kdc> b_jonas: literally not at all. 1:1 conversion from instructions to fragments.
02:51:11 <b_jonas> ok
02:51:14 <b_jonas> still, nice
02:55:08 <t20kdc> b_jonas: https://20kdc.duckdns.org/bootstrap.c is basically the outline of the compiler, https://20kdc.duckdns.org/kbfc.b is the actual thing, https://20kdc.duckdns.org/kbfc.h is part of the source
02:55:37 <t20kdc> it's 4AM, so... night
02:56:34 -!- t20kdc has quit (Remote host closed the connection).
02:59:30 <zzo38> Is there a brainfuck compiler to target Glulx? The ordinary Glk output stream should work as long as the output of the program is using ISO-8859-1 character set, with no control codes other than line feed. But, to see what optimizations are possible to store stuff in local and global variables, and other stuff like that. The rest is easily enough; you can optimize multiple + or - signs, or such things like [-] easily enough.
03:22:56 -!- S_Gautam has joined.
03:22:58 -!- Arcorann has quit (Read error: Connection reset by peer).
03:38:02 <b_jonas> darn it, the n key on my keyboard is misbehaving
03:38:12 <b_jonas> I hope it's just a temporary thing
04:22:53 -!- Arcorann has joined.
04:36:01 <zzo38> Does any emulator (that emulates NES/Famicom, Gameboy, etc) have an option to draw on the screen to cover up part of the display to make the game more difficult?
04:43:24 <Arcorann> Any emulator that supports Lua, I guess
04:45:41 <Arcorann> Was there a particular game you had in mind?
04:47:28 <zzo38> Pokemon de Panepon; even if the V-HARD mode is too easy. Why is there no X-HARD mode?
04:53:33 <zzo38> (I do know that there is a hidden mode to increase the maximum speed, and I have activated that. I don't know why that is hidden, though.)
04:55:07 -!- Sgeo_ has joined.
04:56:44 <zzo38> (The other possibility would be to give opponent more hit points; do you know how to do that in this game?)
04:58:07 -!- Sgeo has quit (Ping timeout: 240 seconds).
04:58:07 <esowiki> [[International Phonetic Esoteric Language]] https://esolangs.org/w/index.php?diff=74062&oldid=73981 * Bigyihsuan * (-53) version 1.3.0
05:09:44 <esowiki> [[Talk:GORBITSA]] https://esolangs.org/w/index.php?diff=74063&oldid=74047 * NooneAtAll * (+24) /* GORBITSA Program Format */
05:17:16 -!- adu has quit (Quit: adu).
05:20:50 -!- ArthurStrong has quit (Ping timeout: 256 seconds).
05:32:21 -!- S_Gautam has quit (Quit: Connection closed for inactivity).
05:33:24 -!- adu has joined.
05:54:33 <esowiki> [[Special:Log/newusers]] create * Dion * New user account
05:54:57 -!- S_Gautam has joined.
05:57:48 -!- adu has quit (Quit: adu).
05:58:01 <esowiki> [[Esolang:Introduce yourself]] https://esolangs.org/w/index.php?diff=74064&oldid=74056 * Dion * (+133)
05:59:11 -!- ais523 has joined.
06:00:29 <ais523> "<ais523> sadly Jelly's escaping syntax blows up exponentially" => that's sad ← nowadays I normally make it a goal of mine to have nestable string literal syntax when I design languages that benefit from string literals
06:01:12 <ais523> the crazy thing is that Jelly actually uses “” quotes to delimit strings, but the delimiters have special meanings when they appear inside a string so they can't be nested in the usual way
06:08:39 <b_jonas> ais523: hmm... maybe I should reconsider the esoteric syntax that I was planning to use for the shortcut syntax for printing literal strings in Consumer Society (for debug purposes, interpreters aren't required to print the string, they're only required to recognize the syntax and be able to skip over the string)
06:09:15 <b_jonas> it blows up exponentially if you try to make a Consumer Society program that prints a Consumer Society program that prints etc
06:09:32 <ais523> <arseniiv> b_jonas: how do you think, is there a better way to escape a character than x ↦ xx, xx ↦ xxx, xxx ↦ xxxx ← this doesn't work for the string delimeter, at least not at the end of the string, unless you have some sort of C-like string concatenation rule in the parser
06:09:37 <b_jonas> admittedly in that case you could just use ordinary programming to compress the exponential sequence
06:09:44 <ais523> because when you see "a""" you don't know whether you're still inside the string or not
06:10:29 <b_jonas> ais523: yeah, I told him and he already admitted that
06:10:42 <ais523> ah right
06:10:51 <ais523> that's what I get for not reading the whole scrollback before commenting
06:11:31 <shachaf> Are there logic languages that are more like SAT than like Prolog? What would they be like?
06:11:35 <b_jonas> yeah, I do that all the time too
06:11:48 <b_jonas> shachaf: yes, SAT solvers
06:12:13 <ais523> hmm, in C, can't you get linear-growth repeated escaping by using trigraphs?
06:12:32 <shachaf> What I mean is that the execution strategy is more like SAT, which is very different from Prolog.
06:12:35 <b_jonas> ais523: you can get linear growth with just "\x5C"
06:12:39 <b_jonas> and I usually write "\x5C"
06:12:51 <shachaf> I mean, like SAT solvers. But the actual language is more usable.
06:13:05 <ais523> \ escapes to ?\?/ escapes to ??\?/?/ escapes to ???\?/?/?/ and so on
06:13:13 <ais523> but \x5C is possibly clearer?
06:13:21 <ais523> I guess neither is particularly readable
06:13:24 -!- user24 has joined.
06:13:41 <ais523> SMT2 appears to be a fairly featureful language
06:13:42 <b_jonas> ais523: the problem is that the easily available escaping function like perl's quotemeta or whatever that thing is in php uses the syntax that blows up exponentially, and that's the function you'll use in a golf language
06:13:46 <ais523> you can use it in a non-SAT-solving way
06:13:53 <ais523> the syntax is a little ridiculous but not /too/ ridiculous
06:14:09 <b_jonas> in a turing-complete language, you always have some way to avoid the exponential blowup
06:14:21 <b_jonas> I actually use "\x5C" most of the time to represent a backslash in my programs
06:14:30 <b_jonas> I hate "\\"
06:14:56 <ais523> \x5C is a little less portable-in-theory than ?\?/, isn't it?
06:15:03 <b_jonas> but I only started this a few years ago, and there are some pragmagic reasons for it like windows cmd syntax
06:15:04 <ais523> because there's no guarantee that 5C = backslash
06:15:13 <ais523> although, many recent compilers don't implement trigraphs by default
06:15:23 <ais523> also, I haven't seen "pragmagic" before but I like it
06:15:25 <b_jonas> ais523: but \x5C is much more portable to things that aren't C with trigraphs (or C++ with trigraph)
06:15:33 <b_jonas> uh, that was a typo
06:15:40 <b_jonas> I wanted to say pragmatic
06:15:48 <ais523> \u005C may be more portable to non-C things
06:16:04 <ais523> b_jonas: I thought it was a parallel with "automagic" and was trying to figure out the meaning
06:16:20 <b_jonas> ais523: yeah, but it doesn't work in C or perl or ... let me test bash, I don't know what it implements these days
06:16:35 <b_jonas> ``` echo $'u\x5Cv\u005Cw'
06:16:37 <HackEso> u\v\w
06:16:43 <b_jonas> hmm, it does work in bash
06:16:44 <ais523> I guess "automagic" means "it just works in this context because we put effort into making sure it would work", so "pragmagic" would mean "I do this because it just works in a range of contexts, even without the contexts trying to make it work"
06:16:51 <b_jonas> ok, then it only doesn't work in perl
06:17:01 <ais523> `` perl -E 'say "\u005C"'
06:17:03 <HackEso> 005C
06:17:08 <ais523> `` perl -E 'say "\u{005C}"'
06:17:09 <HackEso> ​{005C}
06:17:17 <ais523> `` perl -E 'say "\x{005C}"'
06:17:18 <HackEso> ​\
06:17:19 <b_jonas> ais523: perl's syntax is \x{005C} or \x{5C}
06:17:21 <ais523> right
06:17:30 <ais523> I knew it had a syntax for that, just took me a moment to remember it
06:17:48 <ais523> I think the "consensus" escaping format is that \u takes four hex digits and \U takes eight
06:17:52 <b_jonas> but in python, it's \x5C or \u005C , either are the same
06:17:52 <ais523> although \U is less widely implemented
06:18:02 <b_jonas> ais523: yes, it spread from Java
06:18:07 <ais523> and in a way, the first two of those eight digits are pointless
06:18:12 <b_jonas> Java is influential
06:18:23 <ais523> I'm not sure Java supports \U, I thought you were supposed to \u out a surrogate pair
06:18:33 <ais523> but I admit it's never come up
06:18:39 <b_jonas> ais523: the first two of those eight digits is future compatibility for when unicode decides to grow its code space again
06:18:59 <Arcorann> I wonder how long it'll take before Unicode doesn't have enough codepoints
06:19:14 <b_jonas> and yes, I know that that's hard because UTF-16 is designed around the current limit
06:19:44 <ais523> UTF-16 is dying out in non-Microsoft contexts
06:19:47 <ais523> albeit slowly
06:20:05 <Arcorann> I seem to remember there being an era when there was a Private Use Area in the eight-hex-digit region
06:20:07 <ais523> oh, and Funciton, but I doubt the Unicode Consortium cares much about that
06:20:22 <ais523> isn't there an entire astral plane that's private use?
06:20:22 <shachaf> ais523: Maybe SMT2 is an answer, though I kind of doubt you'd want to do programming in it.
06:20:34 <shachaf> Maybe the answer is a regular old language that generates SMT instances.
06:20:37 <ais523> shachaf: I think I tried once, although I also think I changed my mind pretty quickly
06:20:49 <shachaf> I need to learn how SMT solvers work.
06:21:02 <shachaf> I have a vague idea of how DPLL(T) works now but there a lot of other things going on.
06:21:16 <ais523> you mean internally, or from the user's point of view?
06:21:22 <ais523> I get the impression that there's quite a range of different internal algorithms
06:21:52 <b_jonas> ais523: ok, but does that help? microsoft isn't dying out, and I'm using utf16 because some windows program (which has some half-assed unicode support, though I can't understand why because apparently people in china just use illegal copies without paying the license) only accepts utf16-le as input
06:22:06 <shachaf> I mean internally.
06:22:22 <shachaf> Do you mean a range of theories or a range of implementation strategies for the non-theory part of the solver?
06:22:25 <Arcorann> I briefly wondered once if someone would invent a conlang that uses a script with exactly 65537 invented characters, just so that it can't fit in the Plane 15 PUA
06:22:43 <shachaf> I know there's DPLL(T), and something called MCSAT which is different, but I thought the general idea didn't vary that much.
06:23:12 <b_jonas> Arcorann: I think that plane only has 65534 usable code points, but there's a second smaller private use area so I don't think 65537 is enough
06:23:36 <Arcorann> I ended up checking and found that plane 16 is also a PUA
06:23:45 <ais523> there's a small PUA in the BMP, too
06:24:04 <b_jonas> oh, there are two planes?
06:24:24 <b_jonas> I thought it was one plane plus a small one in the material plane
06:24:38 <ais523> shachaf: both the SMT solvers I've used appear not to care much about which theory is selected, for those solvers the theory selection has a syntactic effect on what programs you can write
06:24:48 <ais523> but the internal algorithms look at what you actually wrote, not the theory you selected
06:25:03 <shachaf> Which sorts of theories did you use?
06:25:08 <shachaf> (And which solvers?)
06:25:49 <ais523> I started using z3 because it was the best-known, and moved onto Yices because it was much faster on the programs i was writing
06:26:24 <Arcorann> I looked up the PUAs in no-longer-valid regions, they were 0xE00000 to 0xFFFFFF and 0x60000000 to 0x7FFFFFFF
06:26:30 <ais523> I experimented with a range of theories, mostly involving arithmetic on fixed-bitwidth integers plus something vaguely array-like
06:27:30 -!- ais523 has quit (Quit: sorry for my connection).
06:27:39 <b_jonas> Arcorann: nice. is there an infinite set of private use codepoints if you allow more than 32 bits?
06:27:42 -!- ais523 has joined.
06:28:19 <ais523> come to think of it, it's actually fairly easy to extend UTF-16 to more than 21 bits
06:28:32 <ais523> just write two or more high surrogates followed by a low surrogate
06:29:04 <b_jonas> ais523: that would lose some of the nice properties, eg. now you could have a false match if you tried to do a substring search codepoint-wise
06:29:13 <ais523> this has no clashes with existing UTF-16; I think it sorts correctly too
06:29:16 <b_jonas> but a more tricky scheme that keeps this is possible
06:29:31 <Arcorann> http://www.open-std.org/CEN/TC304/guidecharactersets/guideannexb.html <-- original description of UCS
06:29:37 <ais523> I agree that it has substring match issues, although there's a simple test to see if they occurred
06:29:43 <b_jonas> but utf-8 extends much more easily
06:30:08 <shachaf> I've been reading some of the Yices code.
06:30:10 <shachaf> It's great.
06:30:31 <ais523> b_jonas: isn't there a limit to how far UTF-8 extends while keeping the nice properties?
06:30:42 <shachaf> Isn't the existing UTF-16 self-synchronizing in a way that this extension isn't?
06:30:52 <ais523> using FE as an initial byte works fine, using FF is problematic if you want to be able to extend it
06:30:54 <b_jonas> ais523: no
06:31:01 <esowiki> [[MAWP]] N https://esolangs.org/w/index.php?oldid=74065 * Dion * (+1179) Created page with "'''MAWP''' is a stack-based [[esoteric programming language]] that was made in 2020. ==Language Overview== '''MAWP''' works on an integer stack, starting with an initial va..."
06:31:03 <b_jonas> ais523: at least not the nice properties that I care about
06:31:22 <b_jonas> ais523: it breaks the property that the first byte tells you how long the representation is, but you can't keep that forever
06:31:33 <b_jonas> it still keeps all the substring and sorting properties
06:31:40 <ais523> b_jonas: what about the property that no character is a substring of any other character?
06:32:22 <ais523> once you reach FF as a prefix, what's new about the second byte that makes it distinguishable from the first byte of some other character?
06:33:06 <ais523> you've already used up your entire stock of distinguished bytes
06:33:22 <b_jonas> ais523: that property is still kept
06:33:27 <ais523> how?
06:33:36 <b_jonas> ais523: wait, I have this written up somewhere I think
06:34:28 <b_jonas> darn, I may have deleted it
06:35:28 <Arcorann> I once pondered defining more surrogates in one of the higher planes, so that six bytes would be used above plane 16
06:35:39 <esowiki> [[MAWP]] https://esolangs.org/w/index.php?diff=74066&oldid=74065 * Dion * (+371)
06:35:41 <b_jonas> Arcorann: yes, that would probably be the sanest solution
06:35:43 <shachaf> Also, a lot of SMT solvers support quantifiers?
06:35:51 <ais523> shachaf: with limits, yes
06:35:58 <shachaf> I read some things about that but I'm still not really sure how it works.
06:36:05 <ais523> they're incredibly useful, but also hard to implement efficiently
06:36:19 <ais523> so there are normally restrictions on them based on what the internal algorithm supports
06:37:24 <Arcorann> Though thinking about it again that solution would actually be twelve bytes (six BMP surrogates to express three high plane surrogates to express one 31-bit codepoint)
06:38:23 <ais523> can't you just use an astral surrogate followed by two "ordinary" low surrogates?
06:38:29 <ais523> UTF-8-style
06:38:43 <b_jonas> ais523: anyway, the encoding above asiic, basically works like this. take the binary form of your codepoint, pad it so the length is 11 plus a multiple of 5 bits. prepend a 0 bit and then prepend a 1 bit for each group of 5 bits that it's longer than 11 bits. then break the resulting bit string to 6 bit chunks (since the above guarantees the length is a multiple of six bits), prepend 11 to the first one
06:38:49 <b_jonas> and 10 to the rest of them
06:39:14 <b_jonas> ais523: you can see how to undo this procedure: strip the first two bits of each byte, and you get a unary encoding of the length, then a 0 bit, then the bits of the code point
06:39:37 <rain1> hi!
06:39:39 <b_jonas> you have to be careful with endianness and rejecting overlong encodings of course
06:39:50 <ais523> rain1: hi
06:39:54 <b_jonas> but the unary encoding of the length ensures that the substring property is kept
06:40:05 <ais523> b_jonas: oh, I see, the continuation bytes of the length start 10
06:40:16 <b_jonas> there's nothing really special about FD or FE or FF
06:40:37 <b_jonas> ais523: well, they would, but not many
06:40:53 <b_jonas> not much software actually supports this. perl does, I think, but only up to 2**64
06:41:17 <b_jonas> most software just rejects anything over 2**31 or anything over 0x10FFFF
06:41:25 <b_jonas> which is fine for non-esoteric applications of course
06:41:30 <ais523> b_jonas: I was trying to determine how you distinguished a length continuation byte from a starting byte
06:41:36 <ais523> I didn't think of encoding the length within continuation bytes
06:41:38 <b_jonas> as long as you don't mess it up in a way that leads to security vulnerabilities
06:41:43 <ais523> like, ordinary continuation bytes
06:42:20 <ais523> also, "0x10FFFF" is such a boring way to say it, why not write out 1114111? it's much prettier-looking and shorter
06:42:38 <shachaf> But it hides the structure of the number.
06:43:41 <ais523> 17×2¹⁶-1 is the same length and more descriptive structurally
06:43:56 <b_jonas> ais523: yeah, the first byte that's neither FF nor BF determines the length if your input is valid
06:44:39 <esowiki> [[MAWP]] https://esolangs.org/w/index.php?diff=74067&oldid=74066 * Dion * (+2502)
06:45:10 <b_jonas> ais523: because I once spent hours debugging a segfault from writing 8096 instead of 8196, and from that point on I'm careful to use hexadecimal numerals for numbers like this, because computers make fewer mistakes than I do
06:45:20 <Arcorann> https://en.wikipedia.org/wiki/UTF-8#History
06:45:36 <b_jonas> hexadecimal numerals or relying on constant folding
06:45:42 <ais523> 2¹³ is 8192, although you might of course have wanted 2¹³+4
06:45:43 <esowiki> [[Language list]] https://esolangs.org/w/index.php?diff=74068&oldid=74052 * Dion * (+11)
06:46:23 <ais523> it does seem helpful to memorize constants like 65536 or 4294967296 or 1103515245, though
06:46:30 <b_jonas> I'm not sure what exact number I wanted, it's for the ioctl to load VGA text mode font
06:46:39 <b_jonas> memorizing them to recognize them, sure
06:46:44 -!- nfd9001 has joined.
06:46:49 <b_jonas> but I don't want to write them
06:46:55 <shachaf> I think (16+1)¹⁶-1 is even more descriptive.
06:47:02 <b_jonas> admittedly I just wrote 65534 above, so I do sometimes write them
06:47:08 <ais523> I don't have 2⁶⁴ memorised
06:47:11 <shachaf> Perhaps (2^4+1)^16-1, or even (2^4+1)^(2^4)-1
06:47:29 <b_jonas> shachaf: um, but it's neither
06:47:40 <ais523> 16 wasn't chosen due to being 2⁴, though
06:47:42 <shachaf> Er, so it isn't.
06:47:47 <b_jonas> shachaf: it's 17*2**16-O(1)
06:48:03 <shachaf> The number I wrote is obviously wrong.
06:48:17 <shachaf> 16 wasn't chosen due to being 2⁴ but it was surely chosen due to being a power of 2.
06:49:10 <b_jonas> shachaf: hmm, that's a good question, how much of an accident it is that the 8-bit bytes that won out over 9-bit and 6-bit bytes uses 8 which is a power of 2?
06:49:30 <b_jonas> it's certainly convenient for some things, but I don't know if it could have historically been different
06:50:01 -!- nfd has quit (Ping timeout: 264 seconds).
06:50:07 <b_jonas> could we have ended up in an alternate univerese where everything is 9 bits or 18 bits or 36 bits or 72 bits long?
06:50:34 <ais523> in fact, the extra 16 planes don't have anything to do with the number 16, the number of planes was chosen so that there would be (2¹⁰×2¹⁰) bytes in them, 16 just happens to 2²⁰÷2¹⁶
06:50:34 <b_jonas> or where everything is 6 bits or 12 bits or 24 bits or 48 bits or 96 bits long?
06:50:46 <ais523> that's a power of two because it's the ratio between two powers of 2
06:51:29 <ais523> nine-bit bytes were used seriously for quite a while
06:51:37 <b_jonas> yes, and so were 12-bit words
06:51:53 <ais523> I've worked on a computer that used 14-bit words in ROM (but 8-bit bytes in RAM)
06:52:10 <b_jonas> that's why I mentioned those specific numbers, not 7-bit bytes (which were mostly used in communication, not in computations), or trits (which were used in some experimental computers
06:52:14 <b_jonas> )
06:52:28 <b_jonas> ais523: oh yeah, microcontrollers sometimes do that thing
06:52:55 <ais523> I think 14 was chosen because it's a good size for fixed-width instructions on a microcontroller, and it also lets you store strings in ROM two-per-character (assuming ASCII)
06:53:12 <ais523> err, two-characters-per-word
06:53:38 <b_jonas> yeah, something like that. but if those things spread, we'd still end up having quantities that are power of two bit sized.
06:54:14 <b_jonas> it's the multiples of 9 bit and multiples of 6 bits that were used as word sizes that I'm mostly concerned about, though admittedly I don't know too much about retrocomputing
06:54:47 <ais523> right, the most relevant non-power-of-two number I see is 59049, and that's only because it's used by both TriINTERCAL and Malbolge as the number of possible 10-trit values
06:55:28 <ais523> 3¹⁰ seems to have been chosen as the standard size of a ternary word in esoprogramming so that it can be simulated using a binary computer with 16-bit words
06:55:38 <b_jonas> yeah, but those are both made as deliberately esoteric choices
06:55:51 <ais523> TriINTERCAL also supports a 3²⁰-bit word; I think the Malbolge version that does that is called Malbolge-20
06:56:01 <b_jonas> they use base 3 because non-eso doesn't use base 3
06:56:02 <ais523> which should really be properly specified this year, for the naming pun
06:56:34 <b_jonas> ais523: you have to talk to kspalaiologos for that one
06:56:49 <ais523> oh, it's on Esolang already
06:56:59 <ais523> dating from 2017
06:57:10 <b_jonas> but I fear it'll faill into that limbo like the befunge extensions that technically exist but people don't use it
06:57:46 <ais523> kspalaiologos uses it
06:57:53 <b_jonas> oh wow
06:58:03 <b_jonas> nice
06:58:13 <ais523> I can't get at the spec, though, because the domain is using a security certificate from a different domain
06:58:16 <ais523> let me try the web archive
06:58:35 <b_jonas> you can't get at the spec? is this a good time to ask if the C-intercal docs are still unreachable?
06:59:11 <ais523> they're reachable in a convoluted way, because the source repository from them is online somewhere
06:59:14 <esowiki> [[MAWP]] https://esolangs.org/w/index.php?diff=74069&oldid=74067 * Dion * (+14)
06:59:38 <b_jonas> ok
07:00:29 <b_jonas> if you find that, please put a link to the article on esolangs.org
07:00:55 <b_jonas> not that I plan to do anything interesting with intercal
07:01:05 <b_jonas> I'm more interested about your less esoteric projects
07:02:06 <b_jonas> (I guess that's obvious, I asked about ayacc and nethack4 and scapegoat and that balanced tree library)
07:02:07 -!- LKoen has joined.
07:02:23 -!- tromp has joined.
07:03:09 <esowiki> [[C-INTERCAL]] https://esolangs.org/w/index.php?diff=74070&oldid=65534 * Ais523 * (+263) /* External resources */ link my mirror
07:03:42 <b_jonas> thanks
07:09:21 <ais523> I started mirroring it when all the other repos disappeared
07:09:25 <ais523> but forgot to tell anyone
07:09:39 <ais523> it's the only place I commit to nowadays, because there isn't anywhere else to commit to
07:11:14 <b_jonas> I see
07:11:34 <b_jonas> the tree library doesn't exist yet, right?
07:11:47 <b_jonas> you'd probably have told me if it existed
07:11:57 <ais523> I haven't worked on it for ages
07:12:08 <b_jonas> ok
07:16:54 -!- imode has quit (Ping timeout: 240 seconds).
07:25:22 <esowiki> [[BF-ASM:8]] M https://esolangs.org/w/index.php?diff=74071&oldid=73993 * DmilkaSTD * (+12) 'for' plans
07:26:30 <esowiki> [[BF-ASM:8]] M https://esolangs.org/w/index.php?diff=74072&oldid=74071 * DmilkaSTD * (+24) This will be hard to maintain...
07:31:39 -!- FreeFull has quit.
07:32:17 <esowiki> [[BF-ASM:8]] M https://esolangs.org/w/index.php?diff=74073&oldid=74072 * DmilkaSTD * (+31) literally i dont want to make the compileeeeeeeeeeeeeeeeeeer :(
07:44:37 -!- sprocklem has quit (Ping timeout: 264 seconds).
07:45:44 -!- sprocklem has joined.
08:16:13 <esowiki> [[Special:Log/newusers]] create * Georgelam6 * New user account
08:33:43 -!- nfd has joined.
08:36:54 -!- nfd9001 has quit (Ping timeout: 240 seconds).
08:51:39 -!- Sgeo_ has quit (Read error: Connection reset by peer).
08:51:52 -!- FreeFull has joined.
08:57:48 <shachaf> On this SAT instance (pigeon-hole/hole10.cnf), my SAT solver takes 1.5s, and minisat takes 92.5s (by default) and 8s (when I disable restarts).
09:17:13 <esowiki> [[Talk:GORBITSA]] M https://esolangs.org/w/index.php?diff=74074&oldid=74063 * Ais523 * (-23) fix talk page formatting
09:18:42 <esowiki> [[Talk:GORBITSA]] https://esolangs.org/w/index.php?diff=74075&oldid=74074 * Ais523 * (-1) double rv; actually, the formatting was correct in the first place
09:33:34 <esowiki> [[BF-ASM:8]] M https://esolangs.org/w/index.php?diff=74076&oldid=74073 * DmilkaSTD * (+74) this will be so hard to maintain... ... ...
09:38:24 -!- arseniiv has joined.
09:42:21 -!- S_Gautam has quit (Quit: Connection closed for inactivity).
09:57:22 <esowiki> [[GORBITSA]] https://esolangs.org/w/index.php?diff=74077&oldid=74059 * Geek Joystick * (-13) /* Implementations */
09:57:45 <esowiki> [[GORBITSA]] https://esolangs.org/w/index.php?diff=74078&oldid=74077 * Geek Joystick * (+13) /* Implementations */
10:23:48 <esowiki> [[Esolang:Introduce yourself]] https://esolangs.org/w/index.php?diff=74079&oldid=74064 * Ais523 * (+60) looks like cloud-to-butt is messing up some people's attempt to introduce themselves; it's probably good that that is prohibited, but we should give a clue as to what's going on
10:24:08 -!- arseniiv has quit (Ping timeout: 258 seconds).
10:35:50 -!- t20kdc has joined.
10:43:28 -!- arseniiv has joined.
10:51:33 <arseniiv> what’s good about myopia is that you can be absolutely sure no part of your brain read a spoiler if you moved back from the screen quickly enough
11:02:38 -!- Phantom__Hoover has joined.
11:30:20 -!- Lord_of_Life_ has joined.
11:31:59 -!- Lord_of_Life has quit (Ping timeout: 258 seconds).
11:33:07 -!- Lord_of_Life_ has changed nick to Lord_of_Life.
12:01:41 -!- rain1 has quit (Quit: Leaving).
12:35:10 <esowiki> [[MAWP]] M https://esolangs.org/w/index.php?diff=74080&oldid=74069 * PythonshellDebugwindow * (+617) /* Computational class */ comp class + cats
12:35:49 <esowiki> [[MAWP]] M https://esolangs.org/w/index.php?diff=74081&oldid=74080 * PythonshellDebugwindow * (-1) /* Language Overview */ remove -> pop
12:52:18 <esowiki> [[Jumplang]] M https://esolangs.org/w/index.php?diff=74082&oldid=73856 * PythonshellDebugwindow * (+21) /* Commands */
12:52:28 <esowiki> [[Talk:Jumplang]] M https://esolangs.org/w/index.php?diff=74083&oldid=74061 * PythonshellDebugwindow * (+197) /* Minimization */
12:54:45 <esowiki> [[Jumplang]] M https://esolangs.org/w/index.php?diff=74084&oldid=74082 * PythonshellDebugwindow * (-3) /* Commands */
12:57:57 -!- rain1 has joined.
12:58:40 <esowiki> [[Turing-machine]] M https://esolangs.org/w/index.php?diff=74085&oldid=68174 * PythonshellDebugwindow * (+52) CATS
13:03:36 <esowiki> [[Jumpmin]] N https://esolangs.org/w/index.php?oldid=74086 * PythonshellDebugwindow * (+3341) Minimalization of Jumplang
13:03:55 <esowiki> [[Jumplang]] M https://esolangs.org/w/index.php?diff=74087&oldid=74084 * PythonshellDebugwindow * (-29) /* Examples */ rm duplicat
13:06:20 <esowiki> [[Jumpmin]] M https://esolangs.org/w/index.php?diff=74088&oldid=74086 * PythonshellDebugwindow * (+302) /* Further development */
13:06:40 <esowiki> [[Jumplang]] M https://esolangs.org/w/index.php?diff=74089&oldid=74087 * PythonshellDebugwindow * (-308) /* Minimization */
13:07:09 <esowiki> [[Jumplang]] M https://esolangs.org/w/index.php?diff=74090&oldid=74089 * PythonshellDebugwindow * (+58) /* See also */
13:07:38 <esowiki> [[Language list]] M https://esolangs.org/w/index.php?diff=74091&oldid=74068 * PythonshellDebugwindow * (+14) /* J */ + [[Jumpmin]]
13:08:18 <esowiki> [[User:PythonshellDebugwindow]] M https://esolangs.org/w/index.php?diff=74092&oldid=73952 * PythonshellDebugwindow * (+55) /* Languages */
13:09:09 <esowiki> [[Vandevelo]] M https://esolangs.org/w/index.php?diff=74093&oldid=73949 * PythonshellDebugwindow * (+13) /* Special variables */
13:09:39 <esowiki> [[User:Osmarks]] N https://esolangs.org/w/index.php?oldid=74094 * Osmarks * (+149) Created page with "{{Deletedpage}} {{PageWIP}} {{Wrongtitle}} {{User:Sinthorion}} {{Spoiler|{{Programming Language}}}} {{:Joke language list}} {{Special:RecentChanges}}"
13:10:23 <esowiki> [[Vandevelo]] M https://esolangs.org/w/index.php?diff=74095&oldid=74093 * PythonshellDebugwindow * (+127) /* Expressions */
13:12:22 <esowiki> [[Visify]] M https://esolangs.org/w/index.php?diff=74096&oldid=73828 * PythonshellDebugwindow * (+141) /* Syntax */ Comments
13:13:31 <esowiki> [[Visify]] M https://esolangs.org/w/index.php?diff=74097&oldid=74096 * PythonshellDebugwindow * (+153) /* Arguments */ how did I forget $x and $y?
13:14:53 <esowiki> [[Test]] N https://esolangs.org/w/index.php?oldid=74098 * Osmarks * (+0) Osmarks created the page [[Test]] using a non-default content model "JavaScript": Testing
13:14:53 <esowiki> [[Special:Log/contentmodel]] new * Osmarks * Osmarks created the page [[Test]] using a non-default content model "JavaScript": Testing
13:15:10 <esowiki> [[Test]] https://esolangs.org/w/index.php?diff=74099&oldid=74098 * Osmarks * (+30)
13:16:32 <esowiki> [[Special:Log/move]] move * Osmarks * moved [[Test]] to [[JS content model test]]
13:19:27 <esowiki> [[GORBITSA]] https://esolangs.org/w/index.php?diff=74102&oldid=74078 * ZippyMagician * (-47) Memory starts at 0
13:28:37 <Arcorann> https://everything2.com/title/The%2520Teach%2520Yourself%2520to%2520be%2520a%2520Dummy%2520in%252024%2520Hours%2520Bible <-- I wonder if it's possible to invent a language where this is actually valid code
13:30:11 <myname> now i want that book
13:51:11 <b_jonas> I don't need it now, I'm just curious, does anyone have a backup of the database of New inverse symbolic calculator (ISC, Plouffe's inverter, real number search) "https://isc.carma.newcastle.edu.au/" ?
13:57:33 -!- nfd9001 has joined.
14:00:20 -!- nfd has quit (Ping timeout: 258 seconds).
14:16:17 <esowiki> [[GORBITSA]] https://esolangs.org/w/index.php?diff=74103&oldid=74102 * Geek Joystick * (+200) /* Programs */
14:16:31 <esowiki> [[All Turing-complete languages are brainfuck derivatives]] N https://esolangs.org/w/index.php?oldid=74104 * PythonshellDebugwindow * (+2459) Created page with "'''All Turing-complete languages are brainfuck derivatives''' is a family of [[esoteric programming language]]s and [[esoteric subset]]s first realized by User:PythonshellDe..."
14:17:33 <esowiki> [[Category:Esoteric subset]] M https://esolangs.org/w/index.php?diff=74105&oldid=43253 * PythonshellDebugwindow * (+24) cat
14:22:11 <esowiki> [[All Turing-complete languages are brainfuck derivatives]] M https://esolangs.org/w/index.php?diff=74106&oldid=74104 * PythonshellDebugwindow * (+88)
14:22:42 <esowiki> [[All Turing-complete languages are brainfuck derivatives]] M https://esolangs.org/w/index.php?diff=74107&oldid=74106 * PythonshellDebugwindow * (-2) /* Subset details */
14:23:13 <esowiki> [[Special:Log/move]] move * PythonshellDebugwindow * moved [[All Turing-complete languages are brainfuck derivatives]] to [[All Turing-complete languages are brainfuck equivalents]]
14:23:23 <esowiki> [[All Turing-complete languages are brainfuck equivalents]] M https://esolangs.org/w/index.php?diff=74110&oldid=74108 * PythonshellDebugwindow * (+0)
14:24:09 <esowiki> [[User:PythonshellDebugwindow]] M https://esolangs.org/w/index.php?diff=74111&oldid=74092 * PythonshellDebugwindow * (+142) /* Languages */
14:25:35 <esowiki> [[Int**]] M https://esolangs.org/w/index.php?diff=74112&oldid=72742 * PythonshellDebugwindow * (-2)
14:26:20 <esowiki> [[Int**]] M https://esolangs.org/w/index.php?diff=74113&oldid=74112 * PythonshellDebugwindow * (+33) /* Interpreters */ How can this be Uncomputable ''and'' Implemented?
14:32:49 <rain1> 0.44721359549995793928183473374625524709 what number is htis?
14:34:34 <fizzie> `` echo '1/sqrt(5)' | bc -l
14:34:35 <HackEso> ​.44721359549995793928
14:38:55 <fizzie> `` dc -e '40k 1 5v/n' # I keep thinking I should use dc over bc more, but I keep forgetting how
14:38:56 <HackEso> ​.4472135954999579392818347337462552470881
14:41:34 <esowiki> [[Brainfuck]] M https://esolangs.org/w/index.php?diff=74114&oldid=70723 * PythonshellDebugwindow * (+120) cats
14:43:24 <esowiki> [[Unibrain]] M https://esolangs.org/w/index.php?diff=74115&oldid=43341 * PythonshellDebugwindow * (+27) /* Related Languages */ ''cat?''
15:03:34 -!- Phantom__Hoover has quit (Ping timeout: 240 seconds).
15:11:19 -!- ArthurStrong has joined.
15:21:15 <esowiki> [[Special:Log/newusers]] create * 7n7o * New user account
15:25:20 <esowiki> [[Esolang:Introduce yourself]] https://esolangs.org/w/index.php?diff=74116&oldid=74079 * 7n7o * (+160) /* Introductions */
15:27:05 <esowiki> [[Special:Log/newusers]] create * Dominic Zdan * New user account
15:27:08 -!- Arcorann has quit (Read error: Connection reset by peer).
15:33:45 <esowiki> [[Esolang:Introduce yourself]] https://esolangs.org/w/index.php?diff=74117&oldid=74116 * Dominic Zdan * (+112) /* Introductions */
15:35:41 <esowiki> [[PythonshellDebugwindow/Rewriting Language]] M https://esolangs.org/w/index.php?diff=74118&oldid=73468 * PythonshellDebugwindow * (+141)
15:35:43 -!- user24 has quit (Remote host closed the connection).
15:37:07 <esowiki> [[International Phonetic Esoteric Language]] https://esolangs.org/w/index.php?diff=74119&oldid=74062 * Bigyihsuan * (+107) /* Plosives: Stack Operations */
15:37:18 <esowiki> [[International Phonetic Esoteric Language]] https://esolangs.org/w/index.php?diff=74120&oldid=74119 * Bigyihsuan * (+0) /* Plosives: Stack Operations */
16:01:10 <esowiki> [[JS content model test]] M https://esolangs.org/w/index.php?diff=74121&oldid=74100 * PythonshellDebugwindow * (+57)
16:04:28 <esowiki> [[Unified HQ9+]] M https://esolangs.org/w/index.php?diff=74122&oldid=71398 * PythonshellDebugwindow * (-23) import unpipe; unpipe.unpipe("User")
16:08:20 <esowiki> [[Embedded HQ9+]] M https://esolangs.org/w/index.php?diff=74123&oldid=68894 * PythonshellDebugwindow * (+23) joke langs == langs
16:09:09 <esowiki> [[Letters++]] M https://esolangs.org/w/index.php?diff=74124&oldid=66471 * PythonshellDebugwindow * (-24) wip
16:30:51 <esowiki> [[Funciton/Quine]] M https://esolangs.org/w/index.php?diff=74125&oldid=72814 * PythonshellDebugwindow * (+23)
16:32:02 <esowiki> [[LisL/examples]] M https://esolangs.org/w/index.php?diff=74126&oldid=73786 * PythonshellDebugwindow * (-5) page->parent == nullptr
16:36:52 <esowiki> [[Register Automaton]] M https://esolangs.org/w/index.php?diff=74127&oldid=68190 * PythonshellDebugwindow * (+122)
16:38:20 <esowiki> [[Minscode]] M https://esolangs.org/w/index.php?diff=74128&oldid=57111 * PythonshellDebugwindow * (+10)
16:38:39 <esowiki> [[Minscode]] M https://esolangs.org/w/index.php?diff=74129&oldid=74128 * PythonshellDebugwindow * (-4) /* Instructions */
16:38:48 <esowiki> [[Minscode]] M https://esolangs.org/w/index.php?diff=74130&oldid=74129 * PythonshellDebugwindow * (+0) /* Instructions */
17:18:12 <esowiki> [[Brain]] M https://esolangs.org/w/index.php?diff=74131&oldid=57136 * PythonshellDebugwindow * (+191) /* External Resources */ cats
17:44:37 -!- imode has joined.
18:14:31 <esowiki> [[QUATRE-CALC]] M https://esolangs.org/w/index.php?diff=74132&oldid=35081 * PythonshellDebugwindow * (+50) cats
18:21:37 <esowiki> [[GORBITSA]] https://esolangs.org/w/index.php?diff=74133&oldid=74103 * ZippyMagician * (+471) Update self-interpreter
18:26:11 <esowiki> [[GORBITSA]] https://esolangs.org/w/index.php?diff=74134&oldid=74133 * ZippyMagician * (+10) /* Self Interpreter (by User:ZippyMagician) */
18:29:35 <esowiki> [[MyOwnLanguage]] M https://esolangs.org/w/index.php?diff=74135&oldid=66742 * PythonshellDebugwindow * (+322)
18:46:03 -!- TheLie has joined.
19:11:49 <esowiki> [[MyOwnLanguage]] M https://esolangs.org/w/index.php?diff=74136&oldid=74135 * PythonshellDebugwindow * (-27) /* Interpreter in Python 3 */
19:12:38 <esowiki> [[Nairb]] M https://esolangs.org/w/index.php?diff=74137&oldid=71194 * PythonshellDebugwindow * (-1)
19:12:45 -!- LKoen has quit (Quit: Leaving).
19:13:31 <esowiki> [[ShadyAsFuck]] M https://esolangs.org/w/index.php?diff=74138&oldid=53873 * PythonshellDebugwindow * (+2)
19:23:12 -!- adu has joined.
20:30:02 <shachaf> I have become a three-star programmer.
20:32:15 <myname> why not become a rockstar developer?
20:35:51 <adu> out of how many stars?
20:47:03 <esowiki> [[International Phonetic Esoteric Language]] https://esolangs.org/w/index.php?diff=74139&oldid=74120 * Bigyihsuan * (+3) /* Back Fricatives, Taps/Flaps, Trills: List and String operations */
20:51:36 <shachaf> I think any number of stars your compiler allows.
20:51:53 <shachaf> In this case I wrote some function f(int *argc, char ***argv)
20:52:10 <int-e> . o O ( is it a regular expression compiler )
20:53:57 <b_jonas> I think of it backwards. if I write a three-star variable, it's often a mistake, and I shouldn't.
20:54:22 <b_jonas> two stars is fine, I have to use that often
20:55:32 <int-e> this is not proper software engineering
20:55:56 <int-e> any problem can be solved by an additional level of indirection, which will require an additional star ;-)
20:56:36 <int-e> Now who wants to be an omega-star programmer?
20:57:06 <zzo38> I have also used three starts sometimes, but it is rare; usually it isn't helpful, but sometimes it is.
20:58:27 <b_jonas> int-e: no, it often won't require an additional star
20:58:43 <int-e> b_jonas: you're too serious
20:58:54 <b_jonas> maybe
21:01:38 <shachaf> If you want to rapidly increase your number of stars, I recommend function pointers.
21:02:45 <int-e> moving closure to stardom
21:03:50 <shachaf> I got CDCL working (?) in my SAT solver yesterday.
21:04:07 <shachaf> I mean, I already had clause learning, but I added a really primitive form of clause deletion, so now it's actually practical.
21:04:09 <esowiki> [[Esolang:Sandbox]] https://esolangs.org/w/index.php?diff=74140&oldid=72880 * Bigyihsuan * (+1468)
21:06:13 <rain1> What will you use CDCL for?
21:07:47 <spruit11> What was CDCL again?
21:07:51 * spruit11 googles
21:07:56 <shachaf> Unknown.
21:08:08 <spruit11> Oh, right.
21:08:34 -!- ais523 has quit (Ping timeout: 240 seconds).
21:08:40 <int-e> spruit11: heh, didn't you implement your own SAT solver?
21:08:46 <int-e> or am I mixing up people
21:09:28 <int-e> Unforunately I'm prone to doing that.
21:10:20 <rain1> I implemented sat solver
21:10:24 <spruit11> I did, but I don't think you mean me.
21:10:29 <spruit11> Right.
21:11:04 <shachaf> I added automatic usage message generation to my option parser: https://shachaf.net/tmp/mop/mop.h
21:11:11 <b_jonas> wow, we have a lot of people here who have implemented sat solvers
21:11:11 <int-e> rain1: I'm certain I didn't mean you.
21:11:15 <shachaf> So convenient. I'm not sure it's worth it.
21:11:39 <b_jonas> shachaf: as long as you allow the caller to override it, it's fine
21:11:40 <esowiki> [[All Turing-complete languages are brainfuck equivalents]] https://esolangs.org/w/index.php?diff=74141&oldid=74110 * 20kdc * (+1540) /* Example members (languages and subsets) */ well, if ... any ... substitution is valid...
21:11:41 <int-e> Nor shachaf, there was somebody else.
21:11:59 <shachaf> b_jonas: Well, the caller doesn't have to call print_usage at all.
21:12:07 <spruit11> I made a SAT solver once and then one inspired on NAND reasoning.
21:12:08 <shachaf> Or they can process the list of options themselves.
21:12:20 <spruit11> The latter was more general but slow as hell.
21:15:48 <esowiki> [[Esolang:Sandbox]] https://esolangs.org/w/index.php?diff=74142&oldid=74140 * Bigyihsuan * (+2) /* Turing Completeness */
21:16:07 <shachaf> I used SAT solvers to come up with these puzzles: https://logic-masters.de/Raetselportal/Benutzer/eingestellt.php?name=shachaf
21:16:27 <esowiki> [[Esolang:Sandbox]] https://esolangs.org/w/index.php?diff=74143&oldid=74142 * Bigyihsuan * (+0) /* Turing Completeness */
21:16:48 <int-e> hmm, "eingestellt"
21:17:20 <spruit11> I still have a Sudoko solver in ML somewhere. Lemme look.
21:17:51 <shachaf> Yes, for some reason the website is in German.
21:17:58 -!- imode has quit (Ping timeout: 246 seconds).
21:18:11 <spruit11> http://666-bits.blogspot.com/2008/01/yet-another-sudoku-solver.html
21:18:12 <int-e> https://en.bab.la/dictionary/german-english/einstellen
21:18:17 <rain1> Did you try this sudoku? https://www.youtube.com/watch?v=Vfps6nwPWmU
21:18:25 <rain1> I couldn't solve this
21:18:42 <int-e> rain1: I'd just throw it at my computer program if I can find it.
21:18:57 <int-e> I don't actually like sudokus.
21:19:14 <rain1> it will be solved easily by algorithms
21:19:22 -!- Sgeo has joined.
21:19:28 <int-e> half of the advanced deduction procedures exploit the fact that there's a unique solution, which I consider improper reasoning.
21:19:49 <spruit11> Me too. It's more fun to think about solvers than about actual Sudokus.
21:20:18 <rain1> what are your views on the assumption of uniqueness?
21:20:47 <int-e> as I said... why are you asking me to repeat myself?
21:22:33 <shachaf> Here's a Python Sudoku solver I wrote once in ~40 lines: https://slbkbs.org/tmp/old-python-solver.py
21:23:18 <shachaf> assumed at the time that 9x9 Sudoku is just too easy for computers to bother. But it turns out even fancy SAT solvers can have trouble with them, depending on your constraints.
21:23:22 <shachaf> s/^/I/
21:23:48 <zzo38> Did you see the Sudoku solver in SQL?
21:23:51 <shachaf> For example, it took the SAT solvers I tried quite a while to show that there are no valid Sudoku instances if you don't allow digits to be on the same / or \ diagonal.
21:24:22 <rain1> damn
21:24:25 <rain1> I wrote a sudoku solver but i can't find it
21:24:55 <b_jonas> Llasnad giftsubs hype @The_Bool_aid_Man @dr_yolo_14 @oej820
21:25:17 <shachaf> I agree with b_jonas.
21:25:30 <rain1> Hell yeah
21:25:36 <b_jonas> oh worry
21:25:44 <b_jonas> I keep not looking at which channel I'm typing to
21:27:56 <int-e> shachaf: Isn't that what X-Sudokus are?
21:28:10 <shachaf> I mean every diagonal and antidiagonal, not just the main ones.
21:28:41 <int-e> Oh, wrapping around?
21:28:44 <shachaf> No wrapping.
21:28:49 <shachaf> Just shorter than 9 diagonals.
21:28:53 <int-e> Ah. Right, I see now.
21:29:00 <shachaf> So it's only "at most" constraints, not "at least".
21:29:27 <int-e> Hrm, I wonder how obvious that is.
21:31:57 <shachaf> Hmm, I should implement restarts in my solver.
21:32:14 <shachaf> Seems like an important (and easy) feature.
21:33:02 <int-e> I suppose, once you have any kind of learning and possibly variable selection heuristics...
21:33:32 <shachaf> Oh, right, I also need to implement a variable selection heuristic.
21:33:43 <shachaf> Right now I'm using a static heuristic which doesn't seem great.
21:34:04 <shachaf> That's probably even more important than restarts.
21:34:12 <shachaf> Otherwise there's no point to restarting.
21:34:18 <shachaf> I had some randomness before but I took it out.
21:52:03 <spruit11> Yah. They come together.
21:53:06 <int-e> shachaf: do SAT solvers still struggle if you pre-assign the first row to 123456789?
21:53:40 <shachaf> Good question. For a lot of my puzzles I've been trying to break this symmetry with the rules themselves, but of course the diagonal constraints don't do that.
21:53:46 <int-e> (or something similar that breaks the symmetries)
21:58:34 <int-e> My really old C++ solver takes 1.2ms if given that first row. 0.44s without symmetry breaking (a significant part of the former time is spent on initialization).
21:59:40 <int-e> But the numbers look like it's not completely obvious.
22:00:14 <int-e> "it" being the fact that no such sudokus-with-distinct-diagonal-entries exist
22:03:38 <zzo38> rain1: About assumption of uniqueness, I personally don't make that assumption unless the rules say it is unique (which I have seen in some puzzles, but not Sudoku).
22:08:29 <shachaf> int-e: Wait, now it's instant.
22:08:51 <shachaf> Hmm, it must've been somethig more complicated.
22:09:05 <shachaf> My solver is also instant.
22:09:27 <shachaf> Oh, wait.
22:11:04 <int-e> shachaf: Note that this isn't a SAT solver, it's a dedicated Sudoku solver.
22:11:13 <shachaf> Yes.
22:11:17 <int-e> But hmm, only 75 nodes? Maybe this is obvious after all.
22:11:49 <int-e> But it's hard to say; my search assigns all places for a digit at once.
22:12:14 <shachaf> I had some leftover clues I forgot about.
22:12:24 <shachaf> MiniSAT took ~40s with the symmetry breaking, I think.
22:12:48 <int-e> 5273809 nodes without symmetry breaking
22:15:34 <shachaf> It takes MiniSAT 294s without symmetyr breaking.
22:15:42 <shachaf> With symmetry breaking it's instant.
22:15:56 <int-e> hmm. decent.
22:16:12 <shachaf> By which I mean 0.5s, not really instant.
22:16:40 <esowiki> [[GORBITSA]] M https://esolangs.org/w/index.php?diff=74144&oldid=74134 * ZippyMagician * (-10) Fix
22:23:17 <int-e> Upon closer inspection I doubt it's obvious, that 75 number is pretty misleading :)
22:27:18 <shachaf> CaDiCaL takes 509s to show UNSAT.
22:27:31 <shachaf> And 0.045s with symmetry breaking.
22:30:41 -!- imode has joined.
22:46:29 <shachaf> int-e: Your C++ solver sounds pretty fancy.
22:55:29 -!- t20kdc has quit (Remote host closed the connection).
23:04:10 <int-e> shachaf: https://int-e.eu/~bf3/tmp/sudoku_solve.cc in full uncommented beauty
23:04:37 <shachaf> text/x-c++src
23:05:36 <int-e> but the gist of it is to compute bitmasks for the possible placements of the 9 occurrences of each digit, keep only those that are compatible with the hints, and then do some set covering with that.
23:06:20 <int-e> so the search depth is only 9, which is probably a large part of the reason why this is pretty fast
23:06:48 <int-e> (actually 8 because the final mask is guaranteed to fit in for free)
23:08:16 <int-e> shachaf: oh and this is the plain sudoku solver, without the hacked-on diagonal constraint.
23:08:34 <shachaf> Hmm. I wonder whether the thing this is doing could be expressed in SAT better.
23:09:36 <shachaf> At first I only expressed the "at least one of each digit" constraints, without "at most one", and it was pretty slow.
23:15:30 <int-e> I'd habitually add the naive C(n,2) disjunctions for the at-most-one constraint.
23:15:51 <shachaf> Yes.
23:16:05 <shachaf> Though I had an instance that my solver was slow on with either at-most or at-least, but fast with both.
23:16:09 <int-e> Even though I know it's easy to express with fewer clauses if you're not afraid of extra variables.
23:16:25 <shachaf> (Now that I have CDCL it's fast either way.)
23:16:36 <shachaf> I haven't been adding any extra variables so far.
23:17:00 <int-e> some poeple have the attitude that CDCL is better than this than people, learning the *right* clauses of that type.
23:17:23 <shachaf> I suspect people are still much better at symmetry breaking.
23:18:05 <shachaf> I've been doing model counting so I'd need to be careful with the extra variables. Maybe if there was a way to tag variables as "extra" so the solver doesn't count solutions with only extra variable changed.
23:18:16 <int-e> Oh I think that too... espcially when the symmetries are a form of domain-specific knowledge.
23:18:17 <shachaf> I feel like I should be using a format other than CNF.
23:18:42 <shachaf> Maybe a format where I can give variables names, so I can read them in the solver's debug output.
23:18:57 <shachaf> Er, by other than CNF I meant other than DIMACS.
23:19:04 <shachaf> (Right now my variable names are off-by-1 from the DIMACS variable names which is really annoying.)
23:19:50 <esowiki> [[Intcode/Interpreters]] M https://esolangs.org/w/index.php?diff=74145&oldid=68356 * PythonshellDebugwindow * (+38)
23:20:28 <int-e> Funny. There's a format with weighted clauses for Max-SAT.
23:21:07 <int-e> dimacs-based but using 'wcnf' instead of 'cnf' in the 'p' line.
23:21:23 -!- TheLie has quit (Remote host closed the connection).
23:21:54 -!- sprocklem has quit (Ping timeout: 260 seconds).
23:22:37 -!- sprocklem has joined.
23:27:20 <shachaf> The trouble is that I'm using other SAT solvers so I need to support DIMACS anyway.
23:27:37 <shachaf> So I just work around it with tools to pre- and post-process the datums I have.
23:31:39 -!- Lord_of_Life_ has joined.
23:31:53 -!- Lord_of_Life has quit (Ping timeout: 258 seconds).
23:34:11 <int-e> shachaf: well you could have a dimacs variant that has an extra line specifying the weights for the variables?
23:34:20 <esowiki> [[Taktentus]] M https://esolangs.org/w/index.php?diff=74146&oldid=50760 * PythonshellDebugwindow * (+67) /* External resources */ from categories import languages, implemented, y_2015
23:34:25 -!- Lord_of_Life_ has changed nick to Lord_of_Life.
23:34:37 <shachaf> I might just put these things in comments for my solver.
23:34:52 <shachaf> First I need to make my solver good enough that I don't need to use other solvers all the time.
←2020-06-19 2020-06-20 2020-06-21→ ↑2020 ↑all