Программа на C, чтобы найти цвет сверху - PullRequest
0 голосов
/ 25 сентября 2019

Я пытаюсь создать программу, которая найдет цвет «флешки» сверху;каждая ячейка одного из 8 цветов (цвета в ссылке).Каждая часть имеет уникальный цвет, и на вершине стопки будет ровно 1 часть.Все остальные части будут перекрывать по крайней мере одну часть.

Ограничения:

1 - каждая часть состоит из горизонтальных и вертикальных линий одного цвета

2 - нетвсе детали имеют одинаковое количество горизонтальных и вертикальных линий

3 - все горизонтальные и вертикальные линии в детали имеют одинаковую длину, 25-45 пикселей.

4 - длина горизонтальной линии деталейне обязательно совпадает с длиной его вертикальной линии

5 - никакие параллельные линии не смежны с любыми другими линиями в той же части или других частях

6 - каждая строка / столбец имеет не более одногогоризонтальная / вертикальная линия.

7 - никакие горизонтальные линии не перекрывают другие горизонтальные линии, и никакие вертикальные линии не перекрывают другие вертикальные линии.

8 - если строка содержит горизонтальную линию, строка непосредственно над нейи ниже не будет содержать горизонтальную линию.если строка содержит вертикальную линию, строка справа и слева не будет содержать вертикальную линию.

9 - строки касаются только на ортогональных пересечениях, и никакие линии не касаются границ изображения.

Я не уверен, как начать эту программу, потому что я не буду использовать массив 64x64, вместо этого я будуработа с массивом 1x1024, содержащим всю информацию о цвете.

This program loads a pile and finds the color of the topmost piece. */

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[]) {
   int               PileInts[1024];
   int               NumInts, TopColor=0;
   int  Load_Mem(char *, int *);
   // This allows you to access the pixels (individual bytes)
   // as byte array accesses (e.g., Pile[25] gives pixel 25):
   char *Pile = (char *)PileInts;

   if (argc != 2) {
     printf("usage: ./P1-1 valuefile\n");
     exit(1);
   }
   NumInts = Load_Mem(argv[1], PileInts);
   if (NumInts != 1024) {
      printf("valuefiles must contain 1024 entries\n");
      exit(1);
   }

    /* 
       Code goes here, do not change above or below coding. 
    */


   printf("The topmost part color is: %d\n", TopColor);
   exit(0);
}

Для справки, вот пример: https://imgur.com/a/GPuULzV - для этого примера, ручка сверху будет 6 (желтый = 6).

Полезная информация:

Целое число, загруженное в индекс 0 PileInts, представляет (0,0), (0,1), (0,2) и (0,3).Каждые 8 ​​бит представляют цвет.Может быть, это поможет кому-то здесь, так как это мне совсем не поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...