00:10:26 <esowiki> [[Talk:Eodermdrome]] https://esolangs.org/w/index.php?diff=59699&oldid=59686 * Oerjan * (+471) /* Computational class / -completeness */ Talking past each other?
00:12:45 <esowiki> [[Talk:Eodermdrome]] M https://esolangs.org/w/index.php?diff=59700&oldid=59699 * Oerjan * (+3) sub-
00:19:47 <b_jonas> https://www.perlmonks.com/?node_id=1008395 the game of life perl code is probably the obfuscated code I'm the most proud of
00:20:56 <b_jonas> it's not clear, there are a few other good ones I wrote
00:25:52 <b_jonas> others include https://www.perlmonks.com/?node_id=813859 catalan numbers with regexen, https://www.perlmonks.com/?node_id=863110 GF(128)
00:28:09 <b_jonas> hehe, this one is evil. I barely remembered it. https://www.perlmonks.com/?node_id=1032776
00:40:11 -!- b_jonas has quit (Quit: leaving).
00:58:03 -!- wumpus1 has quit (Quit: wumpus1).
01:19:29 -!- MDead has joined.
01:20:07 -!- MDude has quit (Ping timeout: 240 seconds).
01:20:14 -!- MDead has changed nick to MDude.
01:22:04 -!- oerjan has quit (Quit: Nite).
02:27:51 -!- xkapastel has quit (Quit: Connection closed for inactivity).
02:32:44 <shachaf> kmc: sin has the property that sin(x) ~ x for small x, which is pg
02:39:14 <shachaf> Also it doesn't have a "co" in front of its name, is more evidence that it's the fundamental one.
02:39:28 <shachaf> Which one is more fundamental, products or coproducts?
02:46:36 <j4cbo> who the f decided the “kilogram” was a base unit
02:47:36 <shachaf> What, you'd prefer to use the millikilogram?
02:53:28 <kmc> you used to see micromicrofarads on schematics
02:54:50 <shachaf> Since mass = energy = distance = time, what unit should we use to measure all of them?
03:13:41 -!- xkapastel has joined.
03:27:09 <esowiki> [[User:Cortex/test1]] N https://esolangs.org/w/index.php?oldid=59701 * Cortex * (+31) Redirected page to [[User:Cortex/test2]]
03:27:30 <esowiki> [[User:Cortex/test2]] N https://esolangs.org/w/index.php?oldid=59702 * Cortex * (+31) Redirected page to [[User:Cortex/test1]]
03:39:19 <esowiki> [[Golfuck]] https://esolangs.org/w/index.php?diff=59703&oldid=59698 * A * (+321)
03:41:44 <j4cbo> https://en.wikipedia.org/wiki/Natural_units
03:42:01 <shachaf> Right, that's why you get one unit for all of those.
03:42:04 <shachaf> The question is which one.
03:42:16 <shachaf> But I guess Planck length or whatever is as good as anything.
03:47:02 <esowiki> [[Golfuck]] https://esolangs.org/w/index.php?diff=59704&oldid=59703 * A * (-13) /* 99 bottles of beer program, where CR stands for the carriage return character */
03:49:09 <esowiki> [[Golfuck]] https://esolangs.org/w/index.php?diff=59705&oldid=59704 * A * (+189) /* Commands added(still extending) */
03:49:41 <esowiki> [[Golfuck]] https://esolangs.org/w/index.php?diff=59706&oldid=59705 * A * (-51) /* 99 bottles of beer program, where CR stands for the carriage return character */
03:53:07 <esowiki> [[Golfuck]] https://esolangs.org/w/index.php?diff=59707&oldid=59706 * A * (+64)
04:22:08 -!- FreeFull has quit (Ping timeout: 245 seconds).
04:25:28 -!- MDude has quit (Ping timeout: 245 seconds).
07:44:07 -!- imode has quit (Ping timeout: 240 seconds).
09:02:27 -!- xkapastel has quit (Quit: Connection closed for inactivity).
10:26:01 -!- Vorpal has quit (Quit: ZNC - http://znc.sourceforge.net).
11:05:49 <rain1> about data compression
11:06:05 <rain1> most compression formats are designed to compress data reasonably well and do it efficiently
11:06:49 <rain1> I was wondering if there's a (non lossy) compression technique which you can basically leave it arbitrarily long and it will compress better and better (of course this will have diminishing returns)
11:17:20 -!- arseniiv has joined.
11:41:08 -!- ais523 has joined.
11:41:24 <ais523> rain1: you need to distinguish between compression /formats/ and compression /encoders/
11:42:00 <ais523> any format will have some maximally dense representation of the input, but for suffiiciently complex formats (and sufficiently complex is not very complex), typical encoders won't be able to find it
11:42:16 <int-e> . o O ( Kolmogorov complexity )
11:42:18 <ais523> so what you're looking for is an encoder that puts in extra effort looking for particularly short representations of the input, but can be stopped at any time
11:43:28 <ais523> the extreme is when the compression format is TC, in which case it'll be within a linear transformation of any other format in efficiency (and within a constant-sized offset if it can read literals encoded using the entire alphabet of the character set with no escaping)
11:43:45 <ais523> that's what Kolmogorov complexity measures, i.e. the shortest possible program that generates the output you want
11:43:55 <ais523> but finding /that/ is likely to be impossible in the general case
11:44:24 -!- Lord_of_Life has quit (Ping timeout: 272 seconds).
11:45:52 <ais523> if the Church-Turing thesis turns out to be false, it could be possible
11:45:58 <int-e> Rice's theorem should give you an impossibility result...
11:46:08 <int-e> Oh I didn't consider that angle. True.
11:46:12 -!- Lord_of_Life has joined.
11:49:01 -!- b_jonas has joined.
11:50:37 <int-e> But the TC encoding gives you something recursively enumerable (the program+data that you provide is supposed to terminate with the decompressed data as output) so it does fit into rain1's description... you can enumerate basically forever, finding better and better encodings along the way, until eventually you reach a best one. You never know when to stop, of course.
11:51:18 <int-e> And yes, it's completely infeasible.
11:51:54 <b_jonas> yeah, but you don't really need anything near TC to meet the distinction. Even when you're compressing large real world images to PNG, you have a choice to compress slower but get a smaller file, or compress faster but get a larger file. I've experienced that all too much at my previous job, when working with images.
11:52:24 -!- ais523 has quit (Remote host closed the connection).
11:53:01 <int-e> Oh yes, brotli was a good demonstration of that phenomenon.
11:53:05 <b_jonas> The same happens when you're compressing stuff with a sane modern compressor like 7z -- not really when you're compressing with the ancient gzip format, we have encoders that are good and as fast as you go with gzip.
11:53:59 <b_jonas> you use 7z a -mx=3 foo.7z to compress fast, or 7z a -mx=5 foo.7z to compress normally (-mx=5 is actually the default for 7z output), or 7z a -mx=0 to not compress at all.
11:54:06 <int-e> (Hmm, or which was the zlib compatible compressor that traded compression speed for size? I may be mixing those up.)
11:54:30 <b_jonas> ok, admittedly with gzip you still have an option to not compress at all, and that is faster
11:54:50 <b_jonas> int-e: nope, you get 7z which compresses gzip both slightly better and slightly faster
11:55:17 <b_jonas> int-e: the problem with gzip is that it's really old, the tradeoff built into it is that you could compress worse if you have very little RAM, but these days nobody has that little RAM
11:55:35 <int-e> (the other Swiss bakery product)
11:56:29 <int-e> "Under default settings, the output of Zopfli is typically 3–8% smaller than zlib's maximum compression, but takes around 80 times longer."
11:57:50 <int-e> (I believe PNG was the main target, as you basically wrote.)
11:59:05 <int-e> Ah I had not heard of Guetzli.
12:00:57 <int-e> Hmm. What does "little RAM" mean nowadays... a 256MB VPS?
12:01:56 <int-e> (up from, I guess, less than 64kb when zlib was developed)
12:08:06 <int-e> I've found 128MB VPS offers, and talk about 64MB VPS offers but no live specimens...
12:12:44 <b_jonas> int-e: PNG is a bit more complicated, it has both a zlib layer, and a transformation layer before it, but suret
12:16:46 -!- Lord_of_Life has quit (Ping timeout: 246 seconds).
12:20:39 -!- Lord_of_Life has joined.
13:07:11 -!- atslash has quit (Read error: Connection reset by peer).
13:07:19 -!- atslash has joined.
13:08:38 -!- FreeFull has joined.
13:08:54 -!- FreeFull has quit (Client Quit).
13:08:54 -!- FreeFull_ has joined.
13:08:57 -!- FreeFull_ has quit (Client Quit).
13:09:18 -!- FreeFull has joined.
13:54:31 <int-e> `learn The password of the month is eigthy-three characters long but contains no special characters except for a hyphen.
13:54:33 <HackEso> Relearned 'password': The password of the month is eigthy-three characters long but contains no special characters except for a hyphen.
14:05:47 <b_jonas> [ 83{.'eigthy-three characters long but contains no special characters except for a hyphen.0123456789'
14:05:48 <j-bot> b_jonas: eigthy-three characters long but contains no special characters except for a hyphen
14:13:32 <b_jonas> `bobadventureslist http://bobadventures.comicgenesis.com/d/20190203.html
14:13:33 <HackEso> bobadventureslist http://bobadventures.comicgenesis.com/d/20190203.html: b_jonas
14:29:27 -!- atslash has quit (Ping timeout: 240 seconds).
14:30:06 -!- atslash has joined.
14:32:38 -!- xkapastel has joined.
14:34:45 -!- atslash has quit (Ping timeout: 245 seconds).
14:35:11 -!- atslash has joined.
14:52:02 -!- MDude has joined.
15:31:42 -!- b_jonas has quit (Quit: leaving).
15:42:31 <myname> what would you consider an integral part of df-likes
16:09:10 -!- AnotherTest has joined.
16:16:31 -!- Mediphira has joined.
16:16:37 -!- Mediphira has left.
16:24:27 <int-e> df = swarf fortress?
16:25:12 <HackEso> /srv/hackeso-code/multibot_cmds/lib/limits: line 5: exec: : not found
16:25:21 <HackEso> Filesystem 1K-blocks Used Available Use% Mounted on \ - 0 0 0 - /
16:29:24 <myname> what comes to my mind is high level of simulation and a macro-managing spectator
16:29:34 <myname> but i do find that pretty vague
16:29:51 <myname> whereas i do have quite some points for roguelikes
17:46:44 -!- imode has joined.
17:53:16 -!- ais523 has joined.
18:02:55 <fizzie> Heh, that's a little odd.
18:03:20 <fizzie> Per df, on HackEso there's nothing mounted at /, just in specific subdirectories.
18:03:56 <fizzie> Which probably just follows from /proc/mounts. But it's still a bit odd.
18:04:24 <int-e> `` echo $(cut -d\ -f2 /proc/mounts)
18:04:25 <HackEso> /bin /usr /dev /lib /sbin /lib64 /hackenv /hackenv/.hg /etc/alternatives /srv/hackeso-code/multibot_cmds/lib /tmp /proc /sys
18:04:50 <HackEso> Filesystem 1K-blocks Used Available Use% Mounted on \ none 24733776 10662056 12802216 46% /bin
18:05:25 <fizzie> That's reflecting the filesystem where it's actually coming from.
18:05:38 <HackEso> bin \ dev \ etc \ hackenv \ lib \ lib64 \ proc \ sbin \ srv \ sys \ tmp \ usr
18:05:43 <int-e> he I didn't expect /etc/alternatives
18:05:57 <ais523> I didn't expect it to be a /mount point/
18:06:00 <fizzie> We call umlbox with --base-mounts --mount lib --translate-write /hackenv ... --translate /hackenv/.hg ... --cwd /hackenv.
18:06:06 <ais523> but presumably that makes it writable when most of /etc is read-only?
18:06:13 <fizzie> No, it's read-only still.
18:06:23 <ais523> don't mount points have to be over existent directories, anyway?
18:06:26 <ais523> if so you'd need /something/ at /
18:06:26 <fizzie> I think it's mounted because some commands in /usr go through symlink in /etc/alternatives.
18:06:31 <int-e> ais523: yes. that's what I meant. but it makes sense if you aim to borrow as much as possible from a surrounding system
18:06:32 <ais523> or can you mount on top of a nonexistent directory?
18:06:46 <ais523> `` update-alternatives --config editor
18:06:47 <HackEso> update-alternatives: error: no alternatives for editor
18:07:15 <ais523> HackEso has no installed editors?
18:07:17 <fizzie> Full conents of etc: https://hack.esolangs.org/tmp/paste/paste.24182
18:08:39 <fizzie> As for mounts, yes, it needs to be into an existing directory, umlbox creates the target directory (recursively) when it mounts somthing.
18:08:50 <fizzie> There is a root file system, apparently it's just too special to show up in /proc/mounts.
18:09:18 <fizzie> (It's an initrd read from a cpio archive on kernel boot.)
18:09:47 <fizzie> Well, it makes some sense, it's not like there's really a device node for that.
18:09:52 <int-e> ais523: it's a bit weird... if you have a chroot like container, / may not be a mount point according to /proc/mounts.
18:10:11 <ais523> oh, because the root filesystem is /below/ /
18:10:14 <ais523> and thus you can't see the mount point
18:10:37 <fizzie> This is different, though: the command isn't running in a chroot.
18:10:49 <int-e> but it's a container?
18:11:00 <fizzie> No, I mean, the program is running under the UML kernel.
18:11:10 <fizzie> From that perspective, there are no containers involved, there's nothing below /.
18:11:19 <ais523> now I'm reminded of when you have a shell running in a directory all of whose names have been deleted
18:11:22 <ais523> the shell can get rather confused
18:11:51 <ais523> (actually, simply deleting the name for the directory that the shell knows could be enough)
18:12:00 <int-e> So UML is lying about its root file system. Yay :)
18:12:02 <fizzie> The whole VFS abstraction is that of the UML kernel, and it starts from / which is an initrd, on top of which have been mounted stuff from the host system under the special "hostfs" thing.
18:12:35 <fizzie> I don't know if that's how initrd always works. On normal systems / usually gets pivoted into some real filesystem on a block device.
18:13:54 <fizzie> So you rarely get to actually experience the initrd environment.
18:15:20 <int-e> I had that experience recently... but no working keyboard, so I didn't get the chance to actually explore...
18:16:41 <int-e> (I later realized that I do still have a PS/2 keyboard which would have worked... but by then I had resolved my problem, which was udev not initializing the host controller or something similarly desastrous.)
18:17:11 <int-e> (no host controller -> no USB, no SATA, no root device... no system boot.)
18:18:21 -!- copumpkin has joined.
18:21:10 <fizzie> On the container (using systemd-nspawn) where the UML kernel runs, seems like there's an entry in /proc/mounts that says /dev/vda2 is mounted as /, even though that's really just the /var/lib/machines/dysnomia directory of that filesystem. But it's a separate mount namespace, which I think is a little different from a chroot.
18:21:34 <ais523> mount namespaces are more thorough than chroots
19:34:37 -!- b_jonas has joined.
19:51:50 -!- LKoen has joined.
19:54:19 <esowiki> [[Special:Log/newusers]] create * Sollyucko * New user account
20:22:27 -!- ais523 has quit (Quit: quit).
20:40:20 <kmc> can anyone recommend an OSS project I might enjoy contributing to that has a predominantly non-US user/contributor/maintainerbase?
20:40:39 -!- oerjan has joined.
20:44:20 <oerjan> <j4cbo> who the f decided the “kilogram” was a base unit <-- iirc it was done because if you use the gram, a lot of the derived units get very inconvenient size scales - so it was either adding a kilo- to that one, or other prefixes to a lot of others.
20:44:54 <pikhq_> Or using the centimeter as a base unit.
20:45:47 <pikhq_> Though honestly many of those derived units were inconvenient.
20:45:53 <b_jonas> they could have given a new name to the kilogram. like, call it a "ton" or a "pound" or an "ounce" or something.
20:46:17 <b_jonas> or a "euro", that word was still free back then, they'd have priority
20:46:23 <kmc> we used cgs in undergrad E&M
20:46:28 <kmc> it's a little wacky
20:46:39 <b_jonas> obviously then we'd end up having to have a currency with a bad name, like "european union kilogram" or something
20:46:44 <kmc> the units don't directly correspond to SI because the physical constants are folded in differently
20:46:51 <pikhq_> Bit tricky though, since the derived units only started getting used much by the time the kilogram was already well-established.
20:46:54 <kmc> kilogrexit
20:47:05 <kmc> bring back micromicrofarads
20:47:55 <b_jonas> kmc: yeah, I know. they have units with square root of meter times square root of second in them
20:48:15 <kmc> there's an important measure in EE which is like dB / sqrt(Hz)
20:48:31 <kmc> or is it V / sqrt(Hz)
20:49:29 <j4cbo> “ohms per square” is a good one
20:51:56 <b_jonas> but CGS is internally consistent, so it's at least better than measuring blood pressure in micrometers of mercury, car speed in kilometers per hour, electricity bill in kilowatt hour, airplane height in feet, airplane distance in miles,
20:53:05 <j4cbo> sometimes aviation uses statute miles
20:53:35 <j4cbo> and sometimes it uses feet
20:54:02 <b_jonas> and sometimes meters or kilometers
20:55:21 <kmc> blood hormone levels are measured in units like pg/mL and ng/dL
20:55:21 <b_jonas> and then we have food energy in kilocalories, astronomical distances within the solar system in astronomical units, outside the solar system in light years,
20:55:49 <kmc> i used to think kWh was stupid, and especially kWh/day, but they are very convenient in practice
20:55:55 <kmc> same with Wh vs J
20:56:35 <b_jonas> oh, and the phone bill counts call lengths in minutes
20:56:38 <j4cbo> kWh/day is nice because it implies that it’s an average instead of instantaneous
20:57:20 <zzo38> kmc: I don't know what kind of project you would enjoy to contributing to. And by non-US what country you may mean? Some projects (such as my own) currently have only myself as contribution/maintenance and I am Canadian. But I don't know if that is what you want or not. Nor am I sure how to find out.
20:57:33 <kmc> i'm thinking larger projects
20:57:35 <kmc> j4cbo: yeah
20:58:44 <zzo38> I don't know much of larger projects about if it is predominantly non-US or not. (Unless you can read/write in languages other than English, in which case you might more easily find some)
21:00:27 <zzo38> Words "ton", "pound", "ounce" mean different units than kilogram. However, there is another word for kilogram is "grave"
21:01:10 <kmc> but a metric ton is the same as a Mg
21:01:32 <zzo38> kmc: Yes, although I don't like the term "metric ton" or "tonne". I prefer to call that a "megagram"
21:01:41 <kmc> you know what unit's really annoying? "mil" i.e. 1/1000 in
21:01:53 <kmc> it's used in electronics and locksmithing and some other fields
21:02:02 <kmc> but i prefer "thou" to avoid confusiong with mm
21:03:16 <j4cbo> yeah that’s a weird one
21:03:39 <j4cbo> 6 mil trace, 6 mil plastic sheeting, 6 thou tolerance
21:04:12 <j4cbo> also “tenth” apparently means 0.0001in
21:04:22 <zzo38> (It should be obvious to know what "megagram" means even if you have not seen it before. I used "megagram" before I have seen it used, too. This is contrary to "tonne" which I don't like.)
21:04:53 <j4cbo> which i guess puts it in the same group as “fifth” and “eighth” of fractional words that have a specific meaning c.c
21:05:14 <zzo38> Why do you care if the OSS project is predominantly non-US?
21:05:35 <kmc> long story
21:05:41 <kmc> so never mind that
21:49:30 <imode> cellular automata are not a good model for general turing complete computation because they require infinite space. network automata/communicating automata are, however, because they only require unbounded queues.
21:51:08 <b_jonas> kmc: yeah, I've heard of those US units.
21:52:04 <kmc> imode: what's the important difference? you can easily emulate a TM with an unbounded queue
21:52:07 <kmc> (or two stacks, but not one)
21:52:25 <kmc> at any point in time only a finite number of TM / CA cells are non-blank
21:52:31 <kmc> just as only a finite number of elements exist in the queue
21:52:50 <kmc> how do network automata work
21:55:01 <shachaf> You could have a rule that would set all CA cells to something non-blank. But it'd still be a finite amount of information.
21:56:56 <imode> kmc: that's my point. imagine you were to simulate a cellular automata with infinite space. you'd need to start at the "top left" of the world (assuming a 2D CA), and you'd need to traverse to the "bottom right", but in order for you to encode a turing machine within a CA, it needs to have the ability to propagate to the bottom-right, right?
21:57:21 <imode> well, blank cells have the potential to become non-blank cells, which means we need to traverse every cell naively.
21:57:42 <imode> so that means a single update, again naively, of a CA with infinite space... never completes.
21:58:03 <kmc> i mean that's the most naive algorithm
21:58:14 <shachaf> There's no top left of an infinite grid, so you can't start there
21:58:26 <kmc> but you can easily keep track of a bound on the non-blank region of each timestep
21:58:35 <kmc> and expand it by the window size on each iteration
21:58:46 <zzo38> If you make it infinite only in one direction then there can be one top left
21:58:50 <imode> shachaf: I take the turing machine model. turing originally specified that his tape was left-bounded, right-unbounded.
21:58:59 <imode> same applies to a theoretical turing-complete CA
21:59:14 <shachaf> Maybe I missed the first half of the conversation
21:59:23 <imode> kmc: right. you could totally do that. but that implies some extra information than _just_ the things you need to simulate the CA.
21:59:45 <kmc> well if you're saying that queue automata are slightly easier to implement than TMs / CAs
21:59:48 <kmc> then I guess I agree
21:59:51 <kmc> but it doesn't seem very important
21:59:54 <imode> now you need to keep track of how much of that space you realistically need to cover.
22:00:10 <kmc> shachaf: were you trying to explain HashLife sometime?
22:00:22 <kmc> i forgot how it works
22:00:34 <oerjan> . o O ( he made a hash out of it )
22:01:02 <imode> network automata are essentially CAs (if you see CAs as networks of finite state machines that can read neighboring people's states), but the difference is each cell has a queue (or a pair of queues) sitting between it and its neighboring cells.
22:01:15 <kmc> smoke hashlife erryday
22:01:23 <shachaf> I won't explain it on this scow phone keyboard, though
22:01:28 <imode> we can say that the distance (or queue length) needs to be unbounded to simulate a TM, so we can make due with a finite amount of cells.
22:03:07 <imode> network automata as informally defined above represent a generalization of both queue automata and cellular automata: you can imagine two sliders for queue length and number/topology of cells, and depending on the slider position (say, queue length 1, lattice topology, infinite cells) you either get CAs, or regular queue automata (unbounded queue, single queue, single node).
22:04:03 <imode> regular queue automata with just a single queue and a single "processing node"/FSM/cell/whatever hooked up to it are an extreme case. FSMs linked in a lattice or some other topology, i.e a CA, represent another extreme case.
22:05:59 -!- Remavas has joined.
22:06:57 -!- Remavas has quit (Remote host closed the connection).
22:07:24 -!- Remavas has joined.
22:08:01 -!- Remavas has quit (Remote host closed the connection).
22:09:34 -!- Remavas has joined.
22:17:37 -!- Remavas has quit (Read error: Connection reset by peer).
22:18:01 -!- Remavas has joined.
22:31:18 -!- AnotherTest has quit (Ping timeout: 245 seconds).
22:33:25 -!- moei has quit (Quit: Leaving...).
22:39:14 -!- Phantom_Hoover has joined.
22:39:14 -!- Phantom_Hoover has quit (Changing host).
22:39:14 -!- Phantom_Hoover has joined.
22:46:53 <shachaf> kmc: Hashlife is easier to understand with a 1D automaton, I think.
22:48:20 -!- Remavas has quit (Quit: Leaving).
22:58:12 -!- 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.”).
22:59:38 <HackEso> The password of the month is eigthy-three characters long but contains no special characters except for a hyphen.
22:59:45 <kmc> shachaf: oh?
23:11:00 <b_jonas> that wasn't me this time, I swear
23:11:13 <b_jonas> I set last month's password, not this month's
23:18:59 <j-bot> b_jonas: _0.877439j0.744862 _0.877439j_0.744862 0.754878
23:22:21 -!- b_jonas has quit (Quit: Reconnecting).
23:22:22 <j-bot> b_jonas: 1.32472 _0.662359j0.56228 _0.662359j_0.56228
23:22:28 -!- b_jonas_ has joined.
23:23:04 -!- b_jonas_ has changed nick to b_jonas.
23:23:10 <j-bot> b_jonas: 1.32472 _0.662359j0.56228 _0.662359j_0.56228
23:25:23 -!- arseniiv_ has joined.
23:25:40 -!- arseniiv has quit (Read error: Connection reset by peer).
23:27:42 <shachaf> kmc: So say you have a 1D automaton, where every tick, every cell updates based on its state and its two neighbors.
23:28:37 <shachaf> You can store a chunk of size 2^n as a complete binary tree, where the left and right children point to chunks of size 2^(n-1)
23:28:52 <shachaf> And you just have 1 and 0 cells for the 2^0 case.
23:30:31 <shachaf> Hashlife calls that a "macro cell".
23:31:17 <shachaf> These things are immutable, so you can make it a graph instead of a tree with sharing. That's the "hash" in "hashlife".
23:32:12 <shachaf> It's called a "macro cell" because it's a bit like a big cell. In particular, it has two neighbors, and its state after one tick depends only on its own state and the state of its two neighbors.
23:33:56 <shachaf> But the nice thing about macro cells is that after a small number of ticks, most of the internal cells don't depend on the state of the neighboring cells, because information can only propagate at the "speed of light".
23:34:49 <shachaf> So you can compute part of the future of a macro cell in isolation, regardless of its environment. (This is useful because macro cells are shared, so they might exist in multiple environments.)
23:35:08 <shachaf> Does that part make sense?
23:39:17 -!- Phantom_Hoover has quit (Remote host closed the connection).
23:43:49 <HackEso> 11708:2019-02-03 <int-̈e> learn The password of the month is eigthy-three characters long but contains no special characters except for a hyphen. \ 11684:2019-01-01 <b_jonäs> learn The password of the month is "overreachtorridbittenmandible". \ 11653:2018-12-01 <int-̈e> learn The password of the month is "SCALNATUAS". \ 11646:2018-11-01 <int-̈e> learn The password of the month is most forgettable. \ 11622:2018-10-02 <oerjän> learn The password of th
23:45:53 -!- Lord_of_Life has quit (Ping timeout: 245 seconds).
23:48:08 <oerjan> int-e: *you should be scared*
23:48:31 <oerjan> (although i fear you haven't even noticed why)
23:48:42 -!- Lord_of_Life has joined.
23:48:52 <shachaf> I haven't noticed why either.
23:48:57 <shachaf> The "." isn't part of the password, is it?
23:49:03 <kmc> shachaf: ah so it's hash as in hash consing
23:49:13 <kmc> and lazy eval
23:49:30 <shachaf> Well, there's no laziness so far.
23:49:31 <kmc> at least the idea of in place updates for data that is potentially shared
23:49:50 <zzo38> Some more possible variant for Scrabble can be alternate geometry, such as hex or cylinder. Some more possibilities include other kind of multipliers on squares. In addition to letter multipliers and word multipliers, can also have turn multipliers. Also, the multipliers could also be negative and/or fractions. A variation I recommend is memoryless wildcards.
23:49:50 <kmc> well, go on
23:50:07 <zzo38> Do you like memoryless wildcards variant?
23:50:16 <shachaf> So you can compute some extra data for these nodes and easily compute it for the entire graph.
23:50:28 <shachaf> For example you can put a count on each node which is the sum of the counts of the left and right nodes.
23:50:41 <shachaf> And even if you have 2^100 cells or something you can compute it pretty quickly.
23:50:53 <oerjan> shachaf: well the . isn't what i'm twitching at, anyway
23:51:55 <fizzie> Maybe that's a clever trick to mitigate against dictionary attacks.
23:52:11 <kmc> shachaf: count of what?
23:52:21 <kmc> shachaf: is there a good pseudocode of this algorithm?
23:52:31 <shachaf> kmc: The number of active cells, sorry.
23:52:40 <kmc> and why does that help?
23:53:02 <shachaf> I guess count doesn't help but the point is that you can annotate these things with extra data based on their children.
23:53:14 <b_jonas> zzo38: and another variation is that wildcards can be reclaimed if you spend a turn to replace it with the same letter tile from your hand. plus there's a scrabble-like game that requires a different hardware,
23:53:22 <shachaf> Not sure about pseudocode. I think it's best explained by drawing.
23:53:58 <b_jonas> where you can stack a tile over another tile, only the letters written on the top tile on each square must valid words in every segment, and the scoring is changed.
23:54:03 <shachaf> int-e: next month make one of these hth https://news.ycombinator.com/item?id=19003644
23:54:17 <zzo38> b_jonas: Yes, I have read about the variation with reclaiming. You can even combine that with memoryless wildcards
23:54:57 <shachaf> kmc: So if you have a macro-cell, say of size 8, [abcdefgh]
23:54:59 <kmc> anyone here played bananagrams?
23:55:08 <kmc> it's like scrabble but with no board and also not very much like scrabble
23:55:16 <kmc> I think writing an AI for it would be pretty hard. I've thought about it some
23:55:30 <shachaf> You can think of uncertainty coming in from the sides tick by tick:
23:55:53 <b_jonas> zzo38: wait, which kind of memoryless wildcard? the one where you can count the wildcard tile as any letter of your choice after each move you make, or the one where in addition you can make it count as different letters horizontally and vertically?
23:56:13 <b_jonas> zzo38: but yes, reclaiming the joker works better with memoryless joker
23:57:39 <zzo38> b_jonas: The rule I was thinking of (I made up, although others may have made it up independently) is: It has to represent the same letter horizontally and vertically, but you can change what letter it is during your turn as long as it still forms a valid word. If you extend the word, the same letter must be valid in both the old and new words.
23:59:55 <b_jonas> zzo38: oh, that's even more restricted than what I thought of