Це міна укусу?


12

Вчора я залишив свій бутерброд на столі. Коли я сьогодні підвівся, в ньому був укус ... Це було моє? Я не можу згадати ...

Проблема:

Візьміть уявлення про бутерброді та моїй формі укусу і скажіть мені, чи це був мій укус чи ні.

Приклади:

Приклад 1:

Моя схема укусу:

..
.

Сендвіч:

#####
.####
..###

Вихід:

truthy

Приклад 2:

Моя схема укусу:

..
..

Сендвіч:

...##
..###
.####

Вихід:

falsy

Приклад 3:

Якщо є щонайменше 1 обертання, що рахується як простий, то вихідний показник є правдоподібним.

Моя схема укусу:

.
 .
  .

Сендвіч:

##.
#.#
.##

Вихід:

Два можливих обертання (кусання в північно-східному або південно-західному куті).

truthy

Деякі дійсні укуси:

..
.

...
.
.

.
 .
  .

..
. .
 ..

 ..
.
. .

Деякі недійсні укуси:

..

...
.

..
.
 .

Правила:

  • Моя орієнтація на укус завжди буде для кусання північно-західного кута. І потрібно обертати, щоб кусати інші куточки;

  • В бутерброді завжди буде 1 і лише 1 укус;

  • Укус в бутерброд може бути в будь-якому з 4-х рогів (обертається відповідно);

  • Шаблони прикусу завжди будуть симетричними уздовж основної діагоналі;

  • Шаблони укусів завжди будуть принаймні 1 широкими і не порожніми;

  • Бутерброд завжди буде прямокутником із шириною та висотою, рівними або більшими, ніж ширина мого укусу;

  • У своєму вкладі ви можете обрати будь-які два різних символи, що не мають пробілу, щоб представити бутерброд та шматочок;

  • Пробіли в укусі означає, що мій укус не торкається тієї частини сендвіч.


Чи може малюнок укусу бути більшим, ніж сендвіч? Чи може шаблон укусу бути порожнім? Чи може малюнок укусу бути таким же, як і сендвіч? тобто .., ..?
TheLethalCoder

@TheLethalCoder правила кажуть, що шаблон укусу завжди буде відповідати сендвіч. я додам нове правило, щоб вказати мінімальний розмір (1 ширина)
Феліпе Нарді Батіста,

@TheLethalCoder і так, візерунок укусу може бути таким же, як і сендвіч
Феліпе Нарді Батіста,

Відповіді:


2

Ruby , 103 байт 101 байт

->b,s{[a=s.map(&:reverse),s,s.reverse,a.reverse].any?{|t|b.zip(t).all?{|y,x|y==x.tr(?#,' ').rstrip}}}

Спробуйте в Інтернеті!

Збережено 2 байти, перемістивши завдання до першого використання. Мабуть, Ruby досить розумний, щоб не плутати коми у визначенні масиву та коми, які виникли б при одночасному призначенні змінної (принаймні в цьому випадку: D)


2

Пітон 2 , 134 байти

b,s=input()
a=[''.join(l[::-1])for l in s]
print any(b==[l.replace('#',' ').rstrip()for l in x][:len(b)]for x in(a,a[::-1],s[::-1],s))

Вводиться як два списки рядків (по одному для кожного рядка). Передбачає відсутність проміжків пробілів на лініях.

Спробуйте в Інтернеті!

Приклади:

Input: ['..','.'],['#####','.####','..###'] (example 1)
>True

Input: ['..','..'],['...##','..###','.####'] (example 2)
>False

Input: ['',' .'],['#####','#.###','#####'] (no bite in top row)
>True

1

Python 2, 173 байт

Спробуйте в Інтернеті

S,b=input()
L=len
B=map(lambda x:[y<'.'and'#'or y for y in x]+['#']*(L(S[0])-L(x)),b+[[]]*(L(S)-L(b)))
R=map(lambda x:x[::-1],B)
print S==B or S==B[::-1]or S==R[::-1]or S==R

Вводиться як два списки списків символів.
Перший - сендвіч,
Другий - закуска

Спочатку він розширює масив прикусу до розміру сендвіч-масиву:

B=map(lambda x:[y<'.'and'#'or y for y in x]+['#']*(L(S[0])-L(x)),b+[[]]*(L(S)-L(b)))

[y<'.'and'#'or y for y in x]замінює всі пробіли для #
(L(S[0])-L(x)),b+[[]]*(L(S)-L(b))обчислення кількості відсутнього елемента

Потім вона порівнює всі 4 обертання цього "розширеного" укусу з сендвіч:

R=lambda:map(lambda x:x[::-1],B)
print S==B or S==B[::-1]or S==R()or S==R()[::-1]
print any(map(S.__eq__,[B,B[::-1],R(),R()[::-1]])) #longer but pretty

лямбда R використовується для дзеркального відображення списків по горизонталі

У пов'язаному прикладі сендвіч:

##.
#.#
###

І кусається:

.
 .

1
чому R=Lambda:map...і ніR=map...
Феліпе Нарді Батіста

@FelipeNardiBatista Тому що я пропустив це: D Дякую!
Мертвий Поссум

B=[[y<'.'and'#'or y for y in x]+['#']*(L(S[0])-L(x))for x in b+[[]]*(L(S)-L(b))]для -4
ов

І R=[x[::-1]for x in B]для -4 також. Взагалі, не використовуйте карту з лямбда-функцією
ovs
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.