You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

44 lines
1.0KB

  1. //
  2. // Created by red on 08/12/19.
  3. //
  4. #include <stdio.h>
  5. #include <stdlib.h>
  6. #include <string.h>
  7. int main(int argv, char** argc) {
  8. char* filename = argc[1];
  9. FILE* f = fopen(filename, "r");
  10. char buffer[15001];
  11. fscanf(f, "%s", buffer);
  12. char final[150];
  13. memset((void*) final, '2', 150*sizeof(char));
  14. int min_0s = 150;
  15. int checksum = 0;
  16. for (size_t layer = 0; layer < 100; layer++) {
  17. int num_0s = 0;
  18. int num_1s = 0;
  19. int num_2s = 0;
  20. for (size_t i = 0; i < 150; i++) {
  21. char c = buffer[layer*150 + i];
  22. switch (c) {
  23. case '0': num_0s++; break;
  24. case '1': num_1s++; break;
  25. case '2': num_2s++; break;
  26. default: break;
  27. }
  28. if (final[i] == '2' && c != '2') final[i] = c;
  29. }
  30. if (num_0s < min_0s) {
  31. min_0s = num_0s;
  32. checksum = num_1s * num_2s;
  33. }
  34. }
  35. printf("Smallest no. of 0s found: %d, checksum: %d\n", min_0s, checksum);
  36. for (size_t i = 0; i < 150; i++) {
  37. printf("%c", final[i]);
  38. if (i % 25 == 24) {
  39. puts("");
  40. }
  41. }
  42. }