Plus, natural languages are not necessarily spoken nor heard; sign language is gestured (signed) and seen and many, mutually-incompatible sign languages have arisen over just the last few hundred years. Is this just me being pedantic or does Moro not address them at all in their book?
Forgejo has their own runner: https://forgejo.org/docs/latest/admin/actions/runner-installation/
I've used it on my personal machine, was very easy to setup and mostly compatible with GitHub actions out-of-the-box (including things like actions/checkout@v4).
I dunno if you're referencing The Fable of the Dragon Tyrant or if you just happened to have a similar train of thought as it's author.
big jug hot cheese
oooooh, where can I go to get scrombled? I always loved fondue....
Then there's kids like me, who would daydream about actually being a fae changeling.
It's not even as if my parents didn't love me, I was just a weird kid who was more comfortable being weird than fitting in.
A Europe of sovereign regions, sounds great. A Europe of multinational corporations that uses the free market to enact a race to the bottom of quality of life just to ensure greater profits, please no.
There's a reason many of the "far left" (read: actual socdem, not milquetoast neolib) political parties here are more wont to evoke leaving the EU, even those that despise Putin.
I wonder when those people started using reddit. I started in 2012 and it already felt like a completely different (and generally worse) experience several times over before the great API fiasco.

Oh god, reddit is now turning comments into links to search for other comments and posts that include the same terms or phrases.
"Chatgpt, how can I turn this into another reason to complain about rust?"
(Browser-based) Javascript
I got lazy and lucky writing the first part; hard-coded the number of lines / operands and it worked on the first try! I didn't factor in the final block not being padded by spaces on both sides for part 2, and so needed to test on the example code – which has 3 lines of operands instead of the problem input's 4 lines, so I had to properly solve the problem across all possible amounts of lines of input 😩.
I am very jealous of all y'all who have a transpose function available in your language of choice.
Code
function part1(inputText) {
const [firstArgs, secondArgs, thirdArgs, fourthArgs, operators] = inputText.trim().split('\n').map(line => line.trim().split(/\s+/));
let totalSum = 0;
for (let i = 0; i < firstArgs.length; i++) {
if (operators[i] === '+') {
totalSum += Number.parseInt(firstArgs[i], 10) + Number.parseInt(secondArgs[i], 10) + Number.parseInt(thirdArgs[i], 10) + Number.parseInt(fourthArgs[i], 10);
} else if (operators[i] === '*') {
totalSum += Number.parseInt(firstArgs[i], 10) * Number.parseInt(secondArgs[i], 10) * Number.parseInt(thirdArgs[i], 10) * Number.parseInt(fourthArgs[i], 10);
}
}
return totalSum
}
{
const start = performance.now();
const result = part1(document.body.textContent);
const end = performance.now();
console.info({
day: 6,
part: 1,
time: end - start,
result
})
}
function part2(inputText) {
const lines = inputText.trimEnd().split('\n');
const interBlockIndices = [];
for (let i = 0; i < lines[0].length; i++) {
let allEmpty = true;
for (let j = 0; j < lines.length; j++) {
if (lines[j][i] !== ' ') {
allEmpty = false;
break;
}
}
if (allEmpty) {
interBlockIndices.push(i);
}
}
interBlockIndices.push(lines[0].length);
let totalSum = 0;
let blockStart = 0;
for (const interBlockIndex of interBlockIndices) {
// compute calculation of block [blockStart, interBlockIndex - 1]
const operands = [];
for (let i = interBlockIndex - 1; i >= blockStart; i--) {
// parse operands
let operand = 0;
for (let j = 0; j < lines.length - 1; j++) {
if (lines[j][i] !== ' ') {
operand *= 10;
operand += Number.parseInt(lines[j][i], 10);
}
}
operands.push(operand)
}
if (lines.at(-1)[blockStart] === '+') {
totalSum += operands.reduce((accu, next) => accu + next, 0);
} else if (lines.at(-1)[blockStart] === '*') {
totalSum += operands.reduce((accu, next) => accu * next, 1);
}
// console.debug({ totalSum, operands, blockStart, interBlockIndex });
blockStart = interBlockIndex + 1;
}
return totalSum;
}
{
const example = `123 328 51 64
45 64 387 23
6 98 215 314
* + * +
`;
const start = performance.now();
const result = part2(document.body.textContent);
// const result = part2(example);
const end = performance.now();
console.info({
day: 6,
part: 2,
time: end - start,
result
})
}
Good ; free trade should not come at the expense of regulations on food quality nor worker protections. It's a shame this only happened in conjunction with farmers currently protesting a culling mandate, and not when the EU-Mercosur signing was initially planned/proposed.
I dislike yaml as much as the next person, but you can always "just" write ~~Jason~~ JSON (lol autocorrect). Unless I'm misunderstanding your criticism?