« first day (3800 days earlier)      last day (1261 days later) » 

00:00
technically anything that can encode invalid BF programs is suboptimal right?
... That's a good point
and also having like RLE or other compression things beforehand would make it more compressed at which point there isn't really a universal "best" anymore
but enumerating and encoding the index would be a good start
We do have a "Create a bijection between naturals and valid bf programs" challenge
Also @cairdcoinheringaahing, it's 134 rather than 200 and it does loads of cool stuff!
@AviFS Very nice :D
00:01
@AviFS I think I'm a bit late, but I made a BF interpreter (based on TIO's) with debug (with #). It prints (to stdout) data cells up to the farthest reached by the pointer (instead of an arbitrary limit) and indicates pointer positions with *, and prints the number of the current cell of the pointer. <https://tinyurl.com/2p3csbze>
@cairdcoinheringaahing Woah, really? I'll got look for that one
43
Q: Enumerate valid Brainf**k programs

DennisGolunar/Unary is a way to encode all valid Brainfuck programs, but it is not an enumeration, since most natural numbers do not correspond to a valid program. For the purpose of this challenge, assume a doubly infinite tape and no comments, i.e., a Brainfuck program is valid if and only if it cons...

@astroide No way! Thanks! That's way cool. Did you have that already or make it for now?
@AviFS I made that just now
@astroide Thanks, that's super useful! I'll look at it more when I'm back
Also, I imagine it's not necessary to ask, but please don't post the BF answer! I will soon. I just wanted to share it since I just finished it, and spent a ridiculous amount of time
00:07
Not necessary :P
I can't think of a time someone "poached" someone else's answer, and if they do, the mods would step in very quickly (plus a whole bunch of downvotes)
Fricking ninja @hyper-neutrino ಠ_ಠ :P
> I can't think of a time someone "poached" someone else's answer
you were saying?
@cairdcoinheringaahing git gud
i have smokey ping me when spam is reported on CGCC :P
@hyper-neutrino ???
@user the new spam post contains part of the explanation footer from Neil's answer and a spam link at the end :P
it's gone now, guess you'll just need to get 840 more rep
Oh lol
@hyper-neutrino :(
I am so sad I could not see this wonderful and unique spam
yes it was very interesting and entertaining
the MS post is still up here if you really care but it's not interesting :P
00:21
Oh, it's fascinating.
also yeah, if you post your solution somewhere and are working on it and someone just steals it and posts it, you can just flag it for mod attention and it'll probably get a shit ton of downvotes, and I'll definitely have grounds to remove it (or more) if the downvotes don't make the poster remove it themselves
we've had people (by which i mean trolls) plagiarise before but it was after the previous answer was already posted :P
Wasn't there a question that got plagiarized before?
(Probably more than one, idk)
i remember there was one about images and colors that was plagiarised with the only thing being edited that the nature pics got changed into some indian movie :p
00:29
Remembered it because of
Feb 5 at 14:58, by caird coinheringaahing
@UnrelatedString That’s the famous “The entire internet works like Reddit, right?” strategy of posting content
@hyper-neutrino Yeah, not was I was thinking of :P
@RedwolfPrograms I love that they didn't even get the tags right :P
also they didn't even bother to copy the source formatting
they just copied the body from the page and posted it, idk what they were expecting tbh. probably like you said, "the internet is like reddit so i can just repost stuff right"
At least reddit reposts are (mostly) the exact same content, not a shitty ripoff of the OC :P
00:42
Aren't reddit reposts simply a link to the original post?
The better ones are. The worse ones just find the content, save it and then post it again
their other post is also something - can't really decide which is worse tbh xD
What is that answer? :P
wait tf i didn't realize it got an answer before closure
Makes it double as awesome as the other
00:45
it's copy-pasted from this article according to a flag
also, the account was created 54 seconds after the "challenge" was posted apparently, so... :thonk:
01:00
Sandbox posts last active a week ago: Implement a feature-rich calculator, Play Thud
01:47
Hi everyone
02:30
CMQ: Most useful function compositions (e.g. S-combinator, over, etc)
Compose
(and the extended n-composes)
@Bubbler cross-posting is pretty much a link to an original, but reposting is using the same content (and linking to the original in comments if you're lucky)
@lyxal on its own, i think iota combinator is turing complete, but idk if you're talking about in general, in theory, for golfing, things to implement for vyxal transformers, etc
@lyxal I can give you a long list of compositions in Factor
@hyper-neutrino more so transformers
@Bubbler please do
02:40
Are there good articles on concatenative programming
@Bubbler tutorials?
That seems to be huge documentation
Tutorials only exist for specific languages, but I guess you can try one for Factor. It's very similar to how golflangs work IMO
ok
factor seems the right way to go
wait is factor a stack lang
it looks like it from what i can tell but idk if it's properly postfix or stack based or if i just am reading it wrong from the like once or twice i've looked more closely at a factor submission on cg
02:48
@hyper-neutrino yes
pretty sure its stack based
stack postfix
huh, interesting
Factor is stack based in a similar way to forth
It still has variables and allows named arguments
[ i know nothing about forth either :( ]
02:50
without variables many tasks seem so hard...
in stack based langs
@wasif sad tacit noises
@wasif What you do in stacklangs is to write down the stack content after each step
It makes life much better
gotta love when windows keeps adding unnecessary keyboard layouts that i can't remove
02:52
@Bubbler yes true
@cairdcoinheringaahing i wonder how tacit gets jobs done without variables
What even is a canadian keyboard layout lol
honestly jelly tacit allowing walking through a chain is relatively small monad-like blocks on the value makes it quite easy to interpret once you learn the chaining rules
(which isn't necessarily easy :p)
@wasif jelly has up to 2 arguments (none, left, or left-right) and an 'accumulator'-type value that changes as you walk down the chain
you don't need variables because functions refer to the value or argument(s) based on their composition using the chaining rules
hmm.. how do make loops and conditions in jelly
quicks / operators / adverbs / transformers / hypers / dynamics
quicks in jelly
thats a big pile of synonyms
02:55
<if-link><else-link><condition>? composes three links into one link that checks a condition and depending on it, executes one of two links
if you want to learn more jelly you can check out the Jelly Hypertraining room :)
nice
this looks neat
another user has fallen into my trap I mean, another user has been seen the light of tacit programming and will be enlightened
The prophet has spoken
@hyper-neutrino Ah good, another sacrifice to the Great Jelly One :P
lol
03:06
ẠⱮ€Ɲ
@hyper-neutrino jelly can also take the second input for a quick directly from stdin if unspecified
oh yeah, that thing
Only # and ¡ tho
only ntimes and nfind tho
ninja'd :/
I don't like , it's wider than a normal monospace character in some of the fonts I use :/
03:07
rip
yeah finding a codepage that is consistent width is really hard
I wouldn't mind <link><link>? to read and eval from STDIN, with the input being the condition
part of why i gave up on the kana codepage, cuz everything needed to be with wide latin for it to not look really off
Whenever I start on a second golfing language, I'm going to make my number one rule "ensure all of the characters are a consistent width"
@cairdcoinheringaahing oh, like if it's near the start of the chain and doesn't have enough links?
yeah that'd be cool
@RedwolfPrograms There's a single key just for typing "eh" :P
03:08
@RedwolfPrograms everything is of the same width of you use gnu freefont
I chose to overload it as 1 0 ¹ ?, 1 0 <link> ?, <link> ¹ <link> ?, and <link> <link> <link> ?
@hyper-neutrino Yeah, I don't think it'd work if it was the same as #/¡ (if the body is a nilad, read instead), but it could be useful
@hyper-neutrino Isn't the first just "not not"?
And the second is just <link> not not
basically. it's not necessarily the best choice but ¯\_(ツ)_/¯
@hyper-neutrino NGL, I only really find Jelly answers interesting if they are more than just a chain of monads and dyad-nilad pairs
03:12
same - dyadic challenges are so much more interesting to solve in jelly than monadic challenges
Proper elegance and cleverness is almost always from good dyadic usage and from clever chaining
LCCs (without the constant cuz it's the argument) are pretty uninteresting, yeah
Otherwise the golflang haters win and the answer really is just "slap some builtins together one after another" :P
yeah, lol. like some parts of "golflang bad" are kinda true - anything that can be a monad chain is boring in both jelly where it's just 1 | 02 | 20 chain and stack-based languages where it's just pop-push pop-push chains - I still think golfing langauges are fun and interesting and have a positive impact on the types of challenges and submissions and thought processes, but it does make easier challenges extremely trivial/boring, and having every challenge be complex/hard isn't good either lol
Jelly has a 2d convolution builtin, I wonder if it can be used on the crosses challenge
03:15
i have no idea what that does lol
Check out the MATL answer :P
I think I might try making a stack based golfing language, with more functional stuff than Ash had
Stack based golfing Lang is the new brainfuck derivative
hmmm idea - a flag to make yuno use stack mode instead? o.O
03:17
My main reason for not adding first class functions to Ash was that I wanted to avoid recursion, but it turns out modern browsers have high enough recursion limits it doesn't matter
Unless you can make it better or more interesting than the current "main" one (05AB1E), it's probably not worth making
lol
@cairdcoinheringaahing what is your overall opinion on vyxal
@cairdcoinheringaahing Prefix is basically just backwards stack based with more complexity :p
ignore the flags :p (although i already know your opinion on those and I agree with them, but still)
oh yeah i am coding yuno in js @RedwolfPrograms please save me every day my last bits of sanity are slowly depleting
@hyper-neutrino it annoys me how hyper specific it can get, but otherwise, I haven't seen it in action enough to make a judgement about how golfy it is
03:18
I don't know too much about Vyxal, but from what I can tell it's pretty weird :p
back again
will read about jelly later
@RedwolfPrograms how is that weird
It generally comes out as being longer than 05AB1E however
@cairdcoinheringaahing that's fair. also yeah - i like that jelly's builtins all seem pretty general and it's more about intelligent combinations of them (except when it's unintelligent combinations and you just spam capital letters in TIO)
although i am also adding fizzbuzz constant for the memes cuz i have 254 slots for random constants
@hyper-neutrino I believe we need to challenge Vyxal to a classic 2012 multiplayer Minecraft minigame
The main reason I want to do stack based instead of prefix is the simplicity. Anyone who looks at Ash's parser will tell you I should not be allowed to write anything tacit.
03:20
@cairdcoinheringaahing yes. or we could figure out a way to get a CnR somehow :p
I don't understand why vyxal comes out longer than 05AB1E, its fizzbuzz is too short
@wasif That's exactly why
Wasting operators on individual challenges
And other small things
It's not one single issue
Yeah, stack based is fine, but it's very boring. BF derivatives are fine, but are generally boring
but does it have fizzbuzz builtins?? apperaently not
Tons, yeah
I'm 90% sure Lyxal wrote the rest of the language just to justify winning FizzBuzz :p
03:22
It is as close to having a Fixz Buzz builtin as it can get and still say "No, there are general purpose"
The "start the stack with 100" flag is as single purpose as you can possibly get
ok but like is %3==0 and is %5==0 and the only other mod built-in that is similar is "even?" which every golf lang should have
like where tf else are those used
I think it's crazy that modern golfing langs have 4 to 10 years of history to make builtin choices from (mainly Jelly and 05AB1E, also Pyth, CJam, Golfscript, Husk, J, APL, etc.) and yet nothing has been a serious challenge to the "kings" since they began
I didn't know about the 3 and 5 builtin in Vyxal
I wonder why older golflangs were full ASCII
03:24
Ash had those too (as well as 2 and 10), but I dropped them near the end because it's just stupid to have such single-purpose operators
@wasif The SBCS just...hadn't been invented
@cairdcoinheringaahing yeah - even my current lang, a lot of the things i'm implementing right now are just taking jelly atoms and overloading a couple of things for more specific purposes. it's hard to compete with the legend himself at designing a better language :P
CP437 was used for some
other than G. i still don't get that. xD
I see
Like, Jelly's biggest weakness IMO is how specific builtins are assigned, making important things 2 bytes or more. If it was redesigned now with the history, it'd be much much better
03:25
did they use unprintable ASCII back then
not really
Some did I think
Yea, but as encoding data, not programs
oh
@RedwolfPrograms yeah, exactly - IMO if you have a set of specific 1-byte built-ins that can all be represented by another one-byte built-in plus an argument, it's a) a waste and b) too specific
03:25
like unprintables got used occasionally but not as a lnaguage feature
they snuck in the same way as they would for normal languages
Seriously was the first one to use an extended code page I believe, then 05AB1E and Jelly
APL was the pioneer
to use unicode
there were also like one or two full-unicode languages that existed solely to convince people to please score on bytes instead of characters, which was not actually completely standard for some reason
Yeah, but it didn't use it because it was golfier
APL existed before Unicode, right?
03:27
@UnrelatedString oh yeah - didn't CJam allow just inserting chinese characters to compress code and then it just decompressed before running
@RedwolfPrograms i think so
like Stax, but without each char being a byte
@hyper-neutrino wait what?
Do you mean Sclipting?
i'm not sure i heard of cjam doing that but implementing it in cjam is probably pretty short
sclipting is the only one i can think of that's just automatically full unicode
The thing is that a lot of people don't understand how custom code pages work
03:29
the classic "don't mean to spoil the fun but this is actually 11 bytes because (x) and (y) aren't one byte in utf-8" :p
Because it isn't someone turning around and saying "Jelly reads as one byte instead of 2". It's saying that "Jelly interprets the 0xEA byte in a file to mean 'map' instead of some random byte. In order to make that more usable, if you include the character, Jelly will understand that you mean 0xEA instead"
Yes, I know that isn't the correct hex value in any code page
isn't jelly's approach more that it just has a flag to read unicode instead of the sbcs, so you can use a unicode representation of a valid sbcs-encoded program
you mean utf-8?
It also fits very well with our standard size counting measure: bytes in the file(s). I can provide a file with bytes 1a 34 f2 07 into the jelly interpreter (no u flag, just as is), and it can interpret that
03:32
That's what any reasonable interpreter does, really
That's more of an "interpreter feature" than a "language feature" though imo
but yeah, the point is so long as the interpreter can take a sequence of bytes it's valid by byte-count - a code page just exists to allow you to map a more representative character set to those 256 bytes
No idea what those bytes do btw :P
It also means that basically all the "How to count bytes in X" posts are all answerable by "Provide a file and an interpreter than understands that file. How many bytes is the file? That is your score"
And answers why we don't have "fractional" byte counts: show me a file with a fractional byte length
@cairdcoinheringaahing it's +E¤ð according to this which i don't think does anything meaningful
That's definitely wrong
03:35
yeah you're right
i think i got trolled by 1-indexing again
f2 doesn't map to ¤, ¤ comes before the ASCII part :P
34 is 4 IIRC
That produces an empty list I believe :P
if you remove the indexing from the first snippet you'll notice that it claims f2 is 259
03:37
yeah i am dumb
Hell, just cut it before the base conversion, it maps 1a to 2,11 :P
@cairdcoinheringaahing Recently there was an answer that claimed to have fractional bytes because it was a function that occupied a certain amount of bits, not a full program. How do you think about it?
in a niladic link, that takes 10000 and evaluates ṗ¬ monadically on it, which is cartesian power of 10000 0 times, so empty-list
@Bubbler It'd have to be padded in some way
Surely the interpreter doesn't accept files with fractional byte counts
03:39
For some reason, Øh (And ØD) both start with 0
in a monadic link, that produces a 10000^x array of 0s
er, no it doesn't
@RedwolfPrograms No, a full program containing it would of course have integer bytes, but the function is just a part of the program
@Bubbler Can you provide for me a file which has a fractional number of bytes? Because even a stand alone function can be saved (but not executed) into a file, right?
Oh huh, that's a good question
so if a function is 5 bits, calling it with 3 more bits would still be a 1-byte program
and calling it with 4 more bits would be a 2-byte program instead
03:40
in a monadic/dyadic link it produces 10000^x length array each element being x 0s
@DLosc there's a few reasons
a) there is serious stigma against golfing languages, since point scoring ebecomes very trivial in easier holes
hmm this sounds familiar
b) there's both bytes and chars scoring, and adding codepage based languages would mean that other (paractical) languages can also choose their codepage
which complicates things a ton
If only there was a real life situation in the sport of golf that we could look to for examples of how to separate things specifically designed to do well and things that like to compete for fun...
Because the last time I played a round of golf, I noticed a clear lack of Tiger Woods' to compete against
c) holes require arbitrary numbers of command line args and ability to read from STDIN, and pip has fully working pre-included functionality(and an active dev)
i did introduce an idea of having golflangs not having points scoring
not sure if it'll go through
03:43
@cairdcoinheringaahing Well, that's a valid argument I guess
I think allowing fractional byte counts for functions is fine in theory, but I don't see anything good that could come from it tbh
a reasonable way to determine scoring is "a file that you can save that you can then either run as a full program or concatenate with other files before/after to run" - not sure if that makes sense, but with tio (+ everything else now)'s header-code-footer structure that could make sense
At least in the particular language, storing it into whole bytes does not change meaning of the function, so it can be indeed written to a file
@Neil interesting. I'll read up on this.
tbh fractional counts but only for fractions becomes somewhat ambiguous IMO cuz what's a function and what's a full program
03:45
ESMin uses fractional bytes and it has to round up
@Bubbler Languages are defined here by implementations. If there's no implementation which agrees with the behaviour you're describing, then either make one, or change your scoring to fit the behaviour
a line of code in jelly is a full program cuz you can run it but it's also a link = a function
But what if storing in such format changes the meaning, so it can't be stored as a file at all?
Also, does it really matter if your code scores half a byte more than what you believe it should be? It's literally less than a single byte, do we have to be so anal about stuff?
I get the need for having clear and fair rules, but if you're arguing about whether something should be 2.666 bytes or 3, maybe find something better to do?
it is pride month after all, I think we should be even more anal
03:48
I'm just talking about possible situations, but yeah, it's kinda meaningless if it doesn't actually arise
(FYI it was not my answer)
att
att
I'm pretty sure Sledgehammer scores rounded up to the nearest byte
and the language in question is Binary Lambda Calculus
oh of course
i thought sledgehammer wasn't fractional
att
att
it's basically a string of bits
but it's padded out to a whole number of bytes
03:50
ah it's padded and then huffman coded right
Sledgehammer has a proper codepage, which (I think) means it is the representation when stored on disk
so it has a well-defined number of bytes
att
att
"If storing in a file, trailing 1s are added to pad to a whole number of bytes."
We need more sledgehammer answers on the site
for that we need more mathematica users
And a proper copy of mathematica costs money
03:52
And for it to be on TIO
eh i guess that as well
CMQ: What should the composition of a binary function and a unary function be? E.g: composing f(x,y) and g(x) could be f(g(x),g(y))
att
att
I'd try learning it but there's already so much other stuff I'm putting off
And running Sledgehammer requires a copy of Mathematica because it is written in it
att
att
that's not an issue for me at least
03:55
@cairdcoinheringaahing So many compositions are possible between the two
Can be f(g(x),y), f(g(x),g(y)), f(x,g(y))
f(x(y),g), obviously
all of which are available in Dyalog APL Extended (though the first one has reverse order of functions)
And g(f(x,y)) is also a valid composition, though it's out of order
Clearly it should be g(f(g(x),g(y))) :P

« first day (3800 days earlier)      last day (1261 days later) »