« first day (39 days earlier)      last day (538 days later) » 

12:00 AM
I see why prelude is a problem
 
do you see where the prelude answer is produced?
 
Yeah
in the python
wait hold up
 
It's this bit: 46(8+9+9+9+9+=!)
 
ok
Thank god prelude has runtime output
 
this kind of needs to exist as far to the right as possible. and your brainflak code make it no longer on the lingest line
 
12:06 AM
ok
Do programs need to terminate?
 
yeah. crashing is a no go. :P
 
the debug menu in tio is super helpful for prelude
it can't have vertically aligned parentheses
 
why?
 
but the debug will tell you which columns are broken... or maybe that's just in the regular output
oh yeah. that's regular output
 
12:14 AM
Whats the deal with brackets lining up?
I got the single line to work in prelude
 
it like reads all lines simultaneously or somthing
not totally sure.
 
ok so just add spaces until it doesn't error?
 
I just know that it can't have more than 1 parenthesis per column
basically
it's a fiddly one to debug
 
ok done
 
somtimes adding a space causes more misalignments.
oh? cool
 
12:16 AM
just added a space and it all worked out
 
beautiful.
 
I'm sure I'm going to have to come back to this
 
yeah, incident will be a pain i think.
I'll check back in tomorow.
 
Ok
thansk
Currently broken:
thutu
cubix
Unknown status
Deadfish~
Incident
SNUSP
Reng
The fact that cubix is broken deeply concerns me
 
1:07 AM
I challenge someone to add a Lisp-like language into the polyglot :P
 
@Qwerp-Derp it'd be fairly easy if we could find a lisp-alike with # comments
the problem is getting past the first few lines
@WheatWizard cubix is another language that breaks on basically every submission
 
Oh ok
its a size thing right?
I have not programmed in cubix alot
 
we're using the "capsule" technique (previously used for Hexagony, but we managed to give that a fixed location in the end); it's a bit of code that you move around the polyglot to get it into the position you need
basically you put the code into a cubix debugger, run it a bit until the IP is in some relatively harmless location
 
Ok might not be that bad then
 
then put the capsule there
 
1:26 AM
I think I'm getting thutu
 
1:44 AM
@ais523 I'm a little confused as to how the current Thutu code is intended to work.
 
almost all of it does nothing
 
let me figure out the relevant bits
 
thanks
I think I found most of it
 
OK, it's the /=1/24=x
 
1:46 AM
/=1/24=x<$+@+-@@@@=>+<@@@=>+<?#d>+.--./
Oh ok
 
