« first day (4407 days earlier)      last day (734 days later) » 

00:06
0
Q: A Fine sequence with fine interpretations

Parcly TaxelThe ubiquitous Catalan numbers \$C_n\$ count the number of Dyck paths, sequences of up-steps and down-steps of length \$2n\$ that start and end on a horizontal line and never go below said line. Many other interesting sequences can be defined as the number of Dyck paths satisfying given condition...

@RydwolfPrograms i think your brain starts boiling around 100
4
00:27
Definitely getting heatstroke after 40
Maybe neuroscience uses Fahrenheit. You can at least get 180 degrees before the boiling starts, enough to totally turn your life around.
00:42
If you want to turn your life around, just go to a bakery and get a pie
Make sure not to get 2 though, else you'll just be stuck in the bakery
01:14
Can't believe I have to use git from the command line instead of github desktop because they added a bug to github desktop in the latest beta release
01:49
There's deffo an untapped goldmine in Assembled/Compiled golf-langs that don't need to concern themselves with Charactersets.
vyxal's currently developing a verbose mode with v3; charcoal already has one
and if you mean also forgoing the byte-command correspondence there's been various stabs at that
Yeah but the languages themselves are still human readable, Verbose mode just allows for verbose script writing. We can go deeper...
we don't grade any other languages by compiler output so you do still want an encoding for the actual submission :P
We allow it for assembly, it's the same concept.
point is there's no real difference between this and the old wave of compressed langs
though come to think of it nobody did end up getting one of those most-redundant-behavior-is-mathematically-impossible langs done
02:05
Ultimately it doesn't matter too much, as we tend to only compete in similar language classes
yeah i think part of why the fractional byte wave seems to be here to stay is it at least feels like the conventional model
Huffman coding, arithmetic coding, etc. has been proposed over and over again but people don't follow through because...it's just kinda boring lol
It makes the process of golfing less fun, by decoupling operations from byte count, which is the whole thing that makes SBCS/FBCS langs cool
I also appreciate multi-character byte encodings as a neat way to represent a byte-per-instruction set
The one-operation-one-byte mapping that makes it feel...sorta distilled in a way
i forget who did it but remember sledgehammer
iirc it was actually really competitive but since it's literally just compressed mathematica they still ended up finding it so ungodly boring to actually use that it was abandoned forevermore
02:08
One-byte-per-instruction feels sorta… correct, to me.
also basically only usable by those who have bought mathematica already
What I plan on doing once I get around to making my golflang, which I should have finished by the time I graduate college, maybe by the time my children get to high school, I'm going to design it in such a way that I can reuse the library of built-ins for a couple of different encodings, like SBCS, catstruct, maybe something tacit, etc.
I'd also be curious to see a 16bit golf lang with far too many instructions.
Maybe it could be generated by taking Vyxal, Jelly, Husk, Japt, etc. answers, translating them into some sort of golflang-assembly, then using some advanced algo stuff to pull out common combinations of operations that would make sense as discrete operators
My guess is it could actually be worse in a nontrivial number of cases
So earlier in the chat I brought up the idea of "extended Piet"
The original Piet has 20 colours, 18 in a grid + white + black
02:17
Oh yeah like a full 8-bit one?
Operations are defined by the change in colour between blocks of colour
yeah, my idea is Piet with 256 colours including black and white, which would serve as "obstacles" (or not) in an 8×8×4 grid (the colour is 8-bit colour, MSB BBRRGGG LSB)
@RydwolfPrograms Every 2d language I come up with is horribly cursed so I've been too scared to try making a piet-like lang myself lol
The original Piet could only push integers onto its stack. Extended Piet should additionally be able to handle at least floating-point numbers and strings as well
Maybe 2-item tuples too?
You can do some cool stuff with those
Lists could also be on the stack. Then matrices would be represented by several lists
02:23
In my experience, what makes Piet hard to program in is the "difference in color defines the operation" thing
It's horrible to iterate on program fragments
a similar thing happens when golfing hexagony, adding or removing an instruction necessitates reorganising the whole codepath
Yeah but it's an image esolang because it's about image properties. Pull too far away from that and you may aswell have bytecode.
256 colours allows the image to be represented in SBCS
rather than any image format
02:51
@Bubbler huh, i find controlling the path of the ip optimally (as in most golfiest) to be the hardest part of piet, theres just a myriad of rules pertaining to cc and dp to keep track of, and its usually hard to find a concise structure that does what u want it to do
the difference in color thing also sucks too tho, i wish it wasnt like that lol
03:06
"controlling the path of the ip optimally" is hard, yes
but I mean the general process of golfing (like moving around code parts and switching one code fragment with another) is a magnitude more tedious than other langs
true, thats pretty much why i suck at golfing in piet, once i have some working code, even if the structure is ungolfy as hell, i rarely go back to change the structure in any meaningful way cuz its a pain in the ass lol. and anyways i always seem to break my working code when i try change smth lmfao
03:26
My idea for branching in Extended Piet is through the idea of "exit points" which are pairs (cell in block, cell not in block)
would this extended piet still have the difference in color thing? like is the overall structure the same, with how the pointer moves and everything?
Each exit point for a block is numbered according to the current direction pointer
@AidenChow Yes, except that white and black are part of the colour grid
@ParclyTaxel huh, would white and black still act the same then?
how would that work?
Black blocks serve to inhibit exit points
When exiting a colour block the pointer tries to use the first exit point. If that is blocked by a black block, it tries the second, then the third and so on
Cursed idea: gray blocks act as white or black with 50% chance each
03:33
Yeah original Piet has no builtin random function. Extended Piet needs one
im not sure if im understanding correctly. what if i wanted to access a certain builtin but the difference in color means the next color has to be black (which is what i assume u mean by black and white being in the color grid)?
That is part of the challenge
@Bubbler that would be cool, im not gonna lie
@ParclyTaxel oh, i see...
You can always use a white block to move the colour to a point where the next instruction doesn't per se end in a black block
By default the first exit point in the defined ordering is used when the pointer exits a block
@ParclyTaxel true, that would be a bit annoying tho
03:35
I bet you can get around it most of the time by selecting "good" color for the top-left cell
Probably not very annoying since you have 256 colours and only 2 can pose an obstacle to the flow of instruction colours around the colour cuboid
though it does add another tedious element
@Bubbler yes, yes
@ParclyTaxel also how are u numbering the exit points? will the dp be able to take on more values than just 0 to 3? what about the cc?
The exit points are pairs of pixels, the first element of a pair being a pixel in the block, the second being an adjacent pixel outside the block
03:38
@Bubbler true, but tedious when it just so happen that while constructing the answer, u come across having the place a black block, then having the change all the colors as a result of that
Rotate the program so that the direction pointer faces up. Then these pairs are lex-sorted to produce the index
The program follows the exit, and the direction from in-block pixel to out-block pixel becomes the new direction
so the dp is still 0 to 3, but the cc can range to any number in order to index which pair of pixel u exit from?
This execution model eliminates the CC
oh, interesting
so the dp is the only thing that is determining the direction of the pointer?
03:41
@ParclyTaxel Then how does one determine which index to use?
^ the cc's job is to do exactly that
If the instruction to be executed does not branch, the program will use the first exit point in the prescribed order from the block it has just entered given its current direction
i think its better to have the dp still store right, left, up, down, while cc can choose which exit point in that direction to exit from
(That is not blocked by a black)
at least, that makes much more sense to me
@ParclyTaxel what if i want to choose a different exit point other than the first one
03:44
Then you have to make the block you enter correspond to a branch instruction
the entire point of the cc in the original piet is the freedom to choose which side u want to exit on based on if the cc is 0 or 1
It pops the top number off the stack and follows the corresponding exit
so "change dp" and "change cc" is unified into one "branch" instruction?
nice
03:46
ohh thats what u mean, i see
wait so the dp dictates which exit point to go from in each block right? what if the dp is higher than the number of exit points available?
The DP is still only up, down, left or right
oh
so the branch instruction is choosing only from where the dp is facing or from all possible exit points?
It is the combination of DP, the block's shape and (if branching) the popped index that determines which exit is taken
DP chooses from all unblocked exits
@ParclyTaxel each block is like this or are u describing the branch instruction?
Each block is like this
03:52
I guess the branch instruction would be like "pop x; let n = count of exit points; branch to (x%n)th exit point"
so if theres branching in a block then it pops a number from the stack automatically?
As I said, if the current instruction is not branch the program exits at the first available exit, and no number is popped (obvs)
@Bubbler Modulo seems like a good idea
The modulo is what dp and cc instructions do in original Piet
@ParclyTaxel i must be having a fundamental misunderstanding of ur idea. what if i want to exit the current block (which is not a branch instruction) at a different point other than the first?
@AidenChow You can't
03:54
oh
You must make it so that the operation corresponding to the previous block's colour and this block's colour is branch
yea but i was just wondering if u can exit at multiple different points even without branch instruction, cuz in regular piet the cc allows u to have two different exit points with each block
another concern is that every reachable block will have some exit point, which makes the original Piet's "end program" condition impossible
That's why I'm adding an explicit halt instruction
@ParclyTaxel ayyyyy alright nice
i wish piet just had a halt instruction lmfao
03:59
Piet's termination condition in most cases requires you to make at least a 1×3 block and enter through its middle, which may make geometry hard
the l-shape construct in a 2 by 2 also works to halt piet code, but yea
L-shape, i mean
(capitalize to make more clear lol)
but halt instruction makes things so much easier
I've slightly changed the exit point indexing so that the off-block pixels come first in the pairs of (off, on)-block pixels, the pairs of which are then lex-sorted
So if the instruction from prev to this block is not branch, exit 0 will be followed
That... looks honestly cursed
I'd expect all forward-pointing exits come first, all right turns come next, etc.
This change means that in unblocked situations the exit point will be the same as in Piet with DP unchanged and CC left
@Bubbler How can you define "clockwise" and "counterclockwise" on the perimeter of a shape with holes?
If you want (more) predictable exit indexing use shapes with smaller perimeters and black pixels
04:14
true lol
@ParclyTaxel I didn't say clockwise, but one possible reordering in your image would be 0, 7 (forward), 2, 8, 5, 12 (right), 14, 13, 11, 4 (back), 10, 9, 3, 1, 6 (left)
that is, look at each direction and sort all forward exits lexicographically
04:29
It is a good idea to sort on exit direction first – I'd go with forwards, right, left, back though
The interpreter would precompute all blocks, but only compute (and cache) exit points once it enters them
The reason why I ordered like that is that it agrees with Piet's DP trying order, and it's a bit simpler to code IMO
FRBL it is then
The name Extended Piet is only a working title
By longstanding tradition every one of my Git repositories is named after a real-world location. So the final name is likely to also be a real-world location
@ParclyTaxel which is ur github?
@ParclyTaxel name it "the server that hosts the code golf chat rooms in the stack exchange headquarters"
Very fitting given that's where it was discussed
nah even better u gotta list out all the addresses of everyone who participate in this discussion (excluding me, ofc)
04:45
I'll start. My address is unit 69/420/3 Fake Street, New North London York, Albuquerque, New Yorkshixo
That's where I live, I decided
04:56
I also have my little personal website (with pretty little ponies) at parclytaxel.art
It started with Kinross, a small Python suite for compressing SVG files (the files I work with in My Little Pony vector art)
When I needed a place to store my art I chose another git repo named Selwyn, after the Cambridge college. I had applied for Cambridge and actually got an offer, but I declined because Brexit
Later repos include Shinjuku (glider syntheses in Conway's Game of Life), Skopje (smallest oscillators im CGoL and other CAs), Malibu (accurate parametric 3D surfaces), Shibuya (unit-distance graphs and other geometric optimisation problems) and the code for my personal website itself at Portsmouth
Even the computer names of the laptops I've used are named after locations
My current laptop has the name Winterthur
@ParclyTaxel whoa, nice
Did you see when PPCG Made Tetris in GoL? @ParclyTaxel
@ATaco I know that. I am also a member of the ConwayLife lounge, and they reacted to the Tetris-in-CGoL project with indifference
sad
i guess to a gol'er the metacells are old news and the rest of the layers are kinda out of scope
They have however shown that any Life pattern that has a synthesis in gliders, only needs 15 gliders
05:05
Once you abstract two layers, it matters a lot less what it's built on I suppose.
They have also explictly shown (recently) that there exist periodic patterns with no glider syntheses
Now calculate where those 15 gliders are for a given synthesis
05:06
strikethrough formatting
before the edit they tried ~~ :P
no I am referring to - - -
that's what i meant too :P
---strikethrough formatting---
versus ~~discord flavor strikethrough formatting~~
<s>Html formatting save me</s>
[s]I also accept BB-Code Formatting[/s]
 
2 hours later…
07:11
0
A: Sandbox for Proposed Challenges

Aiden ChowMaking one shape out of dissections of another code-golfdecision-problem Introduction One question that I have come across recently is the possibility of dissecting a staircase of height 8 into 3 pieces, and then re-arranging those 3 pieces into a 6 by 6 square. Namely, is it possible to dissect ...

07:25
0
A: Sandbox for Proposed Challenges

PavelConsolidate a 6-axis Vector Typically, when we want to represent a magnitude and direction in 2D space, we use a 2-axis vector. These axes are typically called X and Y: This isn't always convenient, however. The game BattleTech is played on a hexagonal grid, and it's convenient for the axes to l...

07:41
@SandboxPosts bruh i just make two falsey test case for my sandboxed challenge and bubbler just come along and prove both of them are in fact truthy like literally fml
don't forget, I have 10k rep on puzzling hehe
ok well i just make two new one if they are actually truthy im actually done lmfao
yo one of my meta feedback is suggested test cases, maybe u could, u know, lend a helping hand, considering you have 10k rep in puzzling
also like think about how bad i am at puzzles :P
accb
aaab
aabb
aaab

cb
cb
bb
ab
aaa
aa
aaa
fuck
ok well im just taking that one out completely i give up on that one
well.... i have a severe lack of test cases now
proving something is solvable is easy, the opposite is shit hard
I guess I gotta whip up a solution for that
07:52
ok the other false test case is false right
dont tell theres a solution to that
almost surely yes
@Bubbler errr cant u just come up with some falsey test cases real quick without a program?
also how tf would u even solve this, im not big brained enough to even think of a solution to my own challenge lmfao
xxxx
xxxx
xxxx
xxxx

xxxxx
x   x
x   x
x   x
xxxxx
is almost surely unsolvable in 3 pieces
k cool im putting that one in, thx lol
might as well put it in truthy as well but with 4 piece lmao, i really need those test cases
@Bubbler also how did u solve these so fast.... u seen similar problems to this before or what????
I just fiddled with polyomino-type puzzles for years
 
1 hour later…
09:07
Under what circumstances can /usr/../ not be the same as /?
Would symlinks maybe effect this?
I think so, but /usr is not a symlink
until the edit i was about to ask, is this a puzzle or is this something utterly inexplicable that you found in an actual script
Is it a mount point?
/ is mounted as an overlay filesystem
@UnrelatedString real script. I'm debugging ato.pxeger.com/…
09:11
nice
/usr/local/bin/hops is a symlink to ../../../opt/cabal/ghc-9.4.4/hops-0.8.5-xyz/bin/hops
and /opt/cabal/ghc-9.4.4/hops-0.8.5-xyz/bin/hops exists
but trying to read /usr/local/bin/hops gives ENOENT
You can play with this behaviour more at ato.pxeger.com/…
I think I see why it's happening, but I have no idea how to fix it
09:34
@pxeger Can you set the symlink to use a absolute path instead?
09:52
Yes that will work but it doesn't fix the underlying issue with the filesystem layout
0
A: Sandbox for Proposed Challenges

Dannyu NDosConvert a Haskell do-expression to its Rust equivalent In hope that Rust will support the ? operator for every monad. Objective Given a simple Haskell do-expression, output its Rust equivalent. Input The input is a single string consisting of multiple lines. The first line shall be do. The other ...

10:31
0
A: Sandbox for Proposed Challenges

Dannyu NDosFloating-point numbers have errors in addition, oh my! Given two IEEE double-precision floating-point numbers \$x\$ and \$y\$, output the most accurate IEEE double-precision floating-point approximation of the floating-point error that would be caused by performing the floating-point addition \$x...

11:09
1
A: A Fine sequence with fine interpretations

Unrelated StringJelly, 12 bytes +Żc¹NÐeƤ§ÆmA Try it online! Port of emanresu A's golf to mathcat's Vyxal solution. +ŻcµUNÐeḋJ:L is a more direct port for the same length, but this is funnier. Jelly, 18 bytes o2µḤœcµṬ-*ÄAƑ×ṂḂ)S Try it online! Haven't actually tried any closed form or recursive formulae, but ign...

