« first day (4384 days earlier)      last day (445 days later) » 

1:49 AM
What are some esolangs that are fun/useful to reason about with pencil and paper?
 
makina
 
I want something that feels like math, or that feels like a puzzle. (And yes, I know APL should be the most perfect answer, but that's a different issue.)
I really just wanna sit down with a pencil and paper, and sketch some stuff out for a good 20 minutes. What's the last lang, or challenge, you guys did that with?
 
imagine drawing things
 
I don't literally mean sketch, haha
 
I never use my hands, so I chopped them off to remove uneeded bloat. I just rest my head on a RFID pad on my desk and control my computer with my brainwaves.
 
1:54 AM
I partially miss doing math problem sets in school, and I partially just am over jabbing a keyboard, staring at a screen, running the program, and iterating.
Like no more debugging, just old-fashioned problem solving.
 
Technically you can't avoid debugging entirely if you make mistakes :P
 
A 2d lang could be a candidate.
@Bubbler I know :p
 
all i can think of in terms of problems would be day 24 of aoc 2021
 
But same issue with proof-writing, you just go back and start again from where you made a mistake.
That's preferable than misunderstanding some primitive/order of operations/computational thing, or having to look things up in a codepage, or look stuff up on Google/SO, or some page of idioms.
@Bubbler I feel like you'd be great at knowing what kind of langs give this satisfaction!
@Bubbler You use a lot of the APL-family. Is there some flavor you find best for that kind of reasoning? Do you just understand them all well enough to be able to do that?
@UnrelatedString And what lang did you use, out of curiousity? I'll give that problem a stab!
 
@AviFS Well, take any esolang with straightforward and small feature set, and solving any nontrivial challenge in it is mostly an intellectual activity.
 
2:01 AM
@Bubbler Right, tarpits are my go-to.
But I'm kind of out of ideas.
A lot of challenges just don't work, or aren't fun, for tarpits. I've been missing out on tons of problems by only considering BF and /// and stuff.
 
@AviFS APL but try and implement things you'd expect lists to have like sort by function, combinations with replacement, partitions, filter by function (i know replicate exists, but write a generic function to allow filter by) and other things that make me wish apl had more friendly list utilities
 
@lyxal Yeah, APL is just really frustrating to me at this point, most of the time. I've read everything I could get my hands on that was easily printable, short of the Dyalog dfns; I wish there were more reading material. I was pretty comfortable with it, if I can so. I read Bernard Legrand's book. And could do the APL Dyalog challenges, phase I and phase II even though I never submitted any (perfectionism).
 
@AviFS I don't think I do much "reasoning" with those langs outside golfing. I mostly use them for quick data crunching
Golfing in them does involve reasoning about alternative algorithms but that can be said for any language
 
I think it might just be frustrating because after the exploration/learning phase, every time I use it, it's just to golf. So I haven't written any idiomatic programs in a long time, and hardly any. But whenever I revisit it to golf, I find it hugely frustrating.
@Bubbler I find APL particularly frustrating for golfing though because so many simple operators that come up are a bit of a mess. Converting to binary is an ordeal. Capitalizing isn't simple. I mean even sorting, but that's a simple idiom.
 
^
 
2:10 AM
And winning answers are sometimes tacit-ified, sometimes dfn, and sometimes standard.
 
@AviFS python :P
 
@AviFS You spend way too long struggling with figuring out how to make sure the shape of everything is consistent, and that everything flows nicely, when you could be using that time just applying standard library stuff from languages with more built-ins to offer
 
@AviFS BF and /// are way too minimalistic. I'd say something like Labyrinth is a better choice to do more variety of challenges in.
 
It can really kind of be a mess in terms of which is the most space-efficient way to write something, depending on how much the challenge depends on input/writing to output (standard), how neatly the patterns fit a train, etc.
@Bubbler Thank you. Please give me more such recommendations!
 
@lyxal And that's with all the helpful stuff dyalog apl adds. Apparently other apls are much more painful
 
2:13 AM
@AviFS I know I sound like a broken record when it comes to language recommendations, but this is one of the reasons I love Jelly
 
Jelly is a little better than APL in terms of built-ins available, but more painful to debug
 
Most of the time I spend on the site nowadays (cause yay uni work) is during the ~15 minutes I queue and wait for my coffee, and during that time, I get most of the easy flags handled, then try to, in my head, do a recent challenge in Jelly. And it's a very fun brainteaser-kinda thing
 
@Bubbler Do you have a recc between J and ngn/K that might solve some of my workflow frustrations with APL?
 
@AviFS If that kind of stuff frustrates you, you might want to try some golflangs... or get away from code golf for a while :P
 
@Bubbler Well, not that part. Just the fact that there are three structures for writing APL programs, all of which can be competitive.
And trains are elegant. It's really the standard way that I find frustrating, since it changes the nature of the lang, and I never remember how to structure it.
@cairdcoinheringaahing True. I really have to learn it. That and Vyxal. The do have that issue, at least at the beginning, of having to reference a code page, though.
 
2:19 AM
@AviFS J shares many headaches with APL. K is probably closer to what you want, as there is one clearly competitive way to write down a single code fragment, 99% of the time.
 
@AviFS Yeah, that's something I can't really talk about, given my familiarity with the Jelly code page, and how I can compose programs in my head
 
I think it's that complexity somewhere between ///-BF and the golflangs that lends itself to a coffee and some problem solving.
But a golflang with a shallow learning curve would also be perfect right about now, lol
@Bubbler Interesting, thank you.
@Bubbler It just doesn't really make sense to me, since I know APL was designed to be done on paper. But despite my best efforts, I don't grok it well enough to be able to play around with it in a way that retains that mathematically pure spirit.
 
@AviFS That spirit kinda breaks down when golfing I guess
 
It often feels like wrestling instead, and again, maybe that's just because I'm returning to it for the golfing. It's possible that spirit doesn't hold up to golfing. Although, I can't imagine saying that the lambda calculus or Joy or Haskell don't hold up to golfing.
@Bubbler Almost beatcha to it! But it's odd since there are other langs where the spirit doesn't break down.
 
@AviFS Haskell golfing can be equally jank.
 
2:26 AM
I guess they just have less warts to be abused for the sake of golfing.
@Bubbler Yeah, I might be wrong about that one. But Joy for sure. I think any pure mathematical/logical system with a small set of consistent rules is fine. I'm guessing it's only the little weird things that start to mess with it, since you're forced to use them if you want to shave off bytes.
And the older/more backward-compatible the language is, the more of those there will be.
@cairdcoinheringaahing It's a bummer you can't really write the Unicode characters on paper, haha
I might have to restart development on Muck. Sketching out programs in that was sooooo much fun.
 
@AviFS i mean you could write them on paper it'd just be real messy
 
@AviFS Most of Jelly's unicode is over/underdots :P
 
I imagine a lambda calculus-based language with a small set of built-ins and a single syntax to express a function would be almost ideal.
stack-based would be also fine (I guess it's what Joy is?)
 
@Bubbler Yup!
Joy is delightful.
@Bubbler Wait, so were you not even able to shorten it the function, haha
@cairdcoinheringaahing Oooooooh :p
I have like an hour. Would you be down to hop over to Jelly Hypertraining and teach me some Jelly ⍤
@Bubbler Is Labyrinth the best 2d esolang for this kind of thing? I haven't ever seriously looked at picking up a 2d esolang.
I don't understand this at all, haha
@AviFS @cairdcoinheringaahing
 
2:46 AM
@AviFS Not "the best" in all measures, but in my experience it was the one that makes you think about the 2D-ness the most
 
@AviFS Unfortunately, it is almost 3am right now, so I'm not really free. But, if you have any questions, feel free to ask them there and I'll answer them in the morning :)
 
Piet is similar in that measure, but it's somewhat harder and the color offset thingy gives you a bit of unnecessary mess
 
@cairdcoinheringaahing Nooooooooo. Ouchy. Sorry, I'll never remember time differences, it seems.
@Bubbler I will forever be perfectionistic about which colors to use, even though it doesn't matter, haha
Wait... that just gave me an idea for a CGCC challenge. You are given a 2d array of tuples representing offset, and the other thing, and then you have to generate hexcodes for a Piet program.
I don't remember what the parameters are that matter for Piet. Is that problem trivial or tricky?
FRACTRAN is also a great tarpit, by the way, if you read Conway's paper on how to understand the model of execution.
It takes forever to load, but there's a way you can diagram the programs in this paper.
And Conway gave a talk showing it, available here:
 
@AviFS you could also try Fig, Thunno or Add++
The benefit of add++ is that you can yell at caird whenever you encounter bad language design :p
 
You can see a state diagram in my answer to this question:
7
A: Collatz Conjecture (OEIS A006577)

AviFSFRACTRAN, 24 fractions Uses 180 bytes, for the more conventional counters... 68/13, 133/102, 341/51, 115/17, 17/19, 87/161, 17/23, 23/29, 53/93, 26973/217, 410/259, 43/111, 976/37, 37/41, 329/215, 37/43, 43/47, 118/265, 1/53, 53/59, 67/305, 1/61, 61/67, 117/4 Try it online! Explanation Am a bit ...

Wait, Bubbler, you mentioned that answer in your Conway tribute, haha
 
2:58 AM
@lyxal Wrong. Whenever you code in my languages, you automatically sign a waiver that says you can't blame me for my bad decisions
 
@cairdcoinheringaahing And I blame you for that.
 
3:36 AM
@lyxal JS also only has a dyadic comparator sorting function, fwiw
So finding algos meant for JS could be a good way to find what you need
 
Ooh how does that cmp_to_key function work, out of interest?
Wouldn't it need to know what the list is?
 
it probably reconstructs the list as it goes
or depending on how the sort by key works under the hood it might even just bypass that entirely
actually wait no yeah it would just need to wrap the given value and directly run the desired comparison
 
4:15 AM
By the way, new Neil Sloane video on Numberphile
 
@RydwolfPrograms I think it just creates a wrapper class whose __cmp__ is the given comparator
 
Oh, that's boring
I was expecting something horrible like a function that keeps track of every input it's been given and creates binary fractions above/below/in between the existing ones to fit in new inputs according to the given comparison function
 
5:03 AM
@RydwolfPrograms You did do quite a good job! The notable false positives I ran into were Peshitta and Shittim (Bible/hermeneutics related terms), various people with "Dick" in their names (which I've only partially been able to fix), and a number of occurrences when someone in chat said "if u can" ;P
 
Did that last one match "f u"?
If so, that could probably be removed entirely, I don't think people walking by would notice that
 
"f u c"
which I fixed by requiring the pattern with spaces in between the letters to be preceded and followed by a word boundary
 
Is that commonly used (with the spaces and everything)?
Nice
 
IDK, I don't remember seeing it. Maybe someone would do it for emphasis (or to get around a profanity filter, although since SE doesn't have an actual profanity filter, I wouldn't think that would be a factor here).
@DLosc Oh, and William Shatner, of course.
 
I feel like people who have parts of their names censored are pretty easy to recognize (and also funny :P)
 
5:14 AM
Yes :P
However, part of the problem is that the userscript breaks editing a post if the post contains any censored terms. (This isn't Rydwolf's fault, since he only designed it to work for chat. I might see if there's an easy fix at some point.) So if I wanted to write a Lit.SE post about Dickens, I had to pause the userscript and then unpause it afterwards--a minor annoyance, but worth fixing.
 
Oh, that sucks
I suppose it could just ignore any input elements?
Since it's unlikely you'll be typing in obscenities yourself
 
Maybe something like that, yeah.
 
 
2 hours later…
7:41 AM
Finally got Fanatic!
 
Fanatic!
 
Fanatastic
 
 
4 hours later…
11:47 AM
@DLosc You could probably fix it by only having the script run on chat :p
 
12:02 PM
@emanresuA I could have gotten Fanatic if I didn't break my streak yesterday
 
I used to be a Fanatic like you, until I took an arrow to the knee
 
Speaking of breaking stuff today I got a gold medal for running 100 metres in a 4-person relay
 
12:49 PM
0
Q: Suggestion/Edit for answers if user "Last seen more than X years ago"

EzioMercerI made a suggestion for this answer but just because of that user "Last seen more than 3 years ago" I know that it is bad idea to edit someone's answer here but what if user is not active anymore? In this situation, I believe that the comment is useless and may be deleted in the future by the sys...

 
1:11 PM
@emanresuA noice
 
 
1 hour later…
2:22 PM
@user It should, since that's not a DOM Text node
SE probably uses a contenteditable tho
Which would be more annoying to fix
 
3:03 PM
me at home enjoying math
(that took so long to put together in google drawings)
 
first test of the new ATO API lib:
olimar.ato.ATOException: (1011, b'error reading request: UTF-8 encoding error')
 
ATO uses EBCDIC didn't you realize
(my serious guess is bad gzip/compression handling on your end)
 
This is especially interesting because ATO has an error code for encoding issues (1003) but code 1011 is an internal error
in Off-Topic TNB, Jul 9, 2022 at 18:31, by NoHaxJustRadvylf
My friend: Makes a small mistake in geometry class
My brain for the next six years any time I try to do something serious: "E U C L I D ' S P R O S T A T E"
 
3:24 PM
okay, the error turns out to have been me opening a text websocket instead of a binary one
:/
 
IIRC there's no such thing
There can be a mix of text and binary messages on the same socket
 
yeah, I was sending a text message instead of a binary one lol
 
LDQ: How should I handle multiple nth roots in a golfing language (with complex numbers)?
E.g., the squareroot of -1
Or the 4th root of -8
Like, here's the 7th roots of -2+4i:
Which one of those would I return? Since presumably a single result would be more useful than a list of results
 
3:42 PM
@Bubbler same
AoC was quite simple in APL
 
3:54 PM
@RydwolfPrograms Defintely top right
 
But there's two in the top right
 
hi
… no response.
 
Never mind!
 
lol ninja'd
 
4:04 PM
Woosh
 
4:34 PM
@RydwolfPrograms the number with the smallest angle then
 
yay my dji mini 2 arrived
now i can go do hacky things with it
 
5:03 PM
dunno what that is but it sounds expensive :p
 
drone
cost me 500 bucks
 
wow
 
5:35 PM
Don't we have for online judge golfing?
 
5:49 PM
codegolf.meta.stackexchange.com/a/25505/76323 Should I decrease time limit or allow using SSD if some solution take same time as memory?
or ask someone with enough-mem computer to run?
 
I'd run it in a VM with a specific amount of RAM (prolly 4 GB)
Working around the RAM limit will either be unnecessary or make it more interesting
 
I generated the test cases using O((log n)^2) time and space
but if O(log n) time solution exist then they need more space to even take input
 
6:12 PM
@AviFS Have you tried ><>? It's one of the classic 2D languages, and I find it easier to use than Befunge.
If you want something more tarpitty, I'll shamelessly plug my 2D tarpit BitCycle.
 
6:32 PM
case StatusType.UNKNOWN:
    resultString = "Unknown response. (server on fire?)"
3
 
eyyy OLIMAR2 works!
@Seggan y'know you can just send "this is fine" and it'll get replaced with the comic
 
7:09 PM
ah ok
 
7:39 PM
id show you some awesome footage from my drone, but itll give away personal stuff :(
 
sadge
 
 
2 hours later…
9:23 PM
so i think ive decided on my error strategy for rol
they come in 3 "strengths": Errors, Results, and Exceptions
errors are your good ol' try catch
its for stuff you cant really do anything about once the error is thrown e.x. os permission denial or internal state errors
you can catch em and rethrow them
results are self explanatory. thatll be in the stdlib
exceptions are what i call algebraic effects (its a bit more clear)
they are basically resumable errors. you raise() (or using ufcs, .raise()) them
you can catch em and resume em
basically how this describes them
its for stuff like int parse errors or empty collection errors
 
it sounds like those aren't production ready in that description :p
 
@Seggan It's also somewhat misleading, though
Algebraic effects can be used for more than exceptions
 
@ThomasWard thats why mine are slightly different. more exceptionlike
 
They can be useful for implementing a single-threaded debugger for an interpreted language
@Seggan In what way?
 
@Seggan then what makes them different from errors (which technically are exceptions)?
 
9:32 PM
they are resumable
@user mostly in the way you catch em. by class, not value
 
That sounds like pretty much the same thing, just more object-oriented
 
what user said
 
@ThomasWard they are resumable. i call them exceptions becuase they are for exceptional situations (e.x. an empty list). errors are errors. you cant recover from them
 
you just said that
 
But they do have wider applications than just exceptions
A common example is generators
 
9:34 PM
@ThomasWard then what are you asking?
@user i... still dont see how that can be done
 
@Seggan i'm simply saying I agree with what user says - that they're pretty much the same thing just more object-oriented
i didn't need you to repeat your statement to me twice
 
@Seggan You have a Yield effect containing the yielded value, and then a handler that handles the Yield effect by adding the value to some infinite list and then continues the generator
 
mm
 
@ThomasWard lol, I think you and I are also saying different things. I meant that Seggan's way of implementing resumable exceptions isn't that different from normal algebraic effects, and if I interpreted you correctly, you're saying that Seggan's way of implementing exceptions isn't that different from normal exceptions (correct me if I'm wrong)
 
^ thats what i thought too
 
9:40 PM
@Seggan Sorry if I'm not good at explaining, here's a different example instead. You can do something like Kotlin's suspend fun with effects, without it being part of the language itself
 
9:56 PM
@DLosc I just took a look at BitCycle and I love it. The collectors are really interesting, and I'm intrigued by this notion of being able to have multiple of the same lettered collector, all of which open if any one of them has bits in queue. And the ordering on top of that. I've never seen a mechanic like that before.
Also, it intuitively seems like it has wayyy more than enough to be Turing Complete, but it still feels really tarpitty. But like, there are three conditionals, plus the dupneg, and the sophisticated collectors. It seems really rich.
 
I tried to double a number (append a 0 to its binary representation). Am I right in understanding that to prepend, you can simply do:
?0!
But that to append a 0, the simplest way is like this?
0Av
 ?!
 
@AviFS Thanks! If you haven't already found it, I recommend the interpreter here, which lets you watch your code running.
 
@DLosc Ooh, neat. I hadn't.
 
@AviFS That looks right, yes.
 
@DLosc Is it novel as far as you know?
Like being able to have multiple registers, containing different data, but which are entangled in terms of when they release it.
@DLosc Is there a shorter, or simpler way I'm missing? Or another way to do that doesn't use collectors?
 
10:09 PM
@AviFS I think so... don't remember whether I had seen something like that before or not. The language's main three inspirations are ><>, Bitwise Cyclic Tag, and Ziim, but I don't actually know Ziim, I just thought it looked cool and way too difficult. :D
 
About to release a tape based language I've been working on for a while
 
@DLosc Interesting, I should prob take a look at BCT. Only half online right now, though.
 
Minus a really cool encoding, which is the majority of the language, it's pretty much just a fancier BF
 
@RydwolfPrograms Oh?!!
 
I've beeb putting off making the graphical part of the interpreter tho since interactive HTML stuff is pain
 
10:11 PM
@AviFS There's definitely no way to do it without collectors, since you have to "pause" the 0 bit until the arbitrarily long string of input bits has gone past. There might be a way to rearrange it so it's fewer than 7 bytes, though it seems unlikely. However, I've frequently been outgolfed by Jo King, so I don't trust my intuition about whether something is maximally golfed. ;)
 
@DLosc Haha, in BitCycle?
 
Yep. Jo King is really good at thinking in 2D languages
 
This would be a perfect lang to teach for a LYAL.
 
Has been done
 
already taught (ninja'd by se lag)
 
10:14 PM
Of course it has, haha
Well good, I'm glad :p
 
@AviFS Exhibits A, B, C
 
Shit. I tried to make a diagram of what the right turns are in each direction, and ended up drawing a swastika.
 
lol that's happened to me before with a 2d lang
I think in that instance I was able to just remove the middle two crossed lines tho, so it was just four arrows on the edges
 
10:32 PM
@RydwolfPrograms Omg, actually? I just aggressively erased it and draw a new one with both left and right arrows, but it's too cluttered. That's a better idea.
The one I have actually looks like another familiar symbol now, but I can't place it. Like some military thing, I feel like I've seen it on old planes in pictures/movies, or something.
 ---------
     |
|    |     |
|----|-----|
|    |     |
     |
 ----------
Something like that.
 
@AviFS I've shown that BitCycle is Turing-complete with just two collector letters, one arrow, one splitter, +, and dupneg. In particular, the switches are completely unnecessary (though in practice, they can be quite useful).
 
@AviFS italian maybe?
 
@AviFS I think there're some stylized crosses that look like that, like in this logo:
Not sure if they mean something in particular tho
But that's still pretty different looking
 
I thought of the Iron Cross, but yeah, still not a terribly close match
 
Maybe some sort of crosshair?
Huh, TIL the thickness of the lines in rifle crosshairs is often standardized in such a way that you can use them to estimate distance
 
11:42 PM
@AviFS Also, FWIW, the usual way to handle numbers in BitCycle is unary, because it allows for a stream of bits to represent a list of numbers (with 0 as the separator).
 

« first day (4384 days earlier)      last day (445 days later) »