Этот вопрос вдохновлен и является обратным этому .
Деннис ( E
), Дверная ручка ( D
), Мартин ( M
) и Крис ( C
) заказали пиццу. Прямоугольная пицца разделена на квадратные кусочки, каждый из которых обозначен своим предполагаемым едоком.
Напишите программу или функцию, которая для прямоугольной пиццы, состоящей из 0 или более букв, определяет:
Каждый срез для каждого человека связан с путем . Это означает, что все одинаковые буквы должны быть непосредственно смежными друг с другом (без диагональных связей).
Количество ломтиков на человека одинаково для всех.
Вы должны вывести истинное / ложное значение с дополнительным завершающим переводом строки, который указывает, является ли данная пицца справедливой.
Допустимые тестовые случаи:
DDDDDDDDDDDDMCCCCCCCCCCC
DEEEEEEEEEEDMMMMMMMCCCCC
DEEEEEEEEEEDMMMCCCCCCCCC
DEEEEEEEEEEDMMMMMMMMCCCC
DDDDDDDDDDDDMMMMMMMMMMMC
DEMC
DD
EE
MC
MC
EEDDMMMCCC
EEEDDDMMCC
Неверные тестовые случаи:
EDM
EDMCCMDE
DDDDDDDDDDDDMCCCCCCCCCCC
DEEEEEEEEEEDMMMMMMMCCCCC
DEEEEEEEEEEMDMMCCCCCCCCC
DEEEEEEEEEEDMMMMMMMMCCCC
DDDDDDDDDDDDMMMMMMMMMMMC
DDMMEECC
DMMEECCC
Самый короткий код в байтах побеждает.
DDDDDDDDDDDDD
<-Ответы:
Pyth, 53 байта
демонстрация
По сути, это заливка для каждой буквы с последующей проверкой того, что все полученные наборы имеют соответствующий размер.
Чтобы выполнить заливку, он начинается с самого верхнего левого вхождения каждой буквы, затем генерирует всех соседей найденных местоположений, фильтрует местоположения с правильной буквой и повторяется до тех пор, пока набор не перестанет меняться.
источник
Улитки , 129
1 за справедливую пиццу и 0 за несправедливую пиццу.
Расширенная версия:
&
означает, что шаблон должен совпадать во всех местах на сетке. Первая строка проверяет одинаковое число каждого из E, D, M, C. Она использует инструкцию телепортацииt
, которая является отличным способом создания программ с факторной сложностью. Если вход имеет срезы неравного размера с несколькими единицами измерения для каждого из 4 модов, программа будет зависать более или менее навсегда. После этого выполняется проверка непрерывного пути к верхнему левому экземпляру любой буквы, с которой начинается шаблон.источник
CJam, 93
Попробуйте онлайн
Это смехотворно долго, потому что CJam (пока) не имеет встроенного потока-заполнения или объединения-поиска. Я реализовал union-find в программе.
Объяснение:
источник
JavaScript (ES6), 153
166Используя строки шаблона, есть новая строка, которая является существенной и учитывается
Попробуйте запустить фрагмент в FireFox.
источник
Javascript ES6, 360
Проверяет наличие одинаковых чисел C, D, E, M, затем заливает заливки и проверяет наличие осиротевших букв. Не победитель, но я должен был попробовать.
скрипка
источник
JavaScript ES6,
328318316269178Объяснение:
источник
l=>{...}
это нормально.k=(o)=>
чтобы сохранить еще 2 байта. Функции стрелок с одним параметром не нуждаются в скобках.