00:29:02 -!- nchambers has changed nick to uplime.
00:33:05 -!- sprocklem has quit (Ping timeout: 248 seconds).
00:36:30 <shachaf> `mkx bin/5?//cmds=($1); for i in {1..5}; do \` "${cmds[$((RANDOM % ${#cmds[@]}))]}"; done
00:36:54 <HackEgo> 1074) <+kmc> my girlfriend served as an adult control subject for some behavioral research on children [...] <+kmc> she did live on psych studies for a year yeah <Jafet> Is there a control protocol where you don't use people who live off being sociology test subjects \ 323//323 is a quine in McCulloch's first machine. \ furryscript//FurryScrip
00:37:17 <shachaf> `sled bin/5?//s/$/ | sport/
00:37:24 <HackEgo> bin/5?//cmds=($1); for i in {1..5}; do \` "${cmds[$((RANDOM % ${#cmds[@]}))]}"; done | sport
00:37:30 <HackEgo> 1/2:quadrilateral//Don't you mean "tetrapleur"? \ 134) <fizzie> It's like mathematicians, where the next step up from "trivial" is "open research question". <fizzie> "Nope... No...This problem can't be done AT ALL. This one--maybe, but only with two yaks and a sherpa. ..." \ flower//flower. what IS a flower? \ cow//A cow is an animal best se
00:37:37 <HackEgo> 2/2:rved at minus zero degrees Celsius. \ page//The smallest floating-point number is known as pages. Fungot discovered it.
00:38:30 <shachaf> `sled bin/5?//s/1/{1:-w q}/
00:38:32 <HackEgo> bin/5?//cmds=(${1:-w q}); for i in {1..5}; do \` "${cmds[$((RANDOM % ${#cmds[@]}))]}"; done | sport
00:38:38 <HackEgo> 1/2:nnection//Nnections are measured in millibytes per siemens. \ 761) <oklopol> i don't get how people are afraid of parachute jumping but they routinely drive a car in fucking traffic \ codo//The codo button is the dodo's undo button. \ 428) <monqy> beautiful summer / fuck fuck fuck fuck fuck fuck fuck / fuck fuck fuck fuck fuck \ ist//An i
00:38:43 <HackEgo> 2/2:st is an incomplete list.
00:45:29 <moony> Should software written in a interpreted language (and as such ran by software) be called softerware?
00:47:43 <APic> Maybe once LLVM supports it.
00:47:49 <APic> Either as Front-End, or as Back-End,
00:48:10 <APic> LLVM is ingenious.
00:48:24 <APic> (But i still like GNU-Stuffs better because of religious Issues)
01:28:40 <moony> APic, LLVM has a bitcode interpreter already
01:28:54 <moony> so you can interpret your C code, if you really want to do that
01:31:27 -!- zzo38 has joined.
01:35:45 -!- imode has quit (Ping timeout: 264 seconds).
01:36:11 <HackEgo> 1/2:846) <Phantom_Hoover> it's weird hanging around people for whom the northernmost point in the world is nottingham \ just//Just is just a just adverb. \ qc//QC is Quantum Computing. \ homophone//Homophones are pairs of words that sound totally gay together. \ 435) <MDude> Tooth or Bear: Each turn, either take out your own tooth, or wrestle
01:36:38 <shachaf> Hmm, there's no reason to implement 5? this way, this is nonsense.
01:37:28 <shachaf> I think I had something fancier in mind before.
01:45:35 -!- variable has joined.
01:47:50 -!- variable has changed nick to function.
01:54:19 <zzo38> I have figured out the Hero Mesh file format some more now
02:02:56 <shachaf> Someone should invent a good name for choose.
02:26:27 -!- imode has joined.
02:51:01 -!- function has quit (Quit: /dev/null is full).
03:57:49 -!- doesthiswork has quit (Read error: Connection reset by peer).
03:57:51 -!- doesthiswork1 has joined.
04:37:38 <doesthiswork1> Have you ever seen how APL programmers write C? http://code.jsoftware.com/wiki/Essays/Incunabulum
05:18:00 -!- variable has joined.
05:50:25 <doesthiswork1> you can tell that they value conciseness very highly
05:55:48 -!- sprocklem has joined.
06:02:52 -!- augur has quit (Remote host closed the connection).
06:22:41 -!- Melvar has quit (Ping timeout: 256 seconds).
06:22:57 -!- idris-bot has quit (Ping timeout: 248 seconds).
06:25:12 -!- sleffy has quit (Ping timeout: 246 seconds).
06:27:07 -!- tromp_ has joined.
06:29:13 -!- tromp has quit (Ping timeout: 240 seconds).
06:36:57 -!- Melvar has joined.
06:44:31 -!- tromp_ has quit (Remote host closed the connection).
06:57:07 -!- doesthiswork1 has quit (Quit: Leaving.).
07:06:49 -!- imode has quit (Ping timeout: 260 seconds).
07:11:50 -!- sprocklem has quit (Read error: Connection reset by peer).
07:12:27 -!- sprocklem has joined.
07:15:13 -!- Melvar has quit (Ping timeout: 248 seconds).
07:30:37 -!- Melvar has joined.
08:14:08 -!- tromp has joined.
08:47:25 -!- xkapastel has quit (Quit: Connection closed for inactivity).
09:40:03 <esowiki> [[Meq]] https://esolangs.org/w/index.php?diff=54345&oldid=42646 * Oerjan * (+25) /* External resources */ Wayback
09:57:21 -!- rodgort has quit (Quit: Leaving).
10:02:23 -!- rodgort has joined.
10:21:32 -!- sebbu has quit (Quit: reboot).
10:29:35 -!- sebbu has joined.
10:47:21 -!- Naergon_ has quit (Ping timeout: 268 seconds).
10:47:21 -!- LKoen has joined.
11:15:10 -!- AnotherTest has joined.
11:33:05 -!- wob_jonas has joined.
11:37:03 -!- LKoen has quit (Remote host closed the connection).
11:41:48 <wob_jonas> fungot, prod HackEgo for me, he's asleep again
11:41:49 <fungot> wob_jonas: next-position is expecting something that is easy to make it
11:43:33 <HackEgo> cmds=(${1:-w q}); for i in {1..5}; do \` "${cmds[$((RANDOM % ${#cmds[@]}))]}"; done | sport
11:43:43 <fungot> wob_jonas: no worries.
11:44:22 <HackEgo> distort "${2:-/dev/stdin}" | spore "${1-1}"
11:44:42 <HackEgo> sport <n> divides its input into irc-sized pieces and displays the nth (default first). The pipe version of `1. See also spore.
11:44:42 <HackEgo> spore <n> stores its input in tmp/spout and displays the nth line (default first). For a version considering irc line lengths, see sport. See also `spam.
11:45:14 <HackEgo> line="${1-$(cat /hackenv/tmp/spline)}"; len="$(awk 'END{print NR}' /hackenv/tmp/spout)"; echo -n "$line/$len:"; sed -n "${line}{p;q}" /hackenv/tmp/spout; echo "$((line<len?line+1:1))" > /hackenv/tmp/spline
11:45:22 <HackEgo> cmd="${1-quote}"; \`^ 5 "$cmd"
11:45:44 <wob_jonas> nice. so I can just pipe into sport.
12:10:04 -!- idris-bot has joined.
12:20:35 <Lymia> Both BFJoust hills are dead?
12:21:52 -!- AnotherTest has quit (Ping timeout: 245 seconds).
12:42:49 -!- sprocklem has quit (Ping timeout: 260 seconds).
12:52:02 -!- LKoen has joined.
12:57:25 -!- spacial_being328 has joined.
12:57:26 -!- spacial_being328 has quit (Remote host closed the connection).
13:00:30 -!- doesthiswork has joined.
13:05:09 -!- doesthiswork has quit (Ping timeout: 265 seconds).
13:13:18 -!- sprocklem has joined.
13:27:24 <fizzie> Lymia: I've been working on migrating it to esolangs.org, but it's taken longer than expected, probably because I started overengineering some bits.
13:27:32 <fizzie> Lymia: Let me just bring up the zem.fi instance.
13:27:39 <fizzie> (It's down since a reboot.)
13:27:52 <Lymia> I thought this might be the perfect chance to work on that "#1 ever" ranking
13:27:54 <Lymia> Since everything's down
13:29:31 -!- zemhill has joined.
13:30:32 <fizzie> Just to give some indication as to how far I've gotten from a simple migration, I just finished writing a static website generator with Bazel macros.
13:30:46 <fizzie> It's probably lunchtime. Let me know if it doesn't work.
13:31:00 <fizzie> ...actually, I'm supposed to be getting alerts if it's down. Wonder what happened to those.
14:28:20 <int-e> !bfjoust going-out-on-a-limb <
14:28:52 <int-e> `grwp invalid character
14:35:46 <fizzie> int-e: No, but the command is !zjoust (or !ztest).
14:36:12 <fizzie> (The characters [a-zA-Z0-9_-] are valid.)
14:36:57 <fizzie> If I migrate it to esolangs.org, I may consider changing the command back to !bfjoust, since it doesn't look too likely the codu.org hill is coming back.
14:37:13 <int-e> !zjoust going-out-on-a-limb <
14:37:14 <zemhill> int-e.going-out-on-a-limb: points -46.00, score 0.00, rank 47/47
14:40:42 <fizzie> In retrospect, I should've tested what's wrong with the alert before I brought that back up.
14:41:22 <fizzie> The alert is based on probing the web endpoint with a POST request in the "test" mode, and checking that returns a 200 status code.
14:41:41 <fizzie> Maybe when it's down it still returns a 200 but with an error message payload.
15:00:58 -!- LKoen has quit (Remote host closed the connection).
15:06:16 -!- doesthiswork has joined.
15:19:35 -!- LKoen has joined.
15:45:20 -!- xkapastel has joined.
15:59:43 -!- rumble has joined.
16:03:02 -!- fractal has quit (*.net *.split).
16:03:03 -!- shachaf has quit (*.net *.split).
16:03:03 -!- grumble has quit (*.net *.split).
16:03:06 -!- trn has quit (*.net *.split).
16:03:06 -!- Soni has quit (*.net *.split).
16:03:19 -!- rumble has changed nick to grumble.
16:09:40 -!- Soni has joined.
16:09:40 -!- Soni has quit (Changing host).
16:09:40 -!- Soni has joined.
16:11:05 -!- Taneb has quit (Ping timeout: 256 seconds).
16:11:09 -!- sdhand has quit (Ping timeout: 265 seconds).
16:11:31 -!- fractal has joined.
16:12:03 -!- sdhand has joined.
16:12:26 -!- sdhand has changed nick to Guest38837.
16:12:59 -!- Taneb has joined.
16:13:43 -!- Guest38837 has quit (Changing host).
16:13:43 -!- Guest38837 has joined.
16:13:43 -!- Guest38837 has changed nick to sdhand.
16:17:54 -!- trn has joined.
16:18:58 -!- shachaf has joined.
16:30:45 -!- imode has joined.
16:33:22 -!- AnotherTest has joined.
17:52:40 -!- contrapumpkin has quit (Quit: My MacBook Pro has gone to sleep. ZZZzzz…).
18:13:00 -!- contrapumpkin has joined.
18:14:07 -!- sleffy has joined.
18:36:58 -!- sprocklem has quit (Ping timeout: 264 seconds).
18:45:33 -!- Phantom_Hoover has joined.
18:45:33 -!- Phantom_Hoover has quit (Changing host).
18:45:33 -!- Phantom_Hoover has joined.
18:46:27 -!- sprocklem has joined.
19:31:44 -!- sprocklem has quit (Ping timeout: 260 seconds).
19:43:12 -!- sleffy has quit (Ping timeout: 246 seconds).
19:58:20 -!- Naergon has joined.
20:03:47 -!- augur has joined.
20:17:49 -!- ais523 has joined.
20:39:12 -!- ais523 has quit (Remote host closed the connection).
20:39:24 -!- ais523 has joined.
20:44:13 -!- Slereah has quit (Ping timeout: 256 seconds).
20:46:20 -!- Guest6451 has joined.
20:57:08 <fungot> olsner: before ass'? the tuple approach is an alternative subculture in brisbane. or dark ambient.) emacs is honestly much better
20:59:21 <HackEgo> 451) <elliott> What does "life" actually mean, anyway; it seems to mean "this thing that's infinitely greater than all my actual hobbies that I do all the time because I rule"
21:00:27 <HackEgo> 1/2:hat//hatee-hatee-hatee-hooo \ 686) <itidus21> ok in other words, its a lot easier to reason about 2^43112609-1 apples by using the text "2^43112609-1" than it is to actually produce 2^43112609-1 apples \ 932) <oklopol> my university spam filter thinks it's okay for someone i have never met to discuss "usd 2,142,728.00 dollars" with me and "NE
21:00:31 <HackEgo> 2/2:ED MY HELP" etc. however, inviting me to a conference? such a nigerian thing to do. \ stereotype//A stereotype is a two-channel monotype. \ madness//madness lies thataway.
21:03:57 <shachaf> Cale: index notation is too good
21:13:57 <ais523> I came up with a really promising tarpit design recently and have already proved it TC in my head
21:14:02 <ais523> but I need to work on writing it all down
21:14:06 <ais523> here are the commands:
21:14:43 <ais523> (p initially points to the start of RAM, each element of RAM also initially points to the start of RAM, just like in Three Star Programmer)
21:14:50 <ais523> this is simpler than 3* and also a little easier to prove TC
21:15:22 <wob_jonas> ais523: on https://esolangs.org/wiki/RAM0 , I for one think that a reduction from 3SP is overcomplicating things. It seems obvious that you can directly emulate a pointer machine with writable heap with RAM0.
21:15:40 <ais523> wob_jonas: yes, there's a construction from Minsky Machines shown first
21:15:58 <wob_jonas> For that, you have to program it somewhat like you program a 6502, by keeping all the registers in memory at fixed (low) addresses.
21:15:59 <ais523> the 3* construction is for RAM0-minus-C
21:16:23 <wob_jonas> ais523: no, I mean no bignums either. either of those hurt my sense of computational efficiency.
21:16:39 <ais523> you clearly need at least one bignum
21:16:41 <wob_jonas> ais523: ah, it's for RAM0-minus-C. that's different... hmm
21:16:48 <ais523> because otherwise you can't access unbounded memory
21:16:53 <wob_jonas> ais523: sure, eventually you need arbitrarily large addresses
21:17:03 <ais523> not sure if you can do it with only one, you can almost certainly do it with two
21:17:30 -!- oerjan has joined.
21:17:35 <wob_jonas> but still, I prefer constructions where you can compile a pointer machine in such a way that the slowdown from the pointer model is only a factor of polylog of the execution time
21:17:40 <ais523> it's not quite obvious you can do it with two
21:18:11 <ais523> wob_jonas: I think RAM0-minus-CZ can implement cyclic tag in time proportional to the original cyclic tag program
21:18:21 <ais523> but presumably you want to implement something faster than cyclic tag
21:18:24 <wob_jonas> and here you can do it easily, you never have to do real arithmetic with bignums, you only have to add small offsets to the pointers to access fields of structures (or of algebraic datatypes or whatever you call them), plus one register that points to the end of the heap for new allocation
21:18:47 <ais523> ooh, making linked lists and the like
21:18:52 <ais523> that's clever, I was wondering how you did arithmetic
21:19:07 <ais523> not being able to decrement things makes arithmetic in RAM0 pretty hard
21:19:10 <wob_jonas> ais523: ok, if you want to remove commands from RAM0 that's different, I wasn't thinking of that
21:19:48 <wob_jonas> ais523: ah, I see. sorry, a pointer machine without call stack, and possibly even with read-only heap, is a very natural model of computation for me
21:19:58 <wob_jonas> even though in practice I do want fast fixed-size integer arithmetic
21:20:03 <lambdabot> ais523 said 1d 16h 41m 43s ago: re: Fractran with no deterministic execution order, I believe that's equivalent to Petri nets; apparently it took from 1939 to 1981 before it was discovered to be
21:20:03 <lambdabot> decidable whether a particular state could be reached, and it's known to be EXPSPACE-hard
21:20:06 <wob_jonas> but for theoretical models I don't care about that
21:20:22 <ais523> oerjan: tarpit I'm working on: I means "(*p)++", D means "p=*p", all bignums are valid memory addresses and valid memory values, memory is initially all-zeroes
21:20:32 <ais523> I believe this is TC (proved it in my head but haven't written it down yet)
21:20:55 <ais523> hmm, how does "p=*p+=n" parse in C?
21:21:17 <wob_jonas> And the pointer machine is what I use a standard for considering the computational model efficient. Ideal is polylog factor slowdown, the lower standard is polynomial slowdown, next lower is exponential, then double exponential.
21:21:35 <wob_jonas> ais523: I think that's how it parses in C, yes
21:21:40 <oerjan> ais523: well maybe reachability is harder than halting, then.
21:21:41 <shachaf> ais523: That's how it parses, but I think it's undefined behavior?
21:22:07 <ais523> oerjan: I think your proof is for worst-case Fractran
21:22:12 <ais523> whereas the problem considered there is best-case Fractran
21:22:32 <ais523> i.e. the difference between always getting a particular state, and getting a particular state with at least one evaluation order
21:23:18 <ais523> shachaf: hmm, it doesn't violate the same UB rule as "i=i++"
21:23:25 <ais523> but it might violate a different one
21:23:57 <ais523> I believe it's defined because the new value assigned to p depends on the old value of p
21:24:09 <ais523> and no other value is being both read or written, or written twice
21:24:42 <wob_jonas> ugh... that strange UB rule in C, I don't remember how it goes
21:24:58 <wob_jonas> ais523: do you assume that p isn't a pointer to p?
21:25:36 <wob_jonas> that can't easily happen in C anyway, because of strong type rules
21:25:46 -!- sleffy has joined.
21:26:10 <ais523> (although I changed *p to a[p] so that the data types work out)
21:27:19 <shachaf> Hm, maybe it's not undefined.
21:29:00 <ais523> wob_jonas: int a[]; int p; int n;
21:29:03 -!- sprocklem has joined.
21:29:48 <oerjan> if &p isn't something that can be put into the array, it should be fine.
21:30:03 <wob_jonas> ais523: and what are your instructions?
21:30:13 <ais523> wob_jonas: you can view it two ways
21:30:21 <ais523> either as two commands with no arguments
21:30:25 <wob_jonas> p=a[p]+=n sounds nice, but you probably need something else, something that sets n
21:30:33 <ais523> or in an RLE form, in which case we have one command, p=a[p]+=n, and n is its argument
21:30:45 <ais523> i.e. a and p are the data storage, and the program is just a list of values of n
21:30:50 <wob_jonas> I have made an abstract machine somewhat similar to that
21:31:10 <ais523> (this is comparable to 3*, where the instruction is a[a[a[n]]]++)
21:34:58 <esowiki> [[ByteByteJump]] M https://esolangs.org/w/index.php?diff=54346&oldid=20135 * Ais523 * (+19) +[[Category: OISC]]
21:35:20 <esowiki> [[MISC]] M https://esolangs.org/w/index.php?diff=54347&oldid=24993 * Ais523 * (+19) +[[Category: OISC]]
21:35:36 <esowiki> [[RSSB]] M https://esolangs.org/w/index.php?diff=54348&oldid=46149 * Ais523 * (+19) /* External resources */ +[[Category: OISC]]
21:35:57 <esowiki> [[Subskin]] M https://esolangs.org/w/index.php?diff=54349&oldid=46019 * Ais523 * (+19) +[[Category: OISC]]
21:36:13 <esowiki> [[Three Star Programmer]] M https://esolangs.org/w/index.php?diff=54350&oldid=53321 * Ais523 * (+18) +[[Category: OISC]]
21:36:30 <esowiki> [[TOGA computer]] M https://esolangs.org/w/index.php?diff=54351&oldid=45610 * Ais523 * (+18) +[[Category: OISC]]
21:36:42 <ais523> cat was being used inconsistently, it was on about half the OISCs
21:36:50 <ais523> so I added it to the other half (that are categorised at all)
21:37:37 <wob_jonas> My abstract machine uses self-modifying instructions, with the instructions stored in main memory. Each instruction has two arguments stored consecutively; and there's two memory-mapped registers, IP at 1 and a comparison flag at 2. unsigned a[9999] = {/*program*/}; for(;;) { unsigned s = a[a[1]]; a[1]++; unsigned d = a[a[1]]; a[1]++; a[2] = (a[s]
21:38:33 <ais523> shachaf: https://esolangs.org/wiki/Text
21:38:45 <wob_jonas> That's one where it would be convenient to just write the main loop as a[2] = (a[a[a[1]]] -= a[a[a[1]]]) < 0; but that would result in UB because it's essential for the program to write into the memory-mapped IP
21:39:11 <ais523> shachaf: so yes, it's an esolang in the sense of existing on the wiki, just not a very good one
21:39:14 <wob_jonas> Also, IIRC this model doesn't really need self-modification, because it has double-indirection in the instruction.
21:39:27 <ais523> it does, however, make for a decent benchmark for kolmogorov-complexity challenges on PPCG
21:39:48 <wob_jonas> Nor does it need wraparound, you could use int a[9999]; as the memory and write programs that avoid overflow.
21:40:05 <ais523> wob_jonas: is this some sort of self-modifying 3*?
21:40:20 <wob_jonas> ais523: no, it's much more convenient than that
21:40:34 <ais523> where does the a[a[a[]]] come from then?
21:40:52 <wob_jonas> it allows you to directly do arithmetic subtraction and comparison, as long as you keep a guard bit at the top of the machine word
21:42:32 <wob_jonas> ais523: the outer a[a[]] comes from wanting to allow indirection so you can avoid self-modifying code; the inner a[1] comes because I added a memory-mapped IP so that an instr with 2 as the first operand is effectively a conditional goto that writes the IP iff the comparison in the previous instruction was true
21:43:36 <wob_jonas> since this is an OISC, you need a way to goto. the more elegant way for that is something like subleq, which has a conditional goto built into the instruction semantics. the less elegant one is to have two special memory-mapped registers like here, one for IP and one for the comparison
21:43:46 <wob_jonas> and arrange it for somewhat compact code
21:44:37 <wob_jonas> This model sucks because I invented it way back in 2005, but I can't uninvent it now.
21:45:03 <ais523> it's like a really primitive ancestor of 3*
21:45:09 <ais523> more useful but less elegant
21:45:35 <wob_jonas> I'd rather compare it to the OISCs of the like of subleq and like five other similar ones
21:45:53 <shachaf> oerjan: please delete 5? twh
21:45:54 <HackEgo> 11456:2018-03-16 <shachäf> mkx bin/q//quote "$@" \ 9982:2016-12-15 <oerjän> ` mv bin/q quines/q2 \ 9981:2016-12-15 <oerjän> revert \ 9980:2016-12-15 <oerjän> ` q > quines/q2; rm bin/q \ 2691:2013-04-14 <Jafët> mv {,bin/}q && rm q.c \ 1771:2013-01-25 <Jafët> mv bin/q bin/\\? \ 1768:2013-01-25 <Jafët> echo -e \'#!/bin/sh\\ntopic=$(echo
21:46:04 <shachaf> and thene come up with a good name for choose
21:46:46 <wob_jonas> apparently everyone invents something like this, sometimes with just one instruction, sometimes two or three or four
21:46:48 <shachaf> and then tell me why people call vectors contravariant and covectors covariant twh
21:46:58 <ais523> wob_jonas: well this new language of mine ("I/D machine") is both very 3* like, and an OISC if you run-length-encode it
21:47:28 <HackEgo> Your omnidryad saddle principal swatty kind "Darth Ook" oerjan the shifty loud punster is a hazy expert in minor compaction. Also a Groadep who minces Roald Dahl. He could never render the word "amortized" so he put it here for connivance. His ark-nemesis is Noah. He twice punned without noticing it.
21:47:54 <HackEgo> oerjan//Your omnidryad saddle principal swatty kind "Darth Ook" oerjan the shifty loud hero is a hazy expert in minor compaction. Also a Groadep who minces Roald Dahl. He could never render the word "amortized" so he put it here for connivance. His ark-nemesis is Noah. He twice punned without noticing it.
21:47:55 <wob_jonas> ais523: in the non-RLE form, the commands would be { p=a[p]+=n; n=0; } and { n++; } right?
21:48:31 <ais523> wob_jonas: in the non-RLE form, the commands are { p = a[p]; } and { a[p]++; }
21:48:38 <ais523> no parameters anywhere
21:49:08 <wob_jonas> this isn't supposed to be self-modifying, right?
21:49:21 <ais523> it works in a similar way to 3*
21:49:26 <ais523> but it's not quite the same
21:49:42 <wob_jonas> yes, I think I can see the similarity
21:49:51 <ais523> in the RLE form there's just one command, { p = a[p] += n; }
21:50:10 <wob_jonas> and the commands are in a single for(;;) loop, right?
21:50:56 <wob_jonas> it's sort of like 3SP because you can never decrease the contents of memory cells
21:51:00 <wob_jonas> which really limits how you can use memory
21:51:25 <ais523> irreversible programming
21:51:37 <ais523> although I guess in the RLE form, there's no actual /reason/ to disallow negatiev n
21:51:54 <ais523> other than allowing the language to be converted back into two-command form
21:52:07 <ais523> my TC construction only uses nonnegative n though
21:52:08 <wob_jonas> but wouldn't that make it reversible?
21:52:38 <wob_jonas> I mean, it's still a tarpit that way, and I don't really see how you program it, probably you need some crazy construction like for 3SP
21:52:39 <ais523> it's not reversible in the sense of, say, BackFlip, because it's possible for two elements of a to have the same value
21:52:45 <ais523> so you can't reverse it because you don't know which it came from
21:53:03 <ais523> the construction is very similar to the TC construction for 3*, but simpler (and thus easier to prove)
21:55:09 <wob_jonas> Totally different topic. I was reading the story of Fingon and Maedhros in the Silmarillion. These two were best friends who got separated at the burning of the Teler ships, Maedhros being Feanor's eldest son and taking the ships, Fingon taking the hard route.
21:56:25 <wob_jonas> Then Maedhros got captured, and Morgoth made an example of him, chaining him on a tall mountain peak from one of his wrists, sort of Prometheus style, which apparently a first age elf can survive for a long time.
21:58:22 <wob_jonas> Then Fingon decided to both play a hero and show forgiveness for Feanor's sins in a long-shot attempt to reconcile the conflicts amongst the Noldor under the oath, and he decided to try to rescue Maedhros.
22:00:26 <wob_jonas> And the interesting part of the story is, since Morgoth has caused permanent magical darkness on his lands, Fingon had to find Maedhros by sound. So Fingon took his harp and started to sing, then listened to where Maedhros sang back from.
22:02:08 <wob_jonas> Which is another example showing that "harp" doesn't only mean these huge bulky modern orchestra instruments that you have to carry with a truck and tune for hours before the concert starts, but apparently also older portable stringed instruments.
22:04:35 <wob_jonas> Is there a trope on Tvtropes for when you find someone by their singing, as opposed to them just shouting or crying for help?
22:06:44 <wob_jonas> I've been watching Steven Universe, and the season 1 finale has an example of this.
22:07:19 -!- Phantom_Hoover has quit (*.net *.split).
22:07:19 -!- Taneb has quit (*.net *.split).
22:07:19 -!- xkapastel has quit (*.net *.split).
22:07:19 -!- sebbu has quit (*.net *.split).
22:07:22 -!- ineiros has quit (*.net *.split).
22:07:23 -!- clog has quit (*.net *.split).
22:07:52 -!- Phantom_Hoover has joined.
22:07:52 -!- Taneb has joined.
22:07:52 -!- xkapastel has joined.
22:07:52 -!- sebbu has joined.
22:07:52 -!- ineiros has joined.
22:07:52 -!- clog has joined.
22:08:14 <wob_jonas> A prisoner who has the opportunity to break out from her cell wants to find her best friend. They were both captured but separated to different cells, and she finds her by following her singing voice.
22:08:30 -!- xkapastel has quit (Max SendQ exceeded).
22:08:54 <wob_jonas> In that case only one of them is singing, not both like in Fingon's story.
22:08:59 <zzo38> I have access to All The Tropes wiki, but do not know what to look up, to find such things, unfortunately
22:10:05 -!- xkapastel has joined.
22:10:07 <wob_jonas> zzo38: probably a mention of Maedhros and Fingon and the Silmarillion and Saphire singing in a Steven Universe episode
22:10:57 -!- sdhand has quit (Ping timeout: 240 seconds).
22:10:59 -!- Naergon has quit (Ping timeout: 260 seconds).
22:12:30 -!- sdhand has joined.
22:12:53 -!- sdhand has changed nick to Guest25915.
22:13:31 <zzo38> I looked up [[Steven Universe]] and see nothing about that (but maybe I did not look clearly enough)
22:13:56 <wob_jonas> zzo38: yes, it doesn't seem to be mentioned in SPOILERS http://tvtropes.org/pmwiki/pmwiki.php/Recap/StevenUniverseS1E49JailBreak
22:14:37 <wob_jonas> let me start to search for Fingon and Maedhros instead
22:15:13 <wob_jonas> Oh, I forgot to mention it, but Fingon is the eldest son of Fingolfin. The story makes a bit more sense that way.
22:15:19 <Lymia> fizzie, PR to chainlance, btw
22:16:44 <wob_jonas> http://tvtropes.org/pmwiki/pmwiki.php/HoYay/TheLordOfTheRings makes a mention of the episode, but doesn't name a trope for finding someone by singing
22:17:13 <zzo38> What is the most number of moves that would ever be possible in a reachable chess position?
22:18:17 <wob_jonas> zzo38: hmm, I seem to remember someone has considered that problem, and probably solved it, or at least gave very good bounds
22:18:56 <wob_jonas> zzo38: a similar question: https://www.chess.com/forum/view/fun-with-chess/what-chess-position-has-the-most-number-of-possible-moves
22:19:21 <wob_jonas> asks for no promoted pawns, probably because extra queens could increase the number
22:19:59 <wob_jonas> zzo38: also https://www.reddit.com/r/chess/comments/5mazmo/what_is_the_legal_chess_position_where_white_has/
22:20:47 <zzo38> I though want to know the answer with promoted pawns.
22:21:30 <wob_jonas> the latter asks that, but I'm not sure it gives a definitive answer, doesn't seem like many people looked in that thread
22:22:03 <wob_jonas> zzo38: this seems more definitive: https://chessprogramming.wikispaces.com/Encoding%20Moves#MoveIndex
22:22:40 <wob_jonas> gives references to two or three other older disc'n threads
22:22:54 <wob_jonas> I'd look there if you want an answer. that considers promoted men too.
22:23:49 <zzo38> That last two looks same except the position of the king
22:24:40 <zzo38> However, it answers the question, so, that is good
22:24:43 <wob_jonas> do they get the same number? if so, I don't think that's a problem
22:24:50 <wob_jonas> is there a proof that it's optimal?
22:25:04 <wob_jonas> do they give a draft proof that it's optimal?
22:26:19 <wob_jonas> (I'm not asking if there exists a proof in the mathematical sense, there definitely exists an exponential time brute force one)
22:27:31 <ais523> :t \a -> (a (\b c -> b)) (\x y z -> (x z) (y z))
22:27:33 <lambdabot> ((p1 -> p2 -> p1) -> ((t1 -> t2 -> t3) -> (t1 -> t2) -> t1 -> t3) -> t4) -> t4
22:28:09 <ais523> :t let i = \a -> (a (\b c -> b)) (\x y z -> (x z) (y z)) in (i i)
22:28:11 <lambdabot> p -> (t1 -> t2 -> t3) -> (t1 -> t2) -> t1 -> t3
22:28:23 <ais523> hmm, that doesn't look right
22:28:39 <zzo38> I don't know if there is a shorter proof. I looked at those webpages and they don't mention such a thing
22:28:42 <ais523> :t \a -> a (\x y z -> (x z) (y z)) (\b c -> b)
22:28:44 <lambdabot> (((t1 -> t2 -> t3) -> (t1 -> t2) -> t1 -> t3) -> (p1 -> p2 -> p1) -> t4) -> t4
22:28:53 <ais523> :t let i = \a -> a (\x y z -> (x z) (y z)) (\b c -> b) in (i i)
22:28:55 <lambdabot> • Occurs check: cannot construct the infinite type:
22:29:05 <ais523> that is, oddly, more plausible
22:29:58 <ais523> although still not what I expected
22:30:14 <ais523> that said, I wouldn't expect Iota to work in a strongly typed language anyway
22:30:30 <fizzie> Lymia: I don't know if wrenchlance is the best tool, but it's a reasonable enough feature, so sure.
22:30:48 <ais523> fizzie: I've lost track of the various lances
22:30:52 <ais523> although I'm happy that they're being discussed
22:30:59 <wob_jonas> ais523: for an infinite type occurs check, the compiler has some freedom in what error message it gives exactly, so it needn't be what you expect, right?
22:31:04 <zemhill> ais523: I do !zjoust; see http://zem.fi/bfjoust/ for more information.
22:31:09 <fizzie> ais523: That's very reasonable, I have to look them up in the README too.
22:31:26 <wob_jonas> In fact I think even for a conflicting type constructors type error, the compiler has that freedom.
22:31:45 <shachaf> Someone should make an esolang based on abstract index notation for general functions rather than just linear ones.
22:31:46 <ais523> hmm, this nyuroki2 thing seems new
22:31:52 <Lymia> fizzie, what'd you use to achieve that?
22:32:35 <shachaf> It could be an interesting syntax. You label all the inputs and outputs to each function, and they get connected together if you use the same name.
22:32:56 <shachaf> Like some sort of dataflow graph? Maybe a language like this already exists.
22:33:10 <wob_jonas> shachaf: um, what do you mean by abstract index notation? not just de Bruin indexes to encode lambda calculus terms like Real fast Nora's hair salon 2: shear disaster download right?
22:33:43 <shachaf> wob_jonas: No, I mean https://en.wikipedia.org/wiki/Abstract_index_notation
22:33:51 <shachaf> Which is like a basis-free version of Einstein index notation.
22:34:18 <shachaf> `? real fast nora's hair salon 3: shear disaster download
22:34:20 <ais523> Lymia: have you documented your new winner on the wiki?
22:34:27 <HackEgo> Real Fast Nora's Hair Salon 3: Shear Disaster Download is the most readable functional programming language out there.
22:34:40 <Lymia> Nor the autogeneration shenanigans
22:36:39 <wob_jonas> correction, it's spelled De Bruijn index
22:37:10 <shachaf> Instead of writing f(x,y), you write f_i_j x^i y_j
22:37:33 <shachaf> Or x^i f_i_j y^j or something, it's commutative.
22:38:38 <ais523> Lymia: is the trail to beat margins? or is there some other reason for it?
22:38:44 <shachaf> Where the ^k represents the output
22:39:03 <shachaf> Function composition can be written like f_i^j g_j^k
22:39:43 <wob_jonas> shachaf: is that just naming all the intermediate results in expressions, like you have to do in prolog?
22:40:09 <shachaf> I haven't really thought it through.
22:40:12 <fizzie> Lymia: gearlance's threaded-code implementation has (generally, anecdotally) outperformed the fancier lances. It's got two "multi-program" binaries, gearlanced (which I use to run the hill, though the interface it has is terrible) and genelance. I guess for a really really big hill your mileage may vary.
22:40:17 <fizzie> Lymia: I've thought about running the "every distinct program in the repository history" tournament, assuming the O(n^2) for that is feasible, but never got around to it.
22:40:23 <shachaf> Maybe this syntax would make more sense for dealing with linear types.
22:40:59 <shachaf> Since a single value x^i^j isn't really the same as a pair of values x^i and y^j, it has more information.
22:42:00 <shachaf> (You can always go from x^i and y^j to z^i^j = x^i y^j, but not in the other direction in general.)
22:43:23 <Lymia> ais523, I've completely forgotten. :D
22:43:37 <ais523> this is why I document my winners soon after they win :D
22:43:55 <Lymia> fizzie, I'm getting ~11000 programs
22:44:04 <ais523> margins is weird anyway, it tries to win by winning on tape length 10 and drawing everything else
22:44:07 <wob_jonas> fizzie: are programs in repository history the ones that got on the leaderboard?
22:44:24 <wob_jonas> or ladder or whatever it's called noe
22:44:46 <shachaf> wob_jonas: This is all very clear with tensors but it's not quite as clear what it would mean in other contexts.
22:45:19 -!- boily has joined.
22:45:24 <fizzie> wob_jonas: It's everything submitted in non-test mode, because the operating logic on the zem.fi hill is that whenever you submit something, you always get on the hill (replacing the current worst program, or the previous version if using the same name).
22:46:02 <Lymia> The current version of Nyuroki's similar to margins, in that it makes bets on tape length, I guess. It wins tape lengths ~10-12, loses ~13-16 (by suicide), and wins ~17+. Against some bots, it starts losing again on very long tapes.
22:46:23 <fizzie> I think the codu.org hill had some special-casing so that you had to get a non-worst result in order to get permanently committed.
22:46:25 <shachaf> wob_jonas: Maybe string diagrams are a good way to think about it.
22:46:30 <Lymia> 11000 is after normalization, so.
22:46:52 <shachaf> A single object with two lines coming out of it can be more things than two separate objects with one line each.
22:47:05 <fizzie> Lymia: Where are you getting these programs from?
22:47:05 <wob_jonas> although if it's too many, you could filter them to exclude programs that only appeared in the bottom one or two ranks
22:47:31 <Lymia> fizzie, A merge of egobot and zemhill
22:48:03 <wob_jonas> whatever do you call positions on a ladder?
22:49:46 <boily> it can't be right if it's rung.
22:49:53 <wob_jonas> "rung" seems right from a dictionary, but I didn't even remember passively that that noun existed
22:50:18 <Lymia> ais523, looking at it, it's mostly a numbers adjustment
22:50:51 <fizzie> There's a lot of terminology in BF Joust. In the overengineered esolangs.org reimplementation, I'm using "duel" for a single match between two programs with a specific tape length and polarity; "joust" for the results of two programs with all 42 tape/polarity settings; "bout" for the results of one program against everyone else on the hill; and "tournament" the whole matrix. Not sure if those exactly
22:50:55 <wob_jonas> can they be called "step"? if not, does that work for the positions in a flight of stairs at least?
22:50:57 <fizzie> match standard terminology.
22:50:57 <ais523> it's nice that things like nyuroki can still do well
22:51:07 <fizzie> (And of course there's kettle/sieve.)
22:51:08 <ais523> wob_jonas: that works for stairs, also for stepladders
22:51:15 <ais523> I don't thnk it works for regular ladders
22:51:20 <ais523> fizzie: that terminology makes no sense :-D
22:51:28 <Lymia> It uses faster rushes when it detects a decoy conflict (rather than the small ones it used to), and I replaced the flag repair with an outright one-time probabilistic lock
22:51:39 <fizzie> Step's possibly reasonable for a metaphorical ladder though.
22:51:50 <ais523> Lymia: ooh, I'm glad probabilistic locks are catching on
22:51:52 <wob_jonas> what's the difference between a stepladder and a regular ladder?
22:52:00 <fizzie> ais523: Words are arbitrary.
22:52:15 <Lymia> IIRC, I made sure to time it exactly when a 2-cycle clear that skips all the decoys would clear.
22:52:24 <ais523> wob_jonas: it's easiest to tell from a photo, you might want to try an image search
22:52:33 <ais523> but a stepladder is basically like a very aspect-ratio-distorted set of stairs
22:53:02 <ais523> an arithmetic sequence of flat surfaces, highly offset vertically, slightly offset horizontally
22:53:10 <ais523> you can stand on a single step of a stepladder if you have good balance
22:53:38 <ais523> also, stepladders are nearly always V-shaped, having a "stand" at the back, so that you can place them in the open and all the steps will be at the right orientation
22:54:03 <ais523> regular ladders tend to be an arithmetic progression of small cylinders that it'd be very hard to place anything on, and work in a much wider range of orientations (including horizontally)
22:54:17 <wob_jonas> ais523: that latter, from an image search, a stepladder seems to be A-shaped so you don't have to lean the top to anything, it stands on four legs
22:54:18 <ais523> but you normally have to hold onto them at multiple locations to keep your balance
22:54:34 <wob_jonas> but that's two different differences
22:54:35 <fizzie> "First-time buyers: reaching for that first rung" (regarding the "property ladder", which is also sort of non-physical).
22:54:37 <ais523> wob_jonas: right, that's one of the properties that stepladders usually (always?) have
22:54:53 <ais523> fizzie: now I'm imagining a physical property ladder
22:55:01 <ais523> ideally a stepladder so that the houses don't fall off :-D
22:55:16 <wob_jonas> one property is wide vs narrow beams to step on, the other is back legs at the bottom
22:55:36 <wob_jonas> for getting onto cellars, we usually use ladders that have wide steps but don't have a back leg
22:56:15 <ais523> if a ladder is permanently fixed to a particular location, it's considered a ladder even if it has wide steps and not narrow rungs
22:56:22 <ais523> if it isn't, I'm not sure there's actually a term for it, that's rare here
22:58:13 <wob_jonas> there's still like three different kinds of these cellar laddres, (1) completely fixed to the building like stairs, might be called stairs, the difference being that the steps don't have a vertical back part, (2) simple ladder that has two legs at the bottom and is leant to the edge of the opening, and only friction at the bottom stops it from slid
22:59:11 <wob_jonas> (3) hinged or collapsible ladders that are fixed at the top, so the top holds all of the ladder's own weight and some of your weight, although you lean them on the floor for support when in use
23:02:47 <Lymia> The anti-defense loop is now a 7-cycle instead of 5-cycle too
23:03:48 <wob_jonas> Lymia: write all that in the source code as comments and nominate a new version so this useful info gets saved in a convenient place?
23:04:35 <Lymia> ais523, I think ([-+..--])*2 is more sound than it seems. Since it comes after an offset clear, there's no way a defense program's synched to it. So, the average flag value will drift over time, while the anti-defense loop tries (most) combinations of two of +-. over its execution.
23:04:48 <\oren\> ais523: a phyisical property ladder would be a tiered city like the movie version of minas tirith
23:04:54 <Lymia> Meaning if it was the flag, it should have already won by the time it observes two zeros.
23:05:43 <ais523> Lymia: yes, that sort of clear loop is fairly good as counter-defence
23:06:07 -!- AnotherTest has quit (Ping timeout: 268 seconds).
23:07:51 <Lymia> ... I do have an idea for a real improvement that isn't just numbers
23:08:21 <Lymia> A decoy clash is also some evidence that the enemy is doing a reverse decoy setup, thus, stealth3's decoy skipping is a good idea. :D
23:12:06 <Lymia> Really, I'm not sure it's worth a writeup for "Numbers were tuned, it now goes faster when it can" :p
23:13:47 <wob_jonas> wait, I think there are two more updates to Abstruse Goose
23:14:03 <wob_jonas> `aglist http://abstrusegoose.com/581
23:14:09 <HackEgo> aglist http://abstrusegoose.com/581: b_jonas shachaf
23:14:21 <shachaf> I thought you deleted that.
23:15:45 <wob_jonas> shachaf: I can't follow which ones I deleted, and I think I'm allowed to use deleted ones too, they're still greppable in the logs
23:16:10 <wob_jonas> shachaf: I think there's one I used but never even created, one of ehlist or bobadventureslist
23:16:35 <HackEgo> 11364:2018-02-28 <wob_jonäs> forget ehlist \ 7216:2016-03-14 <b_jonäs> learn ehlist is update notification for the Everyday Heroes webcomic. http://eheroes.smackjeeves.com/
23:16:44 <HackEgo> 11365:2018-02-28 <wob_jonäs> rm bin/ehlist \ 7215:2016-03-14 <b_jonäs> `` echo b_jonas >> bin/ehlist \ 7214:2016-03-14 <b_jonäs> makelist ehlist
23:17:13 <wob_jonas> I think I invoked bobadventureslist several times
23:17:23 <wob_jonas> it updates so rarely that it's worth
23:20:25 <shachaf> oerjan: whoa, you're editing https://en.wikipedia.org/wiki/Abstract_index_notation
23:28:58 <shachaf> oerjan: I just realized that abstract index notation is just a text syntax for string diagrams.
23:35:09 -!- sleffy has quit (Ping timeout: 256 seconds).
23:35:58 -!- augur has quit (Remote host closed the connection).
23:45:09 -!- augur has joined.
23:55:35 <\oren\> "thirteen percent of the U.S. population consumes pizza on any given day."
23:58:30 <\oren\> https://www.ars.usda.gov/ARSUserFiles/80400530/pdf/DBrief/11_consumption_of_pizza_0710.pdf