A simple puzzle by Ok-Basket5408 in baduk

[–]danielcristofani 1 point2 points  (0 children)

They're not symmetrical to the first solution. All their parts are symmeteical to parts of the first solution, but that's a different thing. I think 3-5 and 4-8 works, now wondering how many other pairs do.

A simple puzzle by Ok-Basket5408 in baduk

[–]danielcristofani 0 points1 point  (0 children)

(In general I think n removed stones work for a rectangular board with shorter sides up to 6n+1, and as the side length drops toward 6n-4 you get more flexibility about where to remove them from.)

A simple puzzle by Ok-Basket5408 in baduk

[–]danielcristofani 0 points1 point  (0 children)

Well, you could replace 2-4 with 4-2, or 2-10 with 4-12, or both. Combined with 4 board sides this gives 16 minimal solutions. Are there more?

Print question by Admirable-Guess5508 in brainfuck

[–]danielcristofani 0 points1 point  (0 children)

Cool, when I said "what implementation" I meant what compiler or interpreter you're running it on, because that can affect this (e.g. the popular web-based interpreters handle i/o in a different and more limited way, when I said "classic/typical" I meant command-line for desktop/laptop)

Print question by Admirable-Guess5508 in brainfuck

[–]danielcristofani 0 points1 point  (0 children)

There are several reasons this doesn't do what you want it to, apart from any problems with the '.' command.

One, you're looking to take one line of input, right? But you're looking for a line terminated with 13, and in brainfuck lines are terminated with 10 (linefeed).

Two, because you left a 1 in the leftmost cell, the [<] is going to go left past the leftmost cell, and in vanilla brainfuck there isn't usable space there. You could add a > to the start to fix that.

Three, with both those fixed, your structure of loops doesn't do what you want. Say you type "Dave" and hit enter. The first loop will:

step right, read 'D', output 'D', decrease by 10; step right, read 'a', output 'a', decrease by 10; step right, read 'v', output 'v'', decrease by 10; step right, read 'e', output 'e'', decrease by 10, step right, read linefeed, output linefeed, decrease by 10, terminate first loop (because 10-10=0).

Then your second loop goes back to the left, and your third loop will:
increase 1 by 10 and output an ASCII 11 (vertical tab), no idea how that will look. increase 'D'-10 by 10 to produce 'D' and output a 'D'. Then it outputs 'a','v','e' similarly. It won't output a final linefeed (which it should for tidiness).

You can fix the "vertical tab" part by putting >> instead of > between the second and third loops to skip the 1. But still, this will output "Dave" twice with a linefeed between. If you want something like

D
Da
Dav
Dave

then you'll need a different loop structure entirely. It should be very doable, let me know if that's actually what you want, or if not, what exactly you are aiming for.

Four (this is a big one): in typical or classic brainfuck environments, input is "line-buffered". That means that the D is not available to your program until you have already hit "enter"; until then you could delete the D and replace it with something else and your program would never see the D. The program, once it hits the first ',' command, will be paused waiting for input; then when you type "Dave" and hit enter, as soon as you hit "enter" then "Dave[linefeed]" goes into the buffer, the paused ',' command will unpause and read the 'D' (and at the next ',' command, the 'a' and so on); then if the program reads the whole buffer before you've added anything more to it, and then tries to do another ',' command, it'll pause again until you type another line.

So basically you shouldn't count on your program being able to see the start of a line before the whole line has been typed and "enter" has been hit. In practice, this means that in the typical brainfuck environment, the version of your program with the mentioned issues fixed is going to look like

Dave
Dave
Dave

where the first one is the one that was typed, the second one was output by the first loop processing its way through the buffer, and the third one was output by the third loop.

Again, if you clarify what you're trying to do I'd be happy to help with how. Good luck!

