this post was submitted on 25 Dec 2024
14 points (100.0% liked)

Advent Of Code

920 readers
4 users here now

An unofficial home for the advent of code community on programming.dev!

Advent of Code is an annual Advent calendar of small programming puzzles for a variety of skill sets and skill levels that can be solved in any programming language you like.

AoC 2024

Solution Threads

M T W T F S S
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25

Rules/Guidelines

Relevant Communities

Relevant Links

Credits

Icon base by Lorc under CC BY 3.0 with modifications to add a gradient

console.log('Hello World')

founded 1 year ago
MODERATORS
 

Day 25: Code Chronicle

Megathread guidelines

  • Keep top level comments as only solutions, if you want to say something other than a solution put it in a new post. (replies to comments can be whatever)
  • You can send code in code blocks by using three backticks, the code, and then three backticks or use something such as https://topaz.github.io/paste/ if you prefer sending it through a URL

FAQ

you are viewing a single comment's thread
view the rest of the comments
[โ€“] mykl 4 points 1 week ago* (last edited 1 week ago)

Dart

Quick and dirty, and slightly tipsy, code.

Happy Christmas everyone!

Thanks to Eric and the team at Advent of Code, to @[email protected] and @[email protected] for giving us somewhere to share and discuss our solutions, and to everyone here for the friendly and supportive community.

See you all next year!

import 'package:collection/collection.dart';
import 'package:more/more.dart';

part1(List<String> lines) {
  var (w, h) = (lines.first.length, lines.indexOf(''));
  var (falsey: keys, truthy: locks) = (lines..insert(0, ''))
      .splitBefore((l) => l.isEmpty)
      .map((g) => [
            for (var x in 0.to(w)) [for (var y in 1.to(h + 1)) g[y][x]]
          ])
      .partition((g) => g[0][0] == '#');
  return keys
      .map((l) => locks.count((k) =>
          0.to(w).every((r) => (l[r] + k[r]).count((e) => e == '#') < 8)))
      .sum;
}