« first day (4255 days earlier)      last day (590 days later) » 

12:19 AM
man i hate rust
worst language of all time
 
What did it do
 
did it cause vacuum decay? if not it is not worst language
 
@Ginger ...do you know a language that did cause vacuum decay?
 
yes, Vacuum Decay, I accidentally used it to destroy my home planet and then I had to flee here
Vacuum Decay is worst language
 
is it tc
 
12:31 AM
@Ginger wait a second, how far away was your home planet?
 
we don't know because every time you run a program in it it causes vacuum decay
 
also does it have a free compiler
 
@JoKing well let's see, this happened about 100 of your years ago and my planet was exactly 101.001224 lightyears away
so
this does not bode well for 2023
 
ive seen worse *thjrows back another beer*
 
ಠ_ಠ
 
12:34 AM
@Ginger sounds like a you problem
 
nah, I'll just teleport away after this one goes vacuum decay noise
 
And besides, imagine coming here out of necessity instead of massive amounts of trolling
 
how do you know I didn't just do this to epicly troll the whole fukin universe lyxal
 
we should have sent that eduard khil recording into space on the golden record
as a declaration of intent
 
of what? dying from vacuum decay??
:P
 
12:37 AM
intent to do a little trolling
 
you misunderstand, jony. I am the troller. You, merely the trollee.
lyxal, this is my ultimate revenge for you covering my cats (and me) in peanut butter and destroying my good plastic cup: vacuum-decaying your planet
and all the other planets as well
 
CMegaC:: write a Vacuum Decay interpreter
 
please do not do that
[undefined] bytes:
 
@cairdcoinheringaahing top ten code golf answers with harrowing implications
 
12:41 AM
@cairdcoinheringaahing I guess you're not wrong :p
g2g, enjoy being consumed by high-energy radiation
 
o̶͔̊/̵̡̛͓̒
 
 
1 hour later…
2:05 AM
@thejonymyster Quantum, Plank's number bytes: Decay(Higgs)
 
no tio link?
 
sorry, its too dangerous
 
@thejonymyster Try it Online!
 
so this is how it ends... not with a bang, but with a banger
 
@lyxal almost got me. it was loading long enough for me to see the code :P
 
2:12 AM
 
breaking bad but its about vacuum decay
 
att
a similar approach to what I'd used trying out my last question finally got posted... was getting antsy x)
 
2:32 AM
@thejonymyster kid named death of the universe
 
3:08 AM
I feel like I've been too busy for code-golf lately. Which sucks.
 
if youre busy try a challenge
 
@thejonymyster they're a wizard, not a beaver gosh dang it
is more appropriate
 
they're a wot yeah it sucks to not have time for cool shit. fuck the state of society rn where i cant just golf whenever i feel fit to do so
(genuinely)
 
I just want to hang out in my tower and do math and shit.
6
 
3:29 AM
posted on September 23, 2022 by trichoplax‭

A chequer board (also spelt "checker board" in some places) is an 8 by 8 grid of squares alternating between 2 colours. Check whether a provided pattern could be a region of a chequer board. ...

 
Oct 26, 2021 at 21:58, by caird coinheringaahing
@user F*ck the real world, I have integrals to solve
 
3:52 AM
LDQ: golflang, if i try to index into an array and dont specify an index, what should it default to? im thinking either first element or last element but im not sure which or if theres other good options
like [1, 2, 3, 5, 8][] or something
 
frame challenge, how does your golflang syntax allow you to specify no arguments? :P
 
att
one option is to return the whole array
 
4:07 AM
@att you can do that, by not indexing into it
:P
@UnrelatedString its not terribly golfy <:-) lol
 
att
it's consistent if you allow multiple incides
 
@thejonymyster is there a way to have an empty list in 1 byte/character?
 
depending on how you do multiple indices you could also return the empty list
but yeah for golfing power probably just first or last element
 
@lyxal no, i fail
i hadnt considered multindices hm
 
This is a non-sbcs language right?
 
4:12 AM
hbcs yeah
but token count > bytecount
(in importance)
 
Thought so - make a 1 token way to get an empty list and do something like range(0, length) when indexing with an empty list
Use it as a digraph basically
But a digraph by type overload instead
 
@lyxal so in the jslike example, [5,4,3,2][] => [0,1,2,3]?
 
Yes
 
thats cool, i get the relevance too
indices
 
ahah
that is smart
 