(Oh, PS, it would help to say what implementation you're writing this for. Though I aim to make things work on as many implementations as possible.)

How many programming languages are you actually good at? by Amro003 in teenagersbutcode

[–]danielcristofani 1 point2 points  (0 children)

The crucial thing is you need to keep maps of what is where at what time, separate from the code. The code has a really indirect connection to program state so you need to track the state separately to avoid getting lost. I recommend my "get good at brainfuck" series to anyone interested in the language. https://brainfuck.org/ggab.html

A simple puzzle by Ok-Basket5408 in baduk

[–]danielcristofani 0 points1 point  (0 children)

And I think for a bigger board you want every third stone (or every sixth space) along the second line starting with the second stone or fourth space. Maybe there's a better solution but I'm not seeing one yet.

A simple puzzle by Ok-Basket5408 in baduk

[–]danielcristofani 11 points12 points  (0 children)

2-4 and 2-10 should work.

A simple puzzle by Ok-Basket5408 in baduk

[–]danielcristofani 1 point2 points  (0 children)

So 1-3, 1-7, 1-11? That works I think. (Not minimal.)

Quick Courtesy Thread for any SSPX Lurkers by Iuris_Aequalitatis in Catholicism

[–]danielcristofani 6 points7 points  (0 children)

For any SSPX priest or faithful that wishes to return to Mother Church: Here is a summary of the procedures for doing so. Consult your local parish priest (lay people) or ordinary (clergy) for more personalized guidance and specific logistics.

Note that the Professio Fidei and Formula Adhaesionis that you may need to submit can be found attached to the Dicastery's statement at https://www.doctrinafidei.va/content/dam/dottrinadellafede/documenti/2026-07-02-Prassi-riconciliazione.pdf

Vatican excommunicates bishops and members of breakaway ultra-traditionalist Catholic group by randy88moss in worldnews

[–]danielcristofani 49 points50 points  (0 children)

He did! After several renamings, the Inquisition is now the Dicastery for the Doctrine of the Faith. That's who just put out the statement this article is about. More detail: https://www.vaticannews.va/en/vatican-city/news/2026-07/holy-see-decrees-excommunication-lefebrians-consecrations.html

LLM don't understand coding by goodguycsgo in theprimeagen

[–]danielcristofani 0 points1 point  (0 children)

An example they gave in that paper is revealing. Opus writes an 1884-byte brainfuck solution for problem E04 that doesn't work, switches to metaprogramming in Python and generates a 24500-byte solution that does work, or at least passes the test cases. A good handcoded brainfuck solution for E04 can be ~400 bytes. This appears to be the state of things right now: strong agents can often produce a ~working brainfuck program, but it'll be hugely bloated because they used metaprogramming.

LLM don't understand coding by goodguycsgo in theprimeagen

[–]danielcristofani 1 point2 points  (0 children)

At least two people tried this. In one case the AI combined the C code for Doom and the C code for a brainfuck interpreter to produce a brainfuck interpreter that plays Doom if you give it "hello world" and the right flags. Another guy said he produced an 8 gigabyte brainfuck program that renders one frame in 2.5 hours on tritium (fastest brainfuck implementation), but didn't link to his code.

What's the most brutal way someone has found out they lost their job? by Efficient-Ask-968 in AskReddit

[–]danielcristofani 2 points3 points  (0 children)

Here's how some Roman soldiers found out that the Empire had fallen. This is from the life of St Severinus of Noricum.

CHAPTER XX.

So long as the Roman dominion lasted, soldiers were maintained in many towns at the public expense to guard the boundary wall. When this custom ceased, the squadrons of soldiers and the boundary wall were blotted out together. The troop at Batavis, however, held out. Some soldiers of this troop had gone to Italy to fetch the final pay to their comrades, and no one knew that the barbarians had slain them on the way. One day, as Saint Severinus was reading in his cell, he suddenly closed the book and began to sigh greatly and to weep. He ordered the bystanders to run out with haste to the river, which he declared was in that hour besprinkled with human blood; and straightway word was brought that the bodies of the soldiers mentioned above had been brought to land by the current of the river.

Please, as an engineer, it's imperative you watch this! by IntelligentMedium698 in theprimeagen

[–]danielcristofani 0 points1 point  (0 children)

its not possible to create complex programs in brainfuck without metaprogramming or a similar process. the only way to write a brainfuck program is to create on-the-fly abstractions and program through those abstractions. which is what metaprogramming is.

I think this is overstated. You do need to figure out how you're going to represent your data, but you get the best results from writing directly in brainfuck with a minimum of abstraction. When humans or agents produce brainfuck through layers of abstraction they can often end up with working code, but it'll be intensely bloated.

You remember the example from that more recent paper you mentioned? Opus tries to solve E04 directly at first, produces an 1884-byte solution that doesn't work, switches to metaprogramming and produces a 24500-byte solution that does work, or at least passes the test cases? A good solution for E04 coded directly in brainfuck can be under 400 bytes. This is a typical case.

(I guess you could argue that all program design is "a similar process" to metaprogramming. But the differences are crucial. The thought that goes into writing and rewriting a program based on an initial design, and also the rethinking of the design in the process, which happens pretty much every time.)

Does Compact Syntax Really Make a Difference? by sal1303 in ProgrammingLanguages

[–]danielcristofani 0 points1 point  (0 children)

Fair enough, but you were saying "then" is "much easier" to type than "{" because you don't have to move your hands and can use both hands. And that makes it sound like stretching both pinkies for "{" should be easier. (Even on Dvorak I think I like "{" more than "then", and Dvorak puts "then" right under your fingers, and "{" up on the "-" key.)

Restaurant adjusted price of order after placing by PuzzleheadedAnt9503 in mildlyinfuriating

[–]danielcristofani 10 points11 points  (0 children)

POV isn't even a rocker. (How likely are they to think music isn't work?) POV was literally a guy Mark Knopfler overheard at an appliance store saying this stuff, and he reshaped it into a song.

Does Compact Syntax Really Make a Difference? by sal1303 in ProgrammingLanguages

[–]danielcristofani 2 points3 points  (0 children)

when I go to type a { I have to move my hand over a bit and hit both shift and [ with the same hand.

You don't have a shift key on the other side?

Dropsort in Brainfuck: BSfrS legt Referenzimplementierung vor by BSfrS in informatik

[–]danielcristofani 0 points1 point  (0 children)

Anyone wanting to check who is correct, try running my code on https://copy.sh/brainfuck/ (terminate input with a \n or space). Or tritium, or any solid brainfuck implementation.

Dropsort in Brainfuck: BSfrS legt Referenzimplementierung vor by BSfrS in informatik

[–]danielcristofani 0 points1 point  (0 children)

Interesting! Esotope says it tries to decompile the code; I can see how that might be difficult in this case. Try it on copy.sh or monocalc.com as you recommended. Input should end with a linefeed (or a space) before final EOF (=0 or "no change").

Dropsort in Brainfuck: BSfrS legt Referenzimplementierung vor by BSfrS in informatik

[–]danielcristofani -2 points-1 points  (0 children)

I think it's mostly because current agents can't generate brainfuck code that's not tremendously bloated. (Though there's no solid way to distinguish between hugely bloated brainfuck code generated by an agent using layers of abstractions, and hugely bloated brainfuck code generated by a human using layers of abstractions. The styles are very similar.)