The advantage of that last approach is that it has side effects and cannot therefore be optimized out by the compiler.
That’s only one advantage. In theory it does not necessarily terminate, so that’s another one.
For a time on Reddit (some years ago when I still used it) there was a trend of finding the worst way of implementing
is_even(x: int) -> bool. My contribution to that was a function that ranAckerman(x,x)flipping a Boolean at every iteration, and check if it was true or false at the end.It works btw, I will find the proof later
I would love to see the implementaion.
The implementation is not very exciting, I capture a variable in python. It could have been done more cleanly.

The proof is this. But, I could have made mistakes, it was many years ago.

Note that in python you’ll never be able to run
is_even(5)the stack cannot handle itEdit: daaaamn, that variable is ugly as hell. I would never do things like that now.
That’s , uh…
Yeah. Cooler than anything I could’ve achieved for purposefully bad is_even
My first idea of a purposefully bad is_even is this:
def is_even(i): return True if i == 0 else not is_even(abs(i)-1)But I’m sure I could come up with worse given enough time.
That’s also slower than most of the stuff you could come up with, it is so slow that there is no hyperoperation fast enough to describe it. There were other approaches that were almost worse though, like “the function is a switch-case that returns false by default. As complaint tickets are opened, more cases get added to the switch-case”
the function is a switch-case that returns false by default. As complaint tickets are opened, more cases get added to the switch-case”
Oh if that is acceptable, then my secondary idea of using an API call for this should work too. I thought that it would have to be guaranteed to be correct (as long as you don’t reach a stack overflow or something)
It never occurred to me that you could assign fields to a function. I mean, it totally makes sense considering that functions are objects in Python. It just never occurred to me that this is a thing one can do. Crazy.
Please don’t do that, I was stupid when I wrote that. But still, in very dynamic languages like python or js everything is an object, including functions, so you can just do object stuff on them.
I wasn’t going to, and after I saw it it totally makes sense that it’s possible, it just never occurred to me.
I guess this could be used like static variables inside functions in c. So scope-limited global variables. Not a good design choice in most cases.
The compiler will optimize it anyway. /s
You jest, but you aren’t wrong. At least if we are talking about C, C++ or Rust. https://godbolt.org/z/oPPfdfcf5
.NET compiler is weak when it comes to optimizing your code; I assume Go’s is as bad.
Technically yes… But I think he was more making the excuse for the gore “from the goresmith’s perspective.”
And I’m not sure if the compiler in any language would change a random check function… The others are a possibility.
Not sure about the last one though. The other two are trivial to optimize away.
An infinite loop canot be ruled out in the last case, so a compiler couldn’t optimize this away without potentially changing the program behavior.
Infinite loops are often weird though. They could be seen as undefined behavior and the compiler may do whatever it feels like.
How could an infinite loop be considered UB?
Even though this isn’t C, but if we take from the C11 draft §6.8.5 point 6 (https://www.open-std.org/jtc1/sc22/wg14/www/docs/n1570.pdf):
An iteration statement whose controlling expression is not a constant expression, that performs no input/output operations, does not access volatile objects, and performs no synchronization or atomic operations in its body, controlling expression, or (in the case of a for statement) its expression-3, may be assumed by the implementation to terminate
“new Random().nextInt()” might perform I/O though so it could still be defined behavior. Or the compiler does not assume this assumption.
But an aggressive compiler could realize the loop would not terminate if x does not become 10 so x must be 10 because the loop can be assumed to terminate.
How about
x=x-x
x++
x++
x++
x++
x++
x++
x++
x++
x++
x++
Freshman year of college doing assembly programming, I spent a while figuring out a “programmic” way to solve a problem, trying to wrangle labels and gotos. My friend came in with essentially this but as lookup table. It blew my mind.
It was then that I learned to trade space for complexity.
This is actually a valid brainf*ck program, but it results in 19, not 10.
How so? It’s only 10 increments
Because the only brainfuck instructions in your comment where a
-which decrements and 20+, each of which increments.
Mine echos the first two characters from stdin, because of the commas and dots.it’s been a long time since i looked at brainfuck, but i suspect that ‘+’ denotes an increment, and ‘-’ denotes a decrement, so we’ve got one decrement and 20 increments.
Make sure you initialize x with
x=x/x-x/xfor better precisionWhat if it’s already 0?
Just add
// @TODO find out why this crashes our application sometimesto fix that issue
That’s not even enough to get you a job these days.
You now have to use:do { x = reinterpret_cast<int>(AI::Instance().ask("Do Something. Anything. Be efficient and productive. Use 10 tokens.")); } while (x != 10);This isn’t just a function, it’s a bold restatement of what it means to write code — a symphony of characters, questioning the very nature of the cutting edge language models that I want to beat with hammers.
And for those who might not have noticed
There is 10 words in the prompt.
You’re absolutely right! I used more than 10 words in my prompt. Cry about it.
You’re absolutely right! Who sets a variable these days without running it though a LLM?
Great question!
First, we’ll deep dive into “What is a variable?”, then together we’ll examine “Who sets a variable?”, “What is an LLM?” and finally, “Who would set a variable without using an LLM?”
You’ll be a coding pro in no time!
How does that sound?
(I felt gross writing this lmao)
I once was helping to organize the testing of town-level algorithmic competition for school students.
The competition had one entry level issue that was basically solvable by reading the question properly, recognising that it’s just multiplication of two numbers, and writing the simplest app ever.
And there was one student who passed the automatic tests. We had to read the code too for the protocol, just to make sure there was no cheating.
We looked in the code. What? Why? It had two nested for loops and a++ inside. When we understood what’s going on we couldn’t stop laughing for like solid ten minutes.
Multiplication is just repeated addition :) glad it worked for the kid, despite the… inefficiency.
What is the value of x in the Good example before the loop?
Doesn’t matter, it’s 10 after the loop.
An int. Value doesn’t matter because it’s overwritten.
4
It would get you promoted at Twitter, where lines of code is the productivity metric.
If only I could measure the quality of my paper purely by word count…
I thought “a a a a a a” x100000 was thought-provoking and well tested.
Probably Microsoft: You’re hired! Go work on GitHub
I’d say Meta hiring someone to work on WhatsApp. Man, is that piece of software crap… Every update, a new UI bug/glitch appears
Oddly enough, out of all of these the one the compiler has the best chance of optimizing out is the last one
Not if Random writes to global state, that’s a side effect that must be preserved
What?
First one is optimized obvious.
Second one optimizes to x = 10 via constant propagation.
Third one first unrolls the loop, propagates constants including booleans, and then eliminates dead code to arrive at x = 10.
The last one cannot be optimized as “new” created objects that get used, nextInt() changes the state of those objects, and the global state of the random number system is impacted.
deleted by creator
Wants to be Pro but doesn’t even do it recursive…
x = (function(){ return 10 })Or something like that
Something like
int *a = new int(10) Int*b = null While *b !=10 { b = rand(); a=new int(10)} Return *bI haven’t coded recently enough in c/c++ to remember syntax but the concept might work eventually if you’re lucky and have enough memory… Might need a time variant seed on the rand()…
Is this typescript?
Could be Java.
Seems like normal js?
Js is Math.Random. and NextInt() is a java method.
bad but more chaotic
you want to be punk rock not blues or jazz