4:16 AM
With hbcs you need to make every command count, so the more you can offload into type overloads the better
@UnrelatedString that's why they pay me the big bucks :p
 
wait so when you say "1 token way to get an empty list" did you mean like, as a digraph?
or am i using an entire one of my 16 nibbles on the empty list :?
 
Well it depends on how you're doing literals
How are you constructing things like numbers and lists?
 
lists im still considering, i was thinking of just using the index thing as also the list creator, same as how js has it :P
this is heavily js inspired because thats basically what im playing with here
 
Basic question: how would I create the number 69420 (so I can get an idea of your approach to literals)
 
this is all still being molded but the current plan is like (in tokens) startliteral digit1 digit2 digit3 digit4 digit5 endliteral
 
4:23 AM
endliteral with no matching startliteral gives empty list
 
#stuff;, where "stuff" is some nibbles corresponding to the correct digits
 
That's how you get your empty list
 
oh yay :-)
ah hm so that now has me thinking instead of having a separate indexing command i should just use a literal number in context
so [4,3,2]0 => 4
much to think about
 
Well generally speaking, you would be giving it a number anyway
 
of course
 
4:26 AM
Because in any golfing language, you don't want to have to spend two bytes on indexing into a list
You only want to use one
 
yeah
total sense there :D
 
The empty list idea still works though
 
definitely agree
too cool not to anyway
 
And a list with items in it can act as a slice or a multi-dimensional index
 
thats scary but ill try my best :P
i just gotta figure out what exactly i wanna do with the nibble i just freed up :think:
#deletingcode
tyvm
 
 
2 hours later…
6:25 AM
@Neil thank you!
 
7:02 AM
I've finally implemented the feature to allow you to cancel the running program on ATO! staging.ato.pxeger.com/…
(you may need to hard-refresh to update the frontend)
 
nice
so i have to click the button twice?
 
on firefox it's Ctrl+Shift+R
 
i meant the kill button
 
Do you? You shouldn't have to
 
No, you just have to wait a bit to press kill
 
7:07 AM
oh i see
yeah
 
Yeah the button appears before the connection is established, but you can't press it until after it's established
 
ok
 
I could change it so the button doesn't even appear when it's not ready
 
Why not just cancel the connection if it's not established?
 
@pxeger what is next on the todo, make it stream stdout live?
 
7:08 AM
First I need to fix stdout and stderr size limiting
 
ok
 
@emanresuA I'm not sure if that will work reliably, I'll have to see
 
@PyGamer0 Bubbler has found that very hard
 
@emanresuA why?
 
Bubbler's site runs entirely in the client though, doesn't it?
there's no server
so I think it would be fairly different
 
7:09 AM
IIRC bubbler was experimenting with live output from a server at some point
 
@Seggan i would say no then
 
Maybe I'm getting it mixed up tho
 
@PyGamer0 Actually if it streams stdout live then I wouldn't need a stdout/stderr size limit
 
@pxeger why?
 
I thing Radvylf had that or was trying to implement that for RTO
 
7:11 AM
@pxeger yes
 
@PyGamer0 the size limit is mainly to prevent exhaustion of memory on the server because the stdout/stderr output is saved in memory
up to 60 seconds' worth of output could be many gigabytes
 
though it is true that even streaming within the client is wack
@pxeger that... would hang the client badly
 
@pxeger runs ais' fizzbuzz
 
@Bubbler but then at least it's not my problem ;)
 
also mobile data fees
 
7:13 AM
IIRC the only reason TIO had an output size limit was to prevent the client side being fucked
so I'll probably keep it
 
DSO crashes the client if you run an infinite loop, which I should probably fix. Web workers = pain tho
 
7:31 AM
@pxeger Output size limit is good, I crashed the rust playground a few times with too big outputs
like the tab froze and became very hard to close
 
ooh, I could make it configurable
 
oooh
 
I don't see a reason not to have some limit in the UI but maybe for the API since it can handle much bigger data
 
@pxeger Is it possible to compile ATO's frontend to static html/css/js files?
 
Yes, that's how it already runs
cd frontend; npm run build
 
7:33 AM
Oh okay cool
 
Isn't that how every website works?
 
ATO uses Next.js which is designed primarily to use with a server that renders HTML on the fly
 
There are some that do weird webpack chunking things / etc
 
I'd still consider that static js
just so you don't need to load it all at once
you can though
 
It wouldn't be static, it'd be dynamically generated by a node.js server
 
7:34 AM
^
 
@emanresuA well, and also fonts and images
 
fair enough, I've been working with SPAs so much I forgot other sites exist
 
@graffe i solved aoc1 in C!
 
8:00 AM
@PyGamer0 very impressive! Now you just need to golf it :)
 
8:13 AM
ok :P
 
(or do question 2 :) )
 
i am golfing it :p
codeberg is not loading quickly
 
8:43 AM
#include <stdio.h>
typedef int I;
#define F(n,a...)for(I i=0;i<n;i++){a;}
#define P(x)printf("%d\n",x);
#define N 2000
main(){FILE*f=fopen("in.txt","r");I a[N],g[N-1],w[N-3],s=0;F(N,fscanf(f,"%d",&a[i]));F(N-1,g[i]=a[i]<a[i+1]);F(N-1,s+=g[i]);P(s);s=1;F(N-3,w[i]=a[i]+a[i+1]+a[i+2]);F(N-3,g[i]=w[i]<w[i+1]);F(N-3,s+=g[i]);P(s);}
@graffe golfed
 
9:08 AM
@PyGamer0 cool!
 
new favourite word: whosesoever
 
 
2 hours later…
10:45 AM
 
yes
hmmm
 
11:34 AM
Can somebody help me with this sql query, I'm trying to find Vyxal answers with exactly 1 λ?
select id as [Post Link], body from posts where body like '%Vyxal</a>,%' and len(body)-len(REPLACE(body,'λ',''))=1;
 
11:50 AM
s=input()
h="$\\mathtt{"
j=0
for i in s:
 if   i==" ":h+="\\;"
 elif i=="$":
  if j:h+="\\mathtt{"
  else:h+="}"
  j=not j
 else:h+=i
h+="}$"
print(h)
CMC: Guess what the code above does.
 
@PyGamer0 Is this converting $$ notation in latex to using \mathtt
But seems it would fail if you use the big equation syntax with $$12$$
 
@mathcat weird, I can't even find answers with at least 1 λ - I tried select id as [Post Link], body from posts where body like '%Vyxal</a>,%λ%' (hoping to be able to add ` and body not like '%λ%λ%';`)
 
that's weird
There at least has to be one use of lambda, right
It isn't very uncommon in Vyxal.
 
12:06 PM
don't you have to go through character codes on sede
 
wdym?
 
consider that even if you checked for only one lambda, the explanation will have that lambda again
3 times depending on explanation style
2
A: Permutapalindromic numbers

lyxalVyxal, 10 bytes λSṖ'Ṙ⌊=}ȯt Try it Online! You say any test case presented in the challenge should pass in under a minute? All test cases presented in the challenge pass in under 30 seconds. That's what I call gaming (no doubt the other answers do too though lol). Explained λSṖ'Ṙ⌊=}ȯt λ }ȯ ...

an example of an answer that should be included
 
ah right
 
note the 3 instances of λ
 
like there's some function you have to give an integer instead of just using unicode in string literals
 
12:15 PM
Ah, N'λ' works fine
and why are charcoal answers being detected as vyxal answers? (select id as [Post Link], body from posts where body like '%Vyxal</a>,%' and len(body)-len(REPLACE(body,N'λ',''))=2 or len(body)-len(REPLACE(body,N'λ',''))>3;)
 
my first guess is that itd be that or binding looser
but idk any query langs or why thatd be
 
oh I'll try brackets
 
just makes sense since like vyxal & cond | cond
only one way for that to mess up and not look for vyxal
@mathcat i always bracket all logic cause i never trust it to go the way i want :P
 
working now, thanks!
 
^_^
@mathcat out of curiosity, what is inspiring you to search this specific query?
 
12:31 PM
@mathcat 70 answers
Filtered using python
 
12:52 PM
@mousetail yes it would fail :(
 
1:04 PM
@pxeger RTO has live output, yeah. By accident, but it turned out to be nice
 
bug feature joke
cant think of the phrasing use your imagination
excited for all these new tio sites
 
ATO: Features cause bugs
RTO: Bugs cause features
 
lol brand warfare
 
1:37 PM
@RadvylfPrograms RTO: features cause non-existence :)
 
*grabs popcorn*
 
Feedback on this?

https://codegolf.meta.stackexchange.com/a/25137/91213

or this

