|
|
@@ -0,0 +1,46 @@ |
|
|
|
// |
|
|
|
// Created by red on 08/12/19. |
|
|
|
// |
|
|
|
|
|
|
|
#include <stdio.h> |
|
|
|
#include <stdlib.h> |
|
|
|
#include <string.h> |
|
|
|
|
|
|
|
int main(int argv, char** argc) { |
|
|
|
char* filename = argc[1]; |
|
|
|
FILE* f = fopen(filename, "r"); |
|
|
|
char buffer[15001]; |
|
|
|
char final[150]; |
|
|
|
memset((void*) final, '2', 150*sizeof(char)); |
|
|
|
fscanf(f, "%s", buffer); |
|
|
|
int min_0s = 150; |
|
|
|
int no_1s = 0; |
|
|
|
int no_2s = 0; |
|
|
|
for (size_t layer = 0; layer < 100; layer++) { |
|
|
|
int num_0s = 0; |
|
|
|
int num_1s = 0; |
|
|
|
int num_2s = 0; |
|
|
|
for (size_t i = 0; i < 150; i++) { |
|
|
|
char c = buffer[layer*150 + i]; |
|
|
|
switch (c) { |
|
|
|
case '0': num_0s++; break; |
|
|
|
case '1': num_1s++; break; |
|
|
|
case '2': num_2s++; break; |
|
|
|
default: break; |
|
|
|
} |
|
|
|
if (final[i] == '2' && c != '2') final[i] = c; |
|
|
|
} |
|
|
|
if (num_0s < min_0s) { |
|
|
|
min_0s = num_0s; |
|
|
|
no_1s = num_1s; |
|
|
|
no_2s = num_2s; |
|
|
|
} |
|
|
|
} |
|
|
|
printf("Smallest no. of 0s found: %d, checksum: %d\n", min_0s, no_1s*no_2s); |
|
|
|
for (size_t i = 0; i < 150; i++) { |
|
|
|
printf("%c", final[i]); |
|
|
|
if (i % 25 == 24) { |
|
|
|
puts(""); |
|
|
|
} |
|
|
|
} |
|
|
|
} |