everything else is parsed but has no useful effect (e.g. if statements whose conditions don't match, setting values in memory that are never used, and so on)
 
apart from lines starting with #, those aren't even parsed
 
That looks like it should work though right?
 
and the way it actually executes is: the =1 ("start of program") is replaced with 24=x ("output 24") and a string literal that just gets written to memory
 
1:47 AM
it replaces =1 with 24=x which should output 24
 
then on the second iteration, =9 ("EOF") is input from standard input, and is then interpreted as the command =9 ("end the program")
so yes, that line should work by itself
 
most likely the problem is that before the /, you have something that's interpreted by Thutu as a regular expression
and if it, say, contains unbalanced parens, that part of the program is going to crash
also, the regular expression actually needs to match
 
Oh yeah you can't see the code I'm looking at
 
there's a | just before the / in the current polyglot because most regular expressions ending with | match anything
but changes to the code might potentially cause the regex to not parse, or otherwise not match
 
1:49 AM
It is actually errorring on line 20 which I have not touched.
weird
Oh wait I am reading the error message wrong thats why
ok I think I can fix this
 
it may be referring to the line number in the compiled code, not the original code
 
yeah I think it was
 
@Qwerp-Derp #45 PicoLisp. Boom.
 
What does it mean by unrecognized row modifier?
 
nearly always that the end of the line has an invalid form
there are only a few things that can legally appear at the end of a line in a Thutu program
by far the most common is /
 
1:54 AM
ok I put the prelude code there so thats got to be the problem
Yep moving the prelude changed the error
 
simply moving the / to the end of the line, or adding a new one, will typically fix row modifier errors
 
thanks
 
(there are other row modifiers but they're much trickier to use in a way that parses correctly)
 
I'll keep that in minf
Does Thutu require me to escape all of my {?
 
they have to be balanced and contain a decimal number, or two decimal numbers separated by a comma
although come to think of it, a \Q earlier in the line may well escape the rest of the line
which would be really convenient if it worked
 
1:58 AM
Ok well Brain-flak has already ensured they are balanced and japt forced them to contain numbers.
what is going on with \Q
 
it's a quotemeta operator, it puts backslashes before things automatically
but I'm not entirely sure how it works
 
ok fair enough
can't hurt to try
 
(note: this isn't part of Thutu's spec, it's an implementation detail of how the Thutu compiler does does regex)
 
ok \Q does something but it doesn't seem to really fix anything
 
well it'd only matter for Thutu, and I'm not sure whether or not it'd do what we want there
 
2:01 AM
#16  "(}23!@)(" 3//*v\D@;'[af2.qc]'#)"14";n4
#/*` PkPPX (22)S"[!(>7 7*,;68*,@;'1,@				 P''53'S^'q
#>
# >36!@
#`<`
#<]+<[.>-]>[
#{
#z}
#
#=x<R+++++[D>+++++++EAL+++<-][pPLEASE,2<-#2DO,2SUB#1<-#52DO,2SUB#2<-#32DOREADOUT,2PLEASEGIVEUPFACiiipsddsdoh]>+.-- -. >][
#x%+>+=ttt Z_*.
#D>xU/-<+++L
#R+.----\).>]|
#[#[(}2}20l0v0x1k\4O6O@1kMoOMoOMoOMoOMOO0l0ix0jor0h0h1d111x0eU0yx0y0moO1d0y0e0e00m1d0i0fx0g0n0n11MoOMoOMoOMoOMoOMoOMoOMoOMoOMoOMoOMoOMoOmOoMOo0moo0n0tx0t0moO0f0t0gOOM0g0f0h0j0j0i0001k10vx0v0l111111^_)0
 
\ would escape the { for both japt and thutu. Might be easier.
 
escaping them doesn't seem to actually fix it
 
thutu also won't like the unbalanced square or round brackets (although in regex, enclosing characters in square brackets tends to escape them in a different way, with the exception being hyphens)
 
What's a round bracket? (?
 
Enclosing everything in a square bracket would be a rather bad idea, Classic really doesn't like things in square brackets
 
2:11 AM
@Chance yes; I just picked the first description that came into my head
"parenthesis" would be more common and unambiguous, I think
although "round bracket" isn't unheard of
 
Ok part of the problem was that perl's regex doesn't like [] so I had to put something in it. But I am still geting the really strange Unescaped left brace in regex is deprecated
 
ooh, if it's deprecated, that means it still works
so you might not have to fix it at all
that's just a warning, not an error
 
oh good
Now I just have to get rid of nested quantifiers
Oh I get what it means by nested quatifiers
Thutu is done
:)
... and I've broken prelude
Thanks for the help on Thutu
prelude is back up
 
2:35 AM
Oh shit
I'm over the byte count
Oh wait I can't do math
I'm not
 
Does anyone on here know any Factor?
 
How does one test Reng?
This Reng interpreter doesn't seem to work on my machine
Ok I figured it out by not being dumb
Reng works
Now I can't get SNUSP to work
am I stupid or are these online interpreters really confusing?
@Qwerp-Derp Well since I'm the only one left here, no
Ok I'm done for now. 4 languages are left: SNUSP, Deadfish~, Incident, and Cubix
 
4:00 AM
@Qwerp-Derp sorry, no.
 
 
13 hours later…
5:16 PM
craop modular SNSUP doesn't work in my answer
 
Oh ok thats why I couldn't get the interpreter to work
I was testing it on your answer
 
oh, no. actually it's been broken for a while
*gulp
oh wait... maybe im just running it wrong
ok, yeah it was me. crap. I broke snsup.
 
So just the latest answer is broken?
How do you test SNUSP?
 
this
gotta click show then run
 
ok
I think I was just hitting run
 
5:22 PM
it's the $ in bash.
$ is a starting point for modular snsup
 
yeah
I vaguely remember that
 
5:35 PM
ok. fixed.
 
 
3 hours later…
8:25 PM
Ok all thats left is Cubix, Incident and Deadfish~. Does anyone know how to test Incident or Deadfish~? I tried the link for Deadfish~ and the interpreter works odd
 
I've tested Incident manually. do you know how it creates it's tokens?
 
No I know absolutely nothing about Incident right now
 
by manually, I mean using tools, to determine how it will be interpreted, and verifying that it is not functionally different from prior answers.
 
yeah
 
You've run the test driver I assume
There is a section at the bottom fir incident.
 
8:28 PM
Oh cool thanks
how do I verify that the tokens do the same thing?
I assume if the tokens are the same I don't have to do anything
 
It's listing the tokens that will be found by the incident interpreter, and the way it finds it's tokens is weird.
True, but they will almost always be different.
 
Ok I got my tokens
 
to quote ais523, a token is anything that appears exactly 3 times in the input, and isn't a subset of another token, and doesn't overlap another token.
 
so, for example, if the letter j appears exactly, that is a token.
the tokens derive meaning from their relative positions
the ^_ token is the jump token
jump tokens have the pattern of appearing once, and then twice consecutively.
 
8:32 PM
Ok I see two of that
 
does that make sense?
there are 3 total. one in the middle
 
oh yeah there is
 
cool.
 
so when it appears 3 times it makes 3 tokens not 1
I thought to make 3 tokens you would appear 9 times
 
I suppose you could say that, but the concept of toekns is a little above me in the first place. I kinda just know the rules to make this work.
the other jump token is }2
 
8:34 PM
yeah I have some of those too
 
ooh, conversation about Incident?
ask me if there's anything you're unclear on
 
so, everything between the sets of }2 ... }2}2 and ^_ ... ^_^_ are not executed
 
