Вчера я оставил свой бутерброд на столе. Когда я встал сегодня, там был укус ... Это было мое? Я не могу вспомнить ...
Проблема:
Возьмите изображение сэндвича и мой рисунок укуса и скажите мне, был ли это мой укус или нет.
Примеры:
Пример 1:
Мой образец укуса:
..
.
Sandwich:
#####
.####
..###
Выход:
truthy
Пример 2:
Мой образец укуса:
..
..
Sandwich:
...##
..###
.####
Выход:
falsy
Пример 3:
Если есть хотя бы 1 вращение, которое считается правдивым, результат будет правдивым.
Мой образец укуса:
.
.
.
Sandwich:
##.
#.#
.##
Выход:
Два возможных поворота (кусание в северо-восточном или юго-западном углу).
truthy
Некоторые действительные укусы:
..
.
...
.
.
.
.
.
..
. .
..
..
.
. .
Некоторые недействительные укусы:
..
...
.
..
.
.
Правила:
Моя ориентация прикуса всегда будет направлена на то, чтобы кусать северо-западный угол. И должен вращаться, чтобы кусать другие углы;
В сэндвиче всегда будет 1 и только 1 укус;
Укус в бутерброде может быть в любом из 4 углов (повернут соответственно);
Образцы прикуса всегда будут симметричны по главной диагонали;
Шаблоны укусов всегда будут по крайней мере 1 шириной и непустыми;
Сэндвич всегда будет прямоугольником с шириной и высотой, равными или превышающими ширину моего рисунка прикуса;
В качестве входных данных вы можете выбрать любые 2 различных непробельных символа для представления сэндвича и прикуса;
Пробелы в шаблоне укуса означают, что мой укус не касается этой части сэндвича.
источник
..
,..
?Ответы:
Рубин ,
103 байта101 байтаПопробуйте онлайн!
Сохранено 2 байта путем перемещения назначения в первое использование a. Очевидно, Ruby достаточно умен, чтобы не перепутать запятые в определении массива и запятые, которые могут возникнуть при одновременном назначении переменной (по крайней мере, в этом случае: D)
источник
Python 2 , 134 байта
Вводит в виде двух списков строк (по одному для каждой строки). Предполагается, что на линиях нет конечных пробелов.
Попробуйте онлайн!
Примеры:
источник
Python 2, 173 байта
Попробуйте онлайн
Вводит в виде двух списков списков символов.
Первый - бутерброд
Второй - укус
Сначала он расширяет массив укусов до размера сэндвич-массива:
[y<'.'and'#'or y for y in x]
заменяет все пробелы для#
(L(S[0])-L(x)),b+[[]]*(L(S)-L(b))
расчета количества пропущенных элементовЗатем он сравнивает все 4 вращения этого «расширенного» укуса с сэндвичем:
лямбда R используется для зеркального отображения списка списков
В связанном примере бутерброд это:
И укус это:
источник
R=Lambda:map...
и нетR=map...
B=[[y<'.'and'#'or y for y in x]+['#']*(L(S[0])-L(x))for x in b+[[]]*(L(S)-L(b))]
для -4R=[x[::-1]for x in B]
для -4 также. В общем, не используйте карту с лямбда - функции