Вызов Кода — Подсчет Квадратов

  • Автор темы GAMEBOY
  • Обновлено
  • 22, Oct 2024
  • #1

Мы все видели картинки с надписью «Сколько квадратов на этом изображении? 98% не поймут это правильно!» Что ж, вот ваш шанс посмеяться над этими 98%.

Вход

Прямоугольный блок, состоящий всего из 2 символов. В общем виде это определяется формулой м строки, каждая из которых содержит н персонажи.

Пример:

 
 
 
 
 
 
 
 Input:

xxx00
xx000

Output: 2 (2)
 

Это может быть представлено как строка, разделенная символом новой строки, массив строк или двумерный массив символов. Любые другие типы ввода следует предлагать в комментариях.

Выход

Результатом будет целое число, представляющее общую сумму квадраты представлены индивидуально оба символы (в псевдокоде num_squares(char1) + num_squares(char2))

А квадрат определяется как набор экземпляров одного и того же символа, которые полностью очерчивают геометрический квадрат с длиной стороны минимум 2. Эти квадраты не обязательно должны быть заполнены символом, который их обрисовывает. Следующие примеры иллюстрируют эту концепцию:

Input: 0000 0000 0000 0000 0000 0000 Output: 26 (34)

Подсчет очков

Ваша программа будет оцениваться по двум критериям в порядке убывания важности:

  • Количество символов в блоке кода, которые не являются частью квадрата, как определено выше (вам следует стремиться свести это число к минимуму!) (Примечание: символы внутри квадрата не считаются автоматически частью этого квадрата) (Примечание 2: символы новой строки не учитываются в этом счете)
  • Количество байтов (вы должны стремиться минимизировать это!)

Второй критерий будет решающим фактором для первого.

Правила конкурса

  • В целях гибкости вы можете использовать любые два буквенно-цифровых символа для замены 0 и x из моих примеров, если они не являются одним и тем же символом.
  • Каждая строка во входном прямоугольнике должна иметь одинаковую длину и не должна содержать никаких символов, кроме 2, указанных для вашего ответа на запрос (кроме символа новой строки, если применимо).
  • Тривиальные квадраты (квадраты 1x1, обозначаемые одним символом) не учитываются при выводе. Они отстой.
  • Ваша программа не должна обрабатывать пустой ввод, но она должна обрабатывать случаи, когда квадраты невозможны (когда один из размеров входного прямоугольника равен 1).
  • Вы также можете указать, что вы обрабатываете квадраты, выровненные по диагонали, если вам нравится эта задача. Это будет добавлено к выходным данным, указанным в спецификациях задачи.

Пример этой концепции:

Input: xxx0x0x000xx0xx0 0x000x00x0x0xx00 00xx0xx00xx0000x x0x0x0x0x00x0xxx 00xx0xxx00xxx0x0 Output: 0 (5)

Тестовые случаи

Ниже приведены некоторые основные тестовые примеры, которым должна соответствовать ваша программа. Значение в скобках — это результат, если вы решите подсчитывать квадраты, выровненные по диагонали.

Input: x00000xxx0 Output: 0 (0)
Input: xxxx x00x x0xx xxxx Output: 2 (2)
Input: 00x00 0x0x0 x000x 0x0x0 00x00 Output: 6 (1 diagonally aligned square of side length 3, 5 diagonally aligned squares of side length 2)
x0 0x // no squares xxx x0x xxx // 1 square of side length 3 0000 0xx0 0xx0 0000 // 1 square of side length 2, 1 square of side length 4
0000xxx 00x00xx 00000xx xxxxx0x

Общие правила

  • Применяются стандартные правила за ваш ответ, поэтому вам разрешено использовать STDIN/STDOUT, функции/метод с соответствующими параметрами и типом возвращаемого значения, полные программы. Ваш звонок.
  • Лазейки по умолчанию запрещены.
  • Если возможно, добавьте ссылку с тестом вашего кода.
  • Настоятельно рекомендуется добавить объяснение вашего ответа.
  • Есть ли у меня вопросы/исправления/советы? Комментарий ниже! Это мой первый вопрос, поэтому я рад узнать из него как можно больше.

#код-вызов

GAMEBOY


Рег
18 Sep, 2006

Тем
76

Постов
194

Баллов
584
  • 26, Oct 2024
  • #2

Perl, 0 символов не в квадратах (25430 байт)

 ##((((((((((((((((((((((((((((((((((((((((((((((
##($$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$(
##($rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr$(
##($r,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,r$(
##($r,$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$,r$(
##($r,$cccccccccccccccccccccccccccccccccccc$,r$(
##($r,$c,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,c$,r$(
##($r,$c,@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@,c$,r$(
##($r,$c,@aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa@,c$,r$(
##($r,$c,@a))))))))))))))))))))))))))))a@,c$,r$(
##($r,$c,@a)==========================)a@,c$,r$(
##($r,$c,@a)=@@@@@@@@@@@@@@@@@@@@@@@@=)a@,c$,r$(
##($r,$c,@a)=@AAAAAAAAAAAAAAAAAAAAAA@=)a@,c$,r$(
##($r,$c,@a)=@ARRRRRRRRRRRRRRRRRRRRA@=)a@,c$,r$(
##($r,$c,@a)=@ARGGGGGGGGGGGGGGGGGGRA@=)a@,c$,r$(
##($r,$c,@a)=@ARGVVVVVVVVVVVVVVVVGRA@=)a@,c$,r$(
##($r,$c,@a)=@ARGV 
 

Speaberealo0


Рег
25 Oct, 2024

Тем
80

Постов
208

Баллов
638
Тем
403,760
Комментарии
400,028
Опыт
2,418,908

Интересно