https://codegolf.meta.stackexchange.com/a/25126/91213
 
2:27 PM
@PyGamer0 i will wait 4 more days before posting this
 
ayo @Ginger I found a challenge you might like
32
Q: Build a mob of suspiciously happy lenny faces ( ͡° ͜ʖ ͡°)

CarcigenicateI was going through a bizarre thread on Reddit, and came across this: ( ͡°( ͡° ͜ʖ( ͡° ͜ʖ ͡°)ʖ ͡°) ͡°) It's representing a group of people smiling somewhat suspiciously. (In the challenge below though, spaces to the left of the right eyes were dropped somehow while I was writing the challenge. ...

 
2:46 PM
@mousetail the guard one reminds me of something...
 
Was something similar posted before?
 
no
just i read once of a prison design that proposes the same thing
 
Yea I know the circular prisons
I realized a prison doesn't actually need to be convex to be mathamatically valid
 
anyone know how to made a list of prefixes in a functional way?
ive got (take-while identity (iterate butlast x)) but it doesnt work on infinite lists and returns the biggest prefix first
 
@Seggan (map reverse (scan cons [] x))
 
3:01 PM
ive got
(defn prefixes [x]
  (take-while identity
              ((fn p [prev n]
                 (if (seq n)
                   (let [np (lazy-cat prev [(first n)])]
                     (lazy-seq (cons np (p np (rest n)))))
                   nil)) [] x)))
@WheatWizard clojure has no scan
 
3:21 PM
First challenge in months
Hopefully I didn't forget how to write challenges
 
3:32 PM
1
Q: Carryless factors

Radvylf ProgramsCarryless multiplication is an operation similar to binary long multiplication, but with XOR instead of addition: 1011 11 × 101 5 ----- 1011 0 1011 ------ 100111 39 In this challenge, you'll be given a positive integer >= 2, and must return a list of a;; positive integers whi...

 
4:06 PM
anyone know how to use pandas?
 
like order of operations?
 
4:25 PM
@lyxal thanks, but how did you do it?
@thejonymyster I wanted to check how common it is to use two lambdas in Vyxal (don't ask me why, it's a secret :P)
 
so you can reduce lambda definition syntax to not require a name?
 
5:10 PM
@Seggan Here's an implementation in Appleseed that does essentially the same thing as Wheat Wizard's solution but using recursion instead of scan:
(def prefixes
  (lambda (ls (backwards-prefix nil))
    (cons (reverse backwards-prefix)
      (if (nil? ls)
        nil
        (prefixes
          (tail ls)
          (cons (head ls) backwards-prefix))))))
It's tail recursive as long as the language supports tail recursion modulo cons, or if you have lazy lists (which Appleseed does).
IDK how well it translates to Clojure.
 
5:25 PM
in Quro, 7 mins ago, by mathcat
Are there any uses for multiple stacks, I didn't find any.
 
Maybe if you want to do some involved calculations with a value that's deeper in the stack. I think Factor has something like that, where you can shift several of the top values to another stack, do some calculations, and then shift them back. OTOH, maybe that's not exactly what you meant by multiple stacks, since the second stack just stores values, you can't do anything over there.
If your language is low-level enough, it may need multiple stacks to be Turing-complete, but I think any stack-based golflang is going to have the builtins to be Turing-complete even with only one stack.
 
Yeah, having a second stack is handy for juggling multiple values when you're actually using the stack for storage, but IME stack-based is usually just used as a variant of postfix in golfing languages
 
5:40 PM
@DLosc ty
 
LDQ: If subtract is given more than two arguments, is a - b - c - d or a - b + c - d more useful?
(Second one is alternating sum)
 
Are you ever going to apply this to a list, or are you specifying all the arguments when you call it?
 
alt sum seems incredibly useful considering that the other option has a probably obvious way to apply it instead
 
@thejonymyster That's what I thought at first, but then I realized it's just left fold vs right fold.
 
@DLosc Not necessarily, right? With an odd list length I think it'd behave differently
 
5:50 PM
Although if you're trying to implement them without folding, I suppose the left one is simpler because you sum the tail and then subtract that from the head
 
@RadvylfPrograms Wait no
 
@RadvylfPrograms ;)
 
@DLosc There's going to be a splat operator which could apply it to an arbitrary list
 
Then I'm conflicted. Alternating sum of a list is more useful, but a - b - c - d is more intuitive.
 