I don't get why +Żc¹NÐeƤ§ÆmA is funnier
explanation added :P
so it's the no-op that makes it funnier?
using prefixes to replace the reverse-and-multiply-by-index, resulting in the need for an absolute value at the end :P
11:29
Clever, but it's easier to negate every other element, cumsum then sum (at least in vyxal)
*cumsum then mean
oh so vyxal does have a mean builtin
that's a relief lmao
also now this is reminding me of that challenge where i wrote a solution that two others ported but then i ported their original version back
*versions
I feel like there's gotta be a 10 in Jelly
yeah
trying to re-port your vyxal 10 comes back up to 11 having to absolute value at the end and/or keep the range reversed then re-reverse it for the cumsum
does uninterleave just happen to go "backwards" somehow or am i missing something
Yeah, it pushes a[0::2] then a[1::2]
huh, so yNY shouldn't act any different from NÐe
11:40
The direct equivalent of NÐe is ⁽Nẇ (although that doesn't save any bytes)
lol
yNY is also just niced
*r
has that under feel to it
@UnrelatedString I think you mean laurel
Hmm, I'm starting to wonder if the only way a jelly 10 is possible is by somehow arranging it to not use chain separators
strictly speaking the Chain Separator is wholly unnecessary but yeah something has to break up the chain there
maybe some kind of convolution power thing could work but that probably comes out much longer
I tried some cursed stuff with caird's fork, didn't really get anywhere
11:45
lol nice
@UnrelatedString I'm doing some big brain ascii-only coding here
but like, how do you guys come up with this stuff?
I'm gonna go to sleep now, but _\ could be interesting... I haven't got it to work but something along those lines might.
i've tried various forms of that too and it's been finicky but it REALLY feels like it should work
and yeah i need to sleep now too
_@/ kinda looks like a wave :P
12:22
Today I updated the Python 3 turtle docs
weird flex but okay
Somehow the doc was showing wrong info for about 11 years but no-one noticed
Happens more often than you think.
Glad it's fixed
You're welcome
Turtle is pretty much not heard about in these days
With a little smarts you could adapt it for everyday coding
But in its current form not so useful
@UndoneStudios eh I disagree
12:33
@mathcat Why not?
It's used a lot for teaching programing
I see a lot of questions on it on SO
^
I don't see any practical uses here.
Even stuff as simple as drawing letters is awfully difficult.
It's not intended for use in production, thus it's no surprise that it isn't good for that purpose
It's basically like scratch in that regard
@mathcat Can't you use the write() method
huh I was pretty sure that didn't exist
one sec
I meant drawing letters, not writing them. :P
12:38
@mousetail Yeah that's the only reason I still use turtle. Personally, I'm dissatisfied with Scratch, as it is, so I'm trying to move on from using it (for 3 years I've been using it!). However, until pygame finally does download on my system, the only graphic system similar to Scratch that I can use is turtle.
@mathcat What's the difference?
Pygame is much better, but still barely used in real games
yeah, definetely.
And too hard to get responsive for non-games
So what do y'all use?
Java for game dev
12:39
Rust + Bevy
I mean using Python for games
Honest opinion: Don't.
^ pygame is probably the best option
but don't is more realistic
For non-game GUIs QT
Well I haven't learned a new language (and it usually takes 2 years) so I'm going to still have to use Python for some time
Other than C, which is too verbose to do literally anything useful
Learning more languages will help you understand python better
12:41
Like which?
e.g. scala gave me some useful insights about fold (python's reduce).
@mathcat sounds like you now have lots of FP Options :p
@mathcat Python's reduce?
@UndoneStudios Some opinionated recomendations: Typescript, Rust, Kotlin, C#
@lyxal I should probably learn Haskell
12:44
@mathcat good be a good Option too.
@UndoneStudios If you are interested in game development, as I said, I'd recommend coding in Processing to learn Java.
For games I'd recomend C#+Unity engine
I've always been afraid of FP and its obscure functions, but today I shall overcome my fear.
(and look up a haskell tutorial online :d)
@mousetail tkinter is where it's at :p
I still have nightmares about tkinter, trying to make it look not shit
The styling is so limited, it will always look like a windows 98 program
12:52
oof true
Maybe that style will make a comeback and tkinter will be hip once again
@mousetail wanna know what else makes everything look like a windows 98 program? VB.Net
if there's something ever to have trauma about it's that
Me when I tkinter
The alignment and background color could be fixed, but not the borders
Also one good thing: the dropdown menu from <select> is actually easier to style in TK than in HTML
ew single-quote docstrings
lmao is that a reference to the oreo meme?
The ><> program would just create a infinite loop
if the stack started with enough elements
Real pros would not comment it out and actually write reeeeeeeeeeeeeeeeeeeeeee everywhere
gotta be fun counting es
13:11
Have 2 different modules that differ only by number of es
that's ... evil
import re as reeeeeeeeeeeeeeee
import regex as reeeeeeeeeeeee
@UndoneStudios used to use pygame, LibGDX for Java/Kotlin, Unity is gud too (tho c# is not the best)
C# is a slightly better Java
from IO import BytesIO
from lO import BytesIO
13:13
@UndoneStudios no.
@mousetail yep, but still bad
@mathcat from 10 import 8ytes10
If your other option is to use unreal with C++ I'd prefer C#
i heard unreal it a bit more low level than unity
@mousetail c++ is one of the worst langs
maybe rust could be adapted for it
It's a bit odd, very high level in some areas but very low level in others
i like unity
mostly high level like scratch, gives low level when needed
13:16
Gamemaker is cool for game making
if it wasnt for c# id totally embrace it
Gamemaker is actually really good too
i was actually considering making a kotlin -> .net compiler
@mousetail not only do you get a PC/mac version, you also get an accidental android version :p
My issue with unity is not as much C# but the way they keep changing things to fast before actually properly finishing a system. When I last used it there was a choice between a depricated old pathfinding system and a incomplete new one.
13:22
roll your own
Vulkan made that unachievable
Bevy is good though if you want a low level graphics enginge
yeah vulkan is pain
opengl is too, but not as much
OpenGL is pretty easy to use
Especially older versions
13:36
@lyxal That's not even valid :d
0
Q: Fibonacci Binary Squares

Kip the MalamuteI was playing with the Fibonacci sequence in binary like so (note that the binary representations are written here from smallest bit to largest bit): 1 1 1 1 01 2 11 3 101 5 00...

13:54
so I've been doing some thinking about how my ideal interpreted language would handle packaging and distribution of source files
and I've come up with something I like
@mousetail its easy to use, the basic stuff
but once you get to rotation matrices etc its all math beyond calculus
Yea you need a good foundation in linear algebra, but you can't really avoid that no matter what library or enginge you use
not necessarily
I tutored linear algebra at university for years so it's not really a problem for me
ofc vectors are a must for any game dev, but most non-rendering stuff is ~algebra 2 - trig level
13:58
You really need a solid understanding of matricies and quaternions even in Unity
in a nutshell, a collection of source files that import each other gets turned into a module, which can be grouped with other modules into one file to form a bundle, which can be run directly by the interpreter or turned into an "application bundle", a natively executable file which contains the bundle data and when run downloads and installs the appropriate interpreter version if one doesn't already exist and uses that to run the bundle code
@mousetail i havent encountered them anywhere except maybe custom shaders
When doing some custom physics things I needed them a ton. I once made a game with a plane that needed different friction values depending on it's orientation relative to it's direction of movement

« first day (4407 days earlier)      last day (734 days later) »