Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #define MAX_LEN 64
- char chars[] = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
- int readLine(char* buffer, FILE* fp) {
- int result = fgets(buffer, MAX_LEN, fp);
- if (result == 0) return 0;
- buffer[strcspn(buffer, "\n")] = 0;
- return result;
- }
- char getSharedChar(char* line) {
- int i, j;
- int lineLength = strlen(line);
- for (i = 0; i < lineLength / 2; i++) {
- for (j = lineLength / 2; j < lineLength; j++) {
- if (line[i] == line[j]) {
- return line[i];
- }
- }
- }
- // It's hecked, lads
- return '';
- }
- char getBadge(char* lineA, char* lineB, char* lineC) {
- int i, j, k;
- int lineALength = strlen(lineA);
- int lineBLength = strlen(lineB);
- int lineCLength = strlen(lineC);
- for (i = 0; i < lineALength; i++) {
- for (j = 0; j < lineBLength; j++) {
- for (k = 0; k < lineCLength; k++) {
- if (lineA[i] == lineB[j] && lineB[j] == lineC[k]) {
- return lineA[i];
- }
- }
- }
- }
- // It's hecked, lads
- return '';
- }
- int getScoreForChar(char c) {
- int i;
- int l = strlen(chars);
- for (i = 0; i < l; i++) {
- if (chars[i] == c) {
- return i+1;
- }
- }
- return -1;
- }
- void doStuff(FILE* fp) {
- char bufferA[MAX_LEN];
- char bufferB[MAX_LEN];
- char bufferC[MAX_LEN];
- char bufferASharedChar;
- char bufferBSharedChar;
- char bufferCSharedChar;
- char badge;
- int cursorAX = 14;
- int cursorAY = 5;
- int cursorBX = 14;
- int cursorBY = 11;
- int partOne = 0;
- int partTwo = 0;
- printf("Items:\n\n\n\n\n\nBadges:\n\n\nPart one:\nPart two:");
- while (readLine(bufferA, fp)) {
- readLine(bufferB, fp);
- readLine(bufferC, fp);
- bufferASharedChar = getSharedChar(bufferA);
- bufferBSharedChar = getSharedChar(bufferB);
- bufferCSharedChar = getSharedChar(bufferC);
- badge = getBadge(bufferA, bufferB, bufferC);
- partOne += getScoreForChar(bufferASharedChar);
- partOne += getScoreForChar(bufferBSharedChar);
- partOne += getScoreForChar(bufferCSharedChar);
- partTwo += getScoreForChar(badge);
- gotoxy(cursorAX, cursorAY);
- printf("%c%c%c", bufferASharedChar, bufferBSharedChar, bufferCSharedChar);
- cursorAX += 3;
- if (cursorAX > 74) {
- cursorAX = 14;
- cursorAY += 1;
- }
- gotoxy(cursorBX, cursorBY);
- printf("%c", badge);
- cursorBX += 1;
- if (cursorBX > 74) {
- cursorBX = 14;
- cursorBY += 1;
- }
- gotoxy(14, 14);
- printf("%d", partOne);
- gotoxy(14, 15);
- printf("%d", partTwo);
- }
- gotoxy(1, 16);
- printf("\n");
- }
- int main(int argc, char **argv) {
- FILE* fp;
- clrscr();
- printf("\n ADVENT OF CODE 2022 / DAY 03\n u/JohnGabrielUK\n\n");
- if (argc != 2) {
- printf("Usage: day3.exe [input file]\n");
- }
- fp = fopen(argv[1], "r");
- if (fp == NULL) {
- perror("Failed to open fail: ");
- return 1;
- }
- doStuff(fp);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement