Я пытаюсь создать программу, которая найдет цвет «флешки» сверху;каждая ячейка одного из 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 бит представляют цвет.Может быть, это поможет кому-то здесь, так как это мне совсем не поможет.