#include #define MAX_LINES 2048 #define MAX_CHARS 2048 int solve(char input[MAX_LINES][MAX_CHARS]) { size_t i=0, j=0; unsigned int width=0, trees_count=0; /* Count lines width */ while (input[0][width] != '\0') width++; while (input[i][0] != '\0') { if (input[i][j] == '#') trees_count++; i += 1; j += 3; if (j >= width) j -= width; } return trees_count; } int main() { char test_input[MAX_LINES][MAX_CHARS] = { "..##.......", "#...#...#..", ".#....#..#.", "..#.#...#.#", ".#...##..#.", "..#.##.....", ".#.#.#....#", ".#........#", "#.##...#...", "#...##....#", ".#..#...#.#", "", }; char input[MAX_LINES][MAX_CHARS] = { ".....##.#.....#........#....##.", "....#...#...#.#.......#........", ".....##.#......#.......#.......", "...##.........#...#............", "........#...#.......#.........#", "..........#......#..#....#....#", "..................#..#..#....##", ".....##...#..#..#..#..#.##.....", "..##.###....#.#.........#......", "#.......#......#......#....##..", ".....#..#.#.......#......#.....", "............#............#.....", "...#.#........#........#.#.##.#", ".#..#...#.....#....##..........", "##..........#...#...#..........", "...........#...###...#.......##", ".#..#............#........#....", "##.#..#.....#.......#.#.#......", ".##.....#....#.#.......#.##....", "..##...........#.......#..##.#.", "##...#.#........#..#...#...#..#", ".#..#........#.#.......#..#...#", ".##.##.##...#.#............##..", "..#.#..###......#..#......#....", ".#..#..#.##.#.##.#.#...........", "...#....#..#.#.#.........#..#..", "......#.#....##.##......#......", "#....#.##.##....#..#...........", "...#.#.#.#..#.#..#.#..#.##.....", "#.....#######.###.##.#.#.#.....", "..#.##.....##......#...#.......", "..#....#..#...##.#..#..#..#..#.", ".............#.##....#.........", ".#....#.##.....#...............", ".#............#....#...#.##....", ".#.....#.##.###.......#..#.....", ".#...#.........#.......#..#....", "..#.#..#.##.......##...........", ".....##..#..#..#..#.##..#.....#", "..##............##...#..#......", "...#..#....#..##.....##..#.#...", "#.....##....#.#.#...#...#..##.#", "#.#..#.........#.##.#...#.#.#..", ".....#.#....##....#............", "#.......#..#.....##..#...#...#.", ".....#.#...#...#..#......#.....", "..##....#.#.#.#.#..#...........", "##..#...#.........#......#...#.", "..#...#.#.#.#..#.#.##..##......", "#............###.....###.......", "..........#...#........###.....", ".......##...#...#...#........#.", ".#..#.##.#.....................", ".#..##........##.##...#.......#", ".......##......#.....#......#..", ".##.#.....#......#......#......", "#...##.#.#...#.#...............", "........#..#...#.##.......#....", "...................#...#...##..", "...#...#.........#.....#..#.#..", ".###..#........#..##.##..#.##..", "#...#.....#.....#.....#..#..#..", "###..#.....#.#.#.#......#....#.", "#........#....##.#...##........", ".#.#..##........##....##.#.#...", "#...#....#.###.#.#.........#...", "...#...##..###.......#.........", "......#....#..##..#.....#.#....", "........#...##...###......##...", "..........##.#.......##........", "...#....#......#...##.....#....", "###.#.....#.#..#..#....#...#..#", ".#.....#.#....#...............#", "..#....#....####....###....#.#.", "....##........#..#.##.#....#...", ".......##...#...#..#....####...", "#...##.#......##...#..#........", "..##..#.##....#.......##.#.#...", "..#.#...............#...#.#....", "....#.....#.#.....#.##.......#.", "...#.#..##.#.#..............##.", "..#.....#...#.............#.##.", "##..#.#...#........#..#.....##.", "...........##...#.#.###...#....", "...#.#.#..#..................#.", ".#...##.............#...#......", "..#..#...#.#.......#...#.....#.", "..##.......#.#.................", ".##..#........###.....#....#.##", "......#..###.......#....##....#", "....#.....#.................#..", "........#...#...#..............", "...#..#.###.......#..#.#.#.##..", "..#...#.....#....#.........#...", "...#.............#........###..", "......#..............#......#..", "#..#...........#...#..........#", "...##...#.###..#...#.....#.#...", "....#..##......#.......##......", "....#....##.#...#.#..#....#...#", ".#...........#..#....##...#..##", "..#.#.................###.#...#", "..#.#.#...##...........#.......", "..........#..##...#.#..##....##", "........#........#.##..#.#...#.", ".....#...##.......##......#...#", "....#...#..#..#.....#..........", ".#..#......#..#..#..###.......#", ".##..........#...#...#.#.....##", "..#..........#.#.#...###.......", "....#................#...##....", ".##..#....#..........#.#.#.....", "..##...#.#........#.....#.##...", "....####.....#..#.........##..#", "......#.........#...#..........", "....#...................#..##..", ".##....#.#.........#....#...#..", "....##...##.....#..####........", "..##.#....#.#.......##...#.....", "#...#.#.#...#..#..##.....#.....", "#..................###.....#...", "#.#.....#.......#.#...###.#....", ".#..#....#............#........", "#.#....#..#.#...............#..", "..#..#..#.............#......#.", "..#.......##...................", ".#....#.........#....#.#.#..#..", "....#....#..#...............#..", "......#..#..##......#.........#", "..#.##........##......#..#..#.#", "#.....#.#....#.........##...#..", "###..............#....###...##.", "....#..##......#.......##......", "......#...#.##......##....#..#.", "..........#....#..##.......#..#", ".#..#...##..#...........#..#..#", ".....#....#...#..###...###....#", ".#####..#...#.#.#..#.#.###...##", "..##............##.#...#.##...#", ".##..#...#...#....##.#..#..##..", ".#....#...#............##..#...", ".#.#......#....#....#..##..##..", ".........#...#.......#.##..#...", "#.........#.....##.....#..#..#.", "...##.#...#...#..#..#....##..##", ".#............#...#....##......", "..#...#.##.........#.#......#.#", "....#.##........#.........#..##", "#.........#......#.#......#..#.", "........#.#.......#.#........#.", "..#..........##.#...#..#.#.....", "..#...#....#...#...#..#.#..#.#.", ".#.........#....#..#####..#....", "#.#....#.#.###...#.............", "..##...........##......##......", "#.....#..#....#...............#", "...#.#..#....##......#...##....", "...#........#.....#...#..#.....", ".#......##.........#......#....", "..#..###.##...#.#.....#........", ".............#......#..#.......", "..#...............#.#...#..#..#", ".......#..#...#.#####......#..#", ".........#.....#...............", "##........#............#.#.....", ".#...#.....#..#..#...#....#...#", "..#....#....##......##.....#.#.", "#...##..##......#...#....#.....", "....#.#.#.....###....##.##....#", "..........##...##.......#......", "..#.......#...##.#....##.##....", "....#........................#.", "...#...#.#.##...#.....#...#..#.", ".#....##..#..#..........##..##.", ".#.....#..#...#.##.....#.......", ".#.##...#.#..#.....##....#...#.", ".##...#........##....#..#......", ".....#........#..........#.#..#", "....#..##.......#..#.....#.....", "...........#...#........#.##..#", ".....#..#....#..#.#.....#....##", ".....#....#.##.#..##...........", "...##.......##.........#.......", "...............##..#....#.#....", ".......###..#........#..####.##", ".......#.##...#.#....#.####....", "....#...............#..........", "##.#.......#.....#......#...#..", "......##.....#....#.....#..#..#", ".....#...##.............#......", "#.#.##.#.....#..#........#.....", "......##....#..#........#......", "............#........#..#.#....", "##.......#......#...####..#.##.", "..##..#...#.............#.##...", ".....#..##......#.##......###..", "............#........#........#", "#.#.#.#...#.#.....#.........#..", ".........#...............#.....", ".............###.#.......#....#", "###.##..#..#..........#....#...", "#......#...#..#..#.....#.##....", "............#....#....#..#.....", "..#.#....#...#......#.#..#..##.", "...#........................#..", "#.#...#..........#......#.#....", ".........#................#...#", "##.....#....#........##.......#", "#...##........#...#...........#", "...#...#..........##.......#.#.", "..#.#.#....#......##...........", "...#.#...#.##.#..#.#.##........", "#....##.....###..#.......#.....", "###.....#.#.#...#..#.........##", "..#......#..###...#.#.#.....#.#", ".#....#.....#............#..##.", "....#....##..........#.....##..", "#...........#....#...#..#...##.", "..#.......#.....#..........#...", ".#..#................#......#..", "..#......#.#...#..#.#....#....#", "...#..#...###..#..##....#.#....", "..#..............#.....#.......", "...#.#...#.........#.#.........", "##......##...........##.#.##..#", "..#..##..#....#.#......#.#...##", "...#.###....###...#.....#......", "#.#................#......#....", "..#.....#.....#....##.......#..", ".#.#...............##..#.......", "...#....#.......#.#.....##..#..", ".........#....#.......#.#...##.", "#....#......##.#.........##...#", "#.............#..##.#.#..##....", "...#....#..#...#....#.#.#.#...#", ".#....#....#..##.....#.#...###.", "##............#.#...##.#..#.#..", "##.#....##.....#..#..###....#..", "##....#................##......", "...##..#...#..###....#.....##..", ".#...##......#..#.#.....#...#..", "..##......##...#.##.......#....", "......#.....#.....##........#.#", "##....#...........#............", "#.......#....#..#.##..##.#..#..", ".#....##.#.....#..#..#.........", ".#....#.#.#...#.....##.....#.#.", ".......##.#.#........#......##.", "##........#.##.......#...#..#..", "...###..##....#.#....#.#.......", "......#.......#...##.....#...#.", "..#......##.#......#.....#.....", ".....#.....###...#.............", "#...#.#...#...#..#......#......", "#.....#.......###.#....###.#...", "...#.......#....####....##..#..", "#.#.....#....#........#.......#", ".........#.......#......#.#...#", "..##....#.....##...............", "..........#..#.#..#......#.....", "..................##...##.#....", "........#.......#...#..#.#.#...", ".....#.#..##..#..#.#..#.......#", ".....#........#..#..#....#....#", "##............#..#..#...#....#.", ".....#....................##..#", "........##.#....###............", "##.......#.##................#.", ".....###.#..#..#...#....###.##.", ".#......#.#....#.....##.#......", "...##......##.........#...#....", "....####..............#........", "#...#.#..##..##.........##.....", "......#......#....#..#.........", "#.....#.....#.##...............", "..#.##..#...##.#.####..#....###", "#..#......#....#.##..##...#.#..", "#....#.......#.....#.....#.#...", "##.......#.....##...#.....#....", "...#...##..........#..##..##..#", ".###..#..##...#....#...#..#....", "......##..###.......###...#....", "....#...#.#.......#.##...##..##", "#.#......#..##.#.#..#..#..#....", "......#........#.......#.......", "..........#.#.....##...........", "......#..#........#..#.#..###..", "##..#.............##..#........", ".........#....#.....#.........#", ".....#..##...#..#..##.##......#", "###..#...........#.......#....#", "...............#....#.#........", ".##.#...#.#........##....#.....", ".##.###...##..###....#...#...#.", ".##..#....#.#.#...#.#.#.#...#..", ".###.#...#.......#....#..#.....", "..#..#.#.#.#........#.....##...", ".#.......#.#...#.#...........##", "...#.....##....#.....##...#....", "................#.....####...#.", ".#.#......#.......##...#.##....", ".###.........#.#......#..#.#...", "#......#...#....#..##.......#..", ".##..#....#..#...........#...#.", ".#...#.......##........#.##....", "..#...........#...##...........", ".....##....##......#....#..#...", "#......#.#...#.##.#...##....#..", "#....................#...##...#", "..#............#........#......", ".............#.........##.....#", "...#...#......##.#...#...#.#...", "..#...#.#.................#....", "....##...#....#...###.##......#", "...#....#...#..#...#....#.....#", "...##.#........#..#.........#..", "..##.....#..##...#.....##...#..", "#.........#.#.#...#......#...#.", "#.#...........#...#..#..#..##..", "..#..#..##....#..........#.###.", ".....#..#....#.#...#...#..#..#.", "###.....#..#.................#.", ".#..##.##.#......#....##..#....", "", }; printf("%d\n", solve(test_input)); printf("%d\n", solve(input)); return 0; }