Now here's where it gets more fun: division
 
5:52 PM
my vote remains unchanged :-)
^^ probably a third unrelated thing
 
I don't think either behavior is particularly useful for division
 
^
 
exactly lol
 
Possibly product of all but the last item, divided by the last
 
just do ring translate or whatever else division related
 
5:54 PM
So you could do divide(...[x, y, 2]) to divide x * y by 2, for example
I think it'd make sense for divide(...[x]) to be x though, so maybe I'll just do alternating sum but with division
For consistency's sake
 
I think the way Scheme does it makes the most sense. But if you're trying to squeeze more functionality in at the expense of intuitiveness, IDK.
 
F consistency
 
@thejonymyster Consistency often means pretty mathematical relationships tho
 
^
 
How'd that be useful in a golflang?
 
5:57 PM
It really wouldn't be
But I can't think of any that would
 
@mathcat ¯\_(ツ)_/¯
@RadvylfPrograms Do you have the ability to fold on subtraction/division?
 
It will depend on the language, I'm working on shorispo, a library I'll use for multiple golflangs
 
If so, that's an argument in favor of making the multi-argument behavior something different than either left fold or right fold.
 
whats that
 
@RadvylfPrograms The latter is more mathematically accurate IMO
 
6:02 PM
@cairdcoinheringaahing How so? I'd say the former is more accurate, given that subtraction is left-associative.
 
I'd expect subtraction of a list to be a - (b - (c - d))) = a - b + c - d
But I guess that's all personal expectation
 
I love Rust
 
LDQ: In a language with numbers, characters, and mixed-element-type lists, what's the most intuitive ordering for different types? For example, what should be the result of sorting [2, 200, [], [5,6], [[4]], 'A'] in ascending order?
For comparison: Python 2 gives [2, 200, [], [5, 6], [[4]], 'A'], while BQN gives ⟨⟨⟩ 2 ⟨ ⟨ 4 ⟩ ⟩ ⟨ 5 6 ⟩ 200 'A'⟩.
 
@DLosc hmm what paradigm is ur lang
 
sort the types alphabetically by the name of the type
 
6:14 PM
@Seggan Functional, with some array programming features.
 
have you checked out how functional langs do it?
 
@Seggan Well, Haskell doesn't support mixed-type lists. Let me see how Scheme does it...
 
@DLosc group by type, sort each group, then flatten?
 
@pxeger but what order do you put the type groups
 
the order they're in in the input
 
6:18 PM
@pxeger Implementation-wise, I need to have a consistent ordering between any two values.
 
Ah
Is 'A' a character, or a length-one string?
 
whats the difference
 
and do you have strings separate to lists?
 
@thejonymyster c++ is the difference
 
@mathcat no, thats post increment, difference is with -
 
6:19 PM
I think pxegers solution is the best
@thejonymyster nerd
 
well pxeger only answered the example, not the actual issue :P
so natural question:
@DLosc why? (asking because noob)
 
@mathcat no because it makes sense to need a consistent global ordering
 
@pxeger 'A' is a character; strings are lists of characters.
 
Ok nice
I'd say probably chars < numbers < lists
 
@thejonymyster I'm writing it in Haskell and I want to make my Value type an instance of the Ord typeclass. Another benefit of doing so is that I can use Values as hashmap keys, which will make it easier to implement stuff like Group and Unique.
 
6:21 PM
cool!
@DLosc are you able to create new types in this lang?
 
@thejonymyster No; it's a golflang, and sadly golflangs don't have much need for user-defined types.
 
lol i figured
i just think if you do have custom types, ordering by type name isnt entirely unreasonable :P
but yea no, best to go with what leads to golfier solutions (hard)
 
I'm not sure there's any (reliable) golfing benefit from choosing one order over another... I just have to pick one so I can implement it. Thus why I asked what's most intuitive.
 
aha ⍝
 
APL is an impostor
 
6:25 PM
@Seggan Near as I can tell, Scheme doesn't have a built-in function that can compare any two values. Also, its sort function seems to take a comparison function as an argument. :P
 
oof
i tried clojure
no work
 
@DLosc It seems very intuitive to me to have lists be greater than single values. So that 1 < [1] < [[1]] , [[[1]]], and also 1 < [] < [1] < [1, 1] < [1, 1, 1] seems kind intuitive
The only question is whether characters should be smaller or larger than numbers
I put chars before ints before but actually it could make sense to put them in between numbers and lists, because they're finite on both ends so you can check types by comparing against null or char 0x10ffff
 
