summary refs log tree commit diff homepage
path: root/2018/day03.c
blob: 0778440bcbee472ddec312eb2492355f589e25bb (plain) (blame)
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#include <stdio.h>
#include <stdlib.h>

typedef unsigned char byte;
typedef unsigned uint;

enum { Len = 1000 };
static byte fabric[Len][Len];

static struct {
	uint x, y, w, h;
} claims[2 * Len];

int main() {
	uint n = 0;
	while (!feof(stdin)) {
		scanf(
			"#%*u @ %u,%u: %ux%u\n",
			&claims[n].x, &claims[n].y, &claims[n].w, &claims[n].h
		);
		for (uint x = 0; x < claims[n].w; ++x) {
			for (uint y = 0; y < claims[n].h; ++y) {
				fabric[claims[n].x + x][claims[n].y + y]++;
			}
		}
		n++;
	}
	uint count = 0;
	for (uint x = 0; x < Len; ++x) {
		for (uint y = 0; y < Len; ++y) {
			if (fabric[x][y] > 1) count++;
		}
	}
	printf("%u\n", count);
	uint i;
	for (i = 0; i < n; ++i) {
		uint overlap = 0;
		for (uint x = 0; x < claims[i].w; ++x) {
			for (uint y = 0; y < claims[i].h; ++y) {
				if (fabric[claims[i].x + x][claims[i].y + y] > 1) overlap = 1;
			}
		}
		if (!overlap) break;
	}
	printf("%u\n", 1 + i);
}
d> 2019-11-09Remove extended-join and invite-notifyJune McEnroe The remaining caps only generate new commands which can easily be filtered out when sending to clients so will be in the first pass of support. extended-join is probably safe to pass through unaltered, just causing extraneous parameters on JOIN commands, but maybe not. invite-notify reuses the INVITE command where the invited user is not self. 2019-11-09Maintain stateCaps and offer them to clientsJune McEnroe 2019-11-09Parse capabilitiesJune McEnroe The list that I've defined are the ones that I expect to be able to enable probably without any clients breaking... And of course server-time which pounce implements itself. 2019-11-09Avoid the reserved _A names with BIT macroJune McEnroe 2019-11-09Define macro for bit flag enumsJune McEnroe 2019-11-08Check that password is hashedJune McEnroe 2019-11-08Avoid calling getopt_long again after it returns -1June McEnroe On GNU, calling getopt_long again will reset optind back to the first non-option argument, which would cause an infinite loop of reading the same configurtion file forever. 2019-11-08Only change AWAY status for registered clientsJune McEnroe Turns out I did eventually fix this, because I may want to implement "passive clients" for logging or notification stuff, which wouldn't affect AWAY status either. 2019-11-07Just write the example normallyJune McEnroe 2019-11-07Include path in readlinkat errorJune McEnroe 2019-11-07Call clientConsume before clientRecvJune McEnroe This might reduce the frequency of a client getting its own message back because it was behind in the ring when it sent it. 2019-11-06Use -l:filename in Linux.mkJune McEnroe 2019-11-06Fix compat.h for #defined strlcpyJune McEnroe 2019-11-06Allow unsetting LIBRESSL_PREFIXJune McEnroe 2019-11-06Document calico service configurationJune McEnroe 2019-11-06Document SASL EXTERNAL configuration in more detailJune McEnroe 2019-11-06Document pounce service configurationJune McEnroe 2019-11-06Mention Darwin and GNU/Linux in READMEJune McEnroe 2019-11-06Assume LibreSSL from brew on DarwinJune McEnroe 2019-11-06Remove -DNO_EXPLICIT_BZERO from Darwin.mkJune McEnroe 2019-11-06Don't install rc scripts or dirs on LinuxJune McEnroe