[-] swlabr@awful.systems 3 points 4 hours ago

Understandable, have a nice day

[-] swlabr@awful.systems 3 points 11 hours ago

ok discoIt took me too long to read the prompt and see that without the shortcuts, it's a single path. I wasted too much time on search algorithms.

P1: Here's what I did: Walk the path. Every time you hit a new grid, check if the two shortcuts you can take will save you 100 ps.

To calculate the shortcut saving:

If you index every grid position on the main path from 0, then it takes X ps to reach position X, The time it takes to travel from start to X, then a shortcut to Y, then from Y to the end, is X + 1 + (main path length - Y). The time saved is then just Y - X - 1, modulo maybe like 5 fence post errors.

P2. The prompt wasn't really clear about whether or not cheating meant you can only travel through one set of walls before your cheat ends, or if it meant you could just move through walls for 20ps to wherever you could reach. Turns out, it's the latter.

The above formula is then a special case of Y - X - manhattan distance(X, Y).

[-] swlabr@awful.systems 3 points 14 hours ago

20: currently a WIP but:

memeWait, so it’s all grids? 🧑🏿‍🚀🔫🧑🏿‍🚀

[-] swlabr@awful.systems 3 points 1 day ago* (last edited 1 day ago)

Day 19! (the cuervo gold....)

disc and codeOk so my path to this answer was circuitous and I now hate myself a little.

P1: Ok, a repeated dfs on suffixes. that shouldn't be too hard. (it was not hard)

P2: Ok, a repeated dfs is a little too slow for me, I wonder how I can speed it up?

forgets about memoisation, a thing that you can do to speed this sort of thing up

I guess the problem is I'm doing an O(mn) match (where m is the number of towels, n is the max towel length) when I can do O(n). I'll build a prefix tree!

one prefix tree later

Ok that still seems to be quite slow. What am I doing wrong?

remembers that memoisation exists

Oh I just need to memoise my dp from part 1. Oops.

Anyway posting the code because I shrunk it down to like two semicolons worth of lines.