@DLosc IMO when you compare a list and a non-list, you should use the result of the comparison of the non-list item and the first item in the list where the comparison isn't 0
E.g., 1 < [1, 2, 3] while 2 > [1, 2, 3]
 
What about the empty list then?
is that what you meant by "where the comparison isn't 0"?
 
Empty list would be of equal value to any non-list it's compared to
 
6:33 PM
but then 0 == [] and 1 == [] but 0 != 1 which is not good
 
I'd say that comparing a non-list to a list should always result the same as comparing a singleton list to that list (e.g. 1 < [1,2,3] == [1] < [1,2,3])
 
especially if you want to instantiate Haskell Eq
 
== and x cmp y == 0 are not and should not be the same
 
Aside from equality
 
@RadvylfPrograms why and why?
 
6:34 PM
Actually...that's a good question. I guess my reason is that it's inconsistent with the way I like cmp to work :p
And "are not" because most languages' equality is more complicated, like JS and stuff considering lists to not be equal
 
Now I think about it Haskell's Eq and Ord's Ordering.EQ are separate, and I'm not sure if there is a law that says they're supposed to act the same
I'd assume there is but there might not be
class Eq a => Ord a where
so there must be
 
@RadvylfPrograms This is the distinction between a partial and total ordering.
Haskell's Ord requires a total ordering, which is something people have actually been complaining about for a long time.
 
 
1 hour later…
8:02 PM
Yeah, I was thinking about that vis-a-vis Husk, and how Any is a numeric value that compares EQ to any numeric value except +/- infinity. This causes some odd results for functions such as uniquify.
 
8:27 PM
nice
thats just bad implementation tbh
"lets have a value that compares equal to any other value! also, lets have our uniquify function just be a reduce from left to right :-)"
or not a reduce but yknow
 
Both make some amount of sense on their own, but the combination causes problems.
 
for sure
otoh what would be the "correct" result for uniquifying with any
 
That's where I was thinking it might be nice for == and compare to be different. You could have Any `compare` 1 be EQ while still having Any == 1 be False. That probably causes other problems, though.
 
I don't know, uniquify does output two lists which have unique items.
I guess the list with more items is better.
 
I think the result should be [1, 2, 3, Any]. If Any represents "any number," then it could be 1 or 20 or 14006. Although it compares equal to every number, it's distinct from all of them.
 
8:39 PM
I think that's definitely a bad result.
[1,2,3] is unique for any value of the Any while [1, 2, 3, Any] is only unique for some.
But honestly I really think the inclusion of Any in the first place is the mistake here. Transitivity of equality is a pretty fundamental constraint that is being violated.
 
@WheatWizard Hmm, interesting. Maybe we're coming at it from different directions: I'm thinking "remove duplicate items," while it sounds like you're thinking "create a list where all the items are different."
@WheatWizard Yeah, that's probably fair.
The part that really bugs me is that Any is not equal to Inf or -Inf.
 
Yeah, IEEE sort of floating point logic there.
 
8:57 PM
@pxeger Hmm, interesting. My initial thought was chars before numbers because there's a finite number of chars... not that that's a terribly compelling reason. I am going to have +/- infinity (eventually), so that weakens the type-checking argument: you could type-check by comparing against the infinities if it were char < number < list.
 
9:22 PM
Huh, I must be doing something wrong. Any comparison between values of different types is coming up LT. :P
Oh, I see it.
 
 
2 hours later…
11:02 PM
I think I'll get a pretty good score on Numbers vs. Strings when I answer it in Pip--I'm having a hard time even writing a solution for the numbers part! Once I do get one written, it's gonna be long. :P
 
looking forward to seeing something finally beat jelly, and in the other direction :P
 
@UnrelatedString Ooh, I don't know if I can score above 2, though. The string solution in Pip isn't exactly short either, due to a lack of "pairs of adjacent characters" builtin.
 
I'm thinking it'll be somewhere in the ballpark of 30-something bytes for numbers vs 18 bytes for strings.
 
@lyxal HELL YES
time to write a makina answer :p
 
11:39 PM
@mathcat SEDE + a little python
I don't have the script with me at the moment (mobile xd) but I'll put it in a gist later
 

« first day (4255 days earlier)      last day (590 days later) »