(it took me a while to get my head around the language, and it's my own language)
 
well for me that is everything right now
except for tokenization
@Chance ok cool
 
the basic idea is that Incident looks for substrings that appear exactly three times in the input, and ignores everything else
also, the actual characters that make up the substrings are irrelevant, only the patterns in which they appear in the program
 
8:36 PM
The center token is key to making Incident work.
 
this also means that if two potential tokens overlap, neither of them counts (because otherwise you couldn't tell what order they're in, = you couldn't figure out what pattern they were in)
the syntax highlighter uses brown underlines for disqualified tokens (and cyan underlines at the point of the overlaps)
 
Here are my tokens for anyone that wants a look
I split them by 10s
#60 has a space after the echo
 
To ensure the same token is in the center as in the last answer I have followed the following rule: The number of tokens between the ^_ tokens minus the number of tokens between the }2 tokens must equal 7.
 
right, the centre token in the program is the one that does I/O
 
8:39 PM
so if a different program reaches the centre, the program's control flow will be the same but the output will be different
in order to get the output 33, you need the token currently spelled as 0mo as the centre token
 
@Chance That is not the case
currently I have 19 as the difference
 
and if there are an even number of tokens (like there are here), the token immediately before the centre point is the one that matters, at least according to the docs
@Chance well there are three 0mo tokens, and it doesn't matter which of the three is in the centre
 
I need 0mo to be in the centre?
 
@ais523 true. I've just always used the rule of 7. :)
that's right
 
ok well currently my center is 0f
 
8:43 PM
so, looking at your tokens you have (p
 
you can normally recentre it by adding or removing tokens
 
I'm guessing you tokenized this in the beginning of the bash script
 
yeah
 
perhaps if you swap these characters, since I don't believe the order matters, you can detokenize (p
 
the golfiest way is normally to make one of the existing tokens overlap, or not overlap, but putting a space or x or something inside one of the copies a token, to remove all three copies, is normally easiest
 
8:44 PM
I'll change ((pp to (p(p that way (p will appear 4 times
 
you're getting it.
 
0mo is now centered
 
yep, that's the sort of trick we use
btw, what operating system are you on?
 
wow really?! Why is it never that easy for me???
 
I'm on OSX right now but I have a Arch partition
and access to debian and ubuntu
 
8:46 PM
the official Incident interpreter and syntax highlighter have a dependency on libdivsufsort but otherwise run fine on most computers with a working C toolchain
libdivsufsort is in at least the Ubuntu repos, it wouldn't surprise me if it were in some of the other repos too
and having the syntax highlighter and an interpreter handy makes working on the polyglot easier IMO
 
Ok libdovsufsort is available for OSX through brew, but my C compiler is ancient
 
pre-C99 ancient?
Incident's written in C11 but I'm not sure I used any features that aren't in C99
 
post C99 pre C11
 
you might as well try the tarball then: nethack4.org/esolangs/calesyta-2016.tar.gz (you'll need to change "c11" to "c99" in the Makefile)
2
 
wait what
oh I see
99 < 11
Ok it really doesn't like the use of u8
 
8:59 PM
oh right, it wouldn't
let me see how fixable that is
it's just in the debug output
 
I switch OS's so that I can compile with C11
 
also I think gcc might use UTF-8 by default? in which case you could remove all the u8 prefixes and it'd still work
 
Ok what exactly am I building rn? I am going with the assumption it is the Incident interpreter.
 
the makefile builds two programs
incident is an Incident interpreter, incilite is an Incident syntax highlighter
 
ok cool
 
9:03 PM
(use the -V argument to incilite if you want to highlight it directly in your terminal, rather than output HTML)
 
ok libdivsufsort is not available for debian so I will be moving back to OSX
ok removing u8 works!
Ok I've got my syntax highlighted now what does any of this mean?
 
OK, so the bright colours are tokens
 
the dark underlined text are rejected tokens (things that appear three times but are rejected due to an overlap)
 
I'm going to have to change my terminal colors then
 
9:09 PM
the bright underlined text is the centre token (all three copies are underlined, IIRC)
oh right, OS X
bright colours are also boldened
but that might not be different enough
 
Ok done
 
you can just run your program through incident to see if it works; if not, the syntax highlighting can help you correct it
but any underlining, except on 0mo, in the Incident "section" of the polyglot normally implies that you've introduced a token that screws up the existing code
 
How do I pass the program to incident?
 
save in a file, give the filename on the command line
 
ok like everything is underlined
hey it prints 33!
 
9:12 PM
in that case it's working :-)
most of the underlines are in parts of the program that don't matter
some of them we introduced intentionally
 
I also think that there is something wrong with the way my terminal is rendering ansii escapes
 
the actual main body of the Incident code is just from the third }2 to the first ^_, anything outside that underlining doesn't really matter other than to recenter the token
which terminal are you using?
 
I'm using a slightly modified version of iTerm2
 
I have some terminal test files handy that I created for NetHack, I can help you do a terminal test if you like
iTerm2 is pretty good nowadays though IIRC
 
nah it prints 33 so I'm all good
 
9:15 PM
:-)
when the program actually works, there's no real reason to debug it
 
ok all that remains is Deadfish~ and cubix
and then maybe everything I've broken fixing those two
 
the deadfish family of languages is… interesting
they're incredibly weak, and incredibly easy to implement
 
yeah
 
deadfish~'s interpreter is here: github.com/craigmbooth/deadfish
 
I'm surpised you guys have not used more of them
 
9:17 PM
you have to give it the program via a redirection
oh, most deadfish interpreters do at least some error checking
 
I have that but I haven't been able to get it to work
 
and won't even get past the leading #
 
what is redirection
 
python deadfish.py < polyglot.deadfish
 
oh ok
I've done that before
 
9:18 PM
right, just didn't know what it was called?
actually, one of the great things about deadfish~ is that it introduces control flow, but is still incapable of even something as simple as an infinite loop
 
infinite loops are overrated imo
just makes it hard to debug
48
 
yay
 
that leaves just Cubix
 
unless you hardly added anything to the program, the odds of Cubix working first time are very low
 
I'm reaching for the champagne bottle.
 
9:21 PM
you see the \4O6O@ in the last couple of programs?
that's the Cubix capsule
 
err I don't see it
 
the basic idea is that you run the program you have in the Cubix debugger (it's linked from all the last few answers)
single-stepping
#[#[(}2}20l0v0x1k\4O6O@
there
err, first you remove the capsule, then run the program
 
wait I don't have a capsule right now
 
when the Cubix control flow reaches a point which can easily be modified (typically the Incident code, but the evil code is also a good place), you put the capsule there
ah, OK
you can create a new one then
it's basically just 4060@ in the current execution direction; if that direction happens to be up or down, you reflect it with a mirror \ or / to make it left or right instead
 
ok
where on the cube does execution start?
 
9:26 PM
the top left corner of the leftmost cube face
going right
 
cool
 
however, it sometimes feels like half of ASCII is control flow commands in Cubix (it's actually much less than that, but it has a lot of control flow commands)
so the IP tends to fly off randomly into space
 
and using a debugger to figure out when it ends up somewhere useful is recommended
 
debugger?
 
right, that one
run it in single-step mode
 
ok it gets stuck in a loop very quickly from where it starts
I have a limited amount of space to put the 4060@
 
if there's no room you may have to add an extra character somewhere on the top face in order to change the alignment of the code
to make the IP more cooperative
 
hold up there is a 4060@
it just doesn't appear when I do a search?
 
it's 4 letter-O 6 letter-O @
there are no digit zeroes
 
9:30 PM
oh
thats why
 
if you're using a font where the two look similar it can be confusing
I hadn't even realised that was the problem until I saw a zero in your comment, the two look quite different in this font
 
yeah they look different for me, I can tell that 0s are not Os but I don't realize that Os are not 0s especially when they are next to other numbers
Ok fixed cubix broke prelude
 
prelude's gotten more and more problematic over time
because as the program gains more lines with parentheses on, there's more chance of them aligning vertically and screwing things up
 
fixed
 
oh good, the thing with Prelude is that sometimes fixing it is trivial, and sometimes it's nightmarish
when I added Bash I had to completely redo the Prelude control flow in the left half of the program
 
9:38 PM
ok whirl is broken
what is whirl
 
whirl only looks at 0 and 1
and ignores all other characters
 
oh yeah I broke that
 
I recommend using other digits unless you badly need a 0 or 1 for some reason
 
yeah
 
and if you do need them, placing them late in the program is likely to make them a no-op
 
9:39 PM
I actually deleted a zero I thought I added earlier
but it must have been one of whirl's zeros
I'll avoid 1's and zeros
I'm surprised whirl worked at all, I've added a lot of 1s and 0s
Ok everything on TIO works
 
IIRC the existing Whirl code ends with some sort of stabliser to make future commands not have much of an effect?
 
thats good
 
quite a few languages do that
Underload used to, then someone golfed it off, it's been breaking more often since then
 
SNUSP is working
Reng works
Deadfish~ works
Incident does not work
 
run it through the highlighter to see what's wrong
most common issue is destablising the centre token, second most common issue is accidentally detokenising something inside the main body of the Incident code
 
9:45 PM
whirl only executes commands when a double zero is encountered, which is not common.
 
I added a bunch of new tokens apparently
 
ah, that's what it is
 
Is there a good character I should use as a spacer?
like a character that most programs don't care about that I can use to move parens and break up tokens and such?
 
x is the standard
 
ok
I ended up being able to move something
Unfortunately I need to go to class now hopefully I can finish this later tonight (EST).
 
9:52 PM
I'm so excited to read the explanation
 
10:02 PM
Ok I got 0mo in the center but it still doesn't work
 
compare it to a syntax highlighting of a version that works
that might show you what you broke
 
10:14 PM
perhaps you placed the cubix capsule inside a token? It wouldn't be the first time.
 
 
2 hours later…
11:57 PM
@Chance No moving cubix added tokens
I think it was during the fixing of prelude
 

« first day (39 days earlier)      last day (538 days later) »