(

List<String> input = getLines();
Set<String> ts = Set.from(input.first.split(', '));
Map<String, int> dp = {};

int dpm(String s) => dp.putIfAbsent(
    s,
    () => s.isNotEmpty
        ? ts
            .where((t) => t.matchAsPrefix(s) != null)
            .map((t) => dpm(s.substring(t.length)))
            .fold(0, (a, b) => a + b)
        : 1);

void d19(bool sub) {
  print(input
      .skip(2)
      .map((s) => dpm(s))
      .map((i) => sub
          ? i
          : i > 0
              ? 1
              : 0)
      .reduce((a, b) => a + b));
}

[-] swlabr@awful.systems 4 points 1 day ago* (last edited 1 day ago)

gilding the lily a bit but

[-] swlabr@awful.systems 2 points 2 days ago

yesWhat is this, day 16?

[-] swlabr@awful.systems 10 points 3 days ago

Does a sealion have bootlicker nature? Ugh.

[-] swlabr@awful.systems 14 points 3 days ago

Please, señor software engineer was my father. Call me Bob.

[-] swlabr@awful.systems 3 points 3 days ago* (last edited 3 days ago)

17!

p1 discussionSimultaneously very fun and also the fucking worst.

Fun: Ooooh, I get to simulate a computer, exciting!

Worst: Literally 8 edge cases where fucking up even just one can fuck up your hour.

p2 discussionI did this by hand. sort of. I mean I didn't code up something that found the answer.

Basically I looked at the program in the input and wrote it out, and realised that A was essentially a loop variable, where the number of iterations was the number of octal digits A would take to represent. The most significant octal digits (octits?) would determine the tail end of the output sequence, so to find the smallest A you can do a DFS starting from the MS octit. I did this by hand.

EDIT: code. Not gonna explain any of it.

class Comp {
  List<int> reg;
  List<int> prog;
  int ip = 0;

  List<int> output = [];
  late List<(int, bool) Function()> ops;

  int get combo => prog[ip + 1] < 4 ? prog[ip + 1] : reg[prog[ip + 1] - 4];

  Comp(this.reg, this.prog) {
    ops = [
      () => (reg[0] = (reg[0] >> combo), false),
      () => (reg[1] ^= prog[ip + 1], false),
      () => (reg[1] = combo % 8, false),
      () => (reg[0] != 0) ? (ip = prog[ip + 1], true) : (0, false),
      () => (reg[1] ^= reg[2], false),
      () {
        output.add(combo % 8);
        return (0, false);
      },
      () => (reg[1] = (reg[0] >> combo), false),
      () => (reg[2] = (reg[0] >> combo), false)
    ];
  }

  compute() {
    output.clear();
    while (ip < prog.length) {
      if (!ops[prog[ip]]().$2) {
        ip += 2;
      }
    }
  }

  reset(int A) {
    ip = 0;
    reg[0] = A;
    reg[1] = 0;
    reg[2] = 0;
  }
}

void d17(bool sub) {
  List<String> input = getLines();
  Comp c = Comp(
      input.take(3).map((s) => s.split(" ").last).map(int.parse).toList(),
      input.last.split(" ").last.split(",").map(int.parse).toList())
    ..compute();
  print("Part a: ${c.output.join(",")}");

  if (!sub) return;

  List<int> sols = [];
  bool dfs(int cur) {
    bool found = false;
    sols.add(cur);
    int sol = sols.reduce((a, b) => 8 * a + b);
    c..reset(sol)..compute();
    if (c.prog
        .whereIndexed((i, e) => i >= c.prog.length - c.output.length)
        .foldIndexed(true, (i, p, e) => p && c.output[i] == e)) {
      if (found = c.output.length == c.prog.length) {
        print("Part b: $sol");
      } else {
        for (int i = 0; i < 8 && !(found = found || dfs(i)); i++) {}
      }
    }

    sols.removeLast();
    return found;
  }

  for (int a = 0; a < 8 && !dfs(a); a++) {}
}

[-] swlabr@awful.systems 4 points 4 days ago

16!

p1I used A*, though mathematically I would have been fine with Dijkstra's. Also, here's how I remember how to spell Dijkstra: ijk is in alphabetical order.

p2If you've implemented path/back tracking on a search algo before, this wasn't too bad, though instead of tracking best parent you need to track equivalently best parents. Woke AOC trying to normalise families with more than two parents, SMH

[-] swlabr@awful.systems 9 points 5 days ago

Oh yeah to be clear: I also find this kind of reporting to be disingenuous and disgusting.

[-] swlabr@awful.systems 60 points 6 days ago

NBC/the media really killing it with painting him as a self-radicalised spook.

14
14
submitted 1 week ago* (last edited 1 week ago) by swlabr@awful.systems to c/techtakes@awful.systems

original link

“If all of this sounds like a libertarian fever dream, I hear you. But as these markets rise, legacy media will continue to slide into irrelevance.”

49
19
submitted 1 week ago* (last edited 1 week ago) by swlabr@awful.systems to c/sneerclub@awful.systems

Abstracted abstract:

Frontier models are increasingly trained and deployed as autonomous agents, which significantly increases their potential for risks. One particular safety concern is that AI agents might covertly pursue misaligned goals, hiding their true capabilities and objectives – also known as scheming. We study whether models have the capability to scheme in pursuit of a goal that we provide in-context and instruct the model to strongly follow. We evaluate frontier models on a suite of six agentic evaluations where models are instructed to pursue goals and are placed in environments that incentivize scheming.

I saw this posted here a moment ago and reported it*, and it looks to have been purged. I am reposting it to allow us to sneer at it.

*

57
34

Didn’t see this news posted but please link previous correspondence if I missed it.

https://archive.is/XwbY0

15

This is somewhat tangential to the usual fare here but I decided to make a post because why not.

I’ve been listening to the back catalog of the Judge John Hodgman podcast, and this ep came up. This ep is the second crypto based case after “crypto facto” in ep 333.

John Hodgman is a comedian, probs best known for being the “I’m a PC” guy in the “I’m a Mac” ad campaign from ancient times. In the podcast, he plays a fake judge that hears cases and makes judgements. In this ep, “Suing for Soul Custody,” he hears a case in which a husband wants to sell his soul on the blockchain, while his wife does not want him to do that.

Some good sneers against the crypto bro husband (in both this case and the other I linked). Brief spoilers as to the rulings in case you don’t want to listen:

333Judge rules that the husband should continue to mine ETH until his rig burns down his house.

556Judge rules that the guy shouldn’t sell his soul, for symbolic reasons.

Note: I like John Hodgman. He’s funny. He’s not really inside the tech space, but he is good friends with Jonathan Coulton, who is. If all you know of him is the “I’m a PC” ads, he has an entertaining wider catalogue worth checking out.

43

On the hottest and coldest days, when demand for electricity peaks and the price rockets, the bitcoin miners either sell power back to providers at a profit or stop mining for a fee, paid by ercot. Doing so has become more lucrative than mining itself. In August of 2023 Riot collected $32m from curtailing mining and just $8.6m from selling bitcoin.

Archive link: https://archive.md/O8Cz9

61

Kind of sharing this because the headline is a little sensationalist and makes it sound like MS is hard right (they are, but not like this) and anti-EU.

I mean, they probably are! Especially if it means MS is barred from monopolies and vertical integration.

13
submitted 5 months ago* (last edited 5 months ago) by swlabr@awful.systems to c/meta@awful.systems

Wish I had a screengrab of this, but occasionally when I open the awful.systems page, it looks like I've logged in as a different user. Just now the username "autumnal" appeared instead of my own. Don't know how to reproduce.

This has happened in chrome on macosx a few times, haven't seen it elsewhere.

22
VoughtCoin (the-boys.fandom.com)

TIL that television program “The Boys” has an in universe cryptocurrency as a satire of, well, cryptocurrency in general but also specifically that time when DJT was selling NFTs. They occasionally tweet about it.

It has a listing on the “BSCScan” crypto tracker under the name “VTC” so someone might have actually minted it? It might surprise some of you that I have no way of telling the realness of such a thing.

213
submitted 6 months ago* (last edited 6 months ago) by swlabr@awful.systems to c/sneerclub@awful.systems

Uncritically sharing this article with naive hope. Is this just PR for a game? Probably. Indies deserve as much free press as possible though.

view more: next ›

swlabr

joined 1 year ago