Wczoraj zostawiłem kanapkę na stole. Kiedy dzisiaj wstałem, poczułam, że coś gryzie ... Czy to było moje? Nie pamiętam ...
Problem:
Zrób reprezentację wzoru kanapki i mojego zgryzu i powiedz, czy to był mój zgryz, czy nie.
Przykłady:
Przykład 1:
Mój wzór ugryzienia:
..
.
Kanapka:
#####
.####
..###
Wynik:
truthy
Przykład 2:
Mój wzór ugryzienia:
..
..
Kanapka:
...##
..###
.####
Wynik:
falsy
Przykład 3:
Jeśli istnieje co najmniej 1 obrót, który liczy się jako prawda, wynik jest prawdziwy.
Mój wzór ugryzienia:
.
.
.
Kanapka:
##.
#.#
.##
Wynik:
Dwie możliwe rotacje (gryzienie w północno-wschodnim lub południowo-zachodnim rogu).
truthy
Niektóre ważne brania:
..
.
...
.
.
.
.
.
..
. .
..
..
.
. .
Niektóre nieprawidłowe brania:
..
...
.
..
.
.
Zasady:
Moja orientacja wzoru ugryzienia będzie zawsze dotyczyła gryzienia północno-zachodniego rogu. I muszą być obracane, aby gryźć inne rogi;
W kanapce zawsze będzie 1 i tylko 1 kęs;
Ugryzienie kanapki może nastąpić w dowolnym z 4 rogów (odpowiednio obróconych);
Wzory zgryzu zawsze będą symetryczne wzdłuż głównej przekątnej;
Wzory zgryzu zawsze będą miały co najmniej 1 szerokość i nie będą puste;
Kanapka zawsze będzie prostokątem o szerokości i wysokości równej lub większej niż szerokość mojego wzoru zgryzu;
W danych wejściowych możesz wybrać dowolne 2 różne znaki niebiałe, aby reprezentować kanapkę i ugryzienie;
Odstępy we wzorze zgryzu oznaczają, że mój zgryz nie dotyka tej części kanapki.
źródło
..
,..
?Odpowiedzi:
Rubinowy ,
103 bajty101 bajtówWypróbuj online!
Zaoszczędzono 2 bajty, przenosząc przypisanie do pierwszego użycia znaku a. Najwyraźniej Ruby jest wystarczająco sprytny, aby nie mylić przecinków w definicji tablicy i przecinków, które powstałyby z jednoczesnego przypisania zmiennych (przynajmniej w tym przypadku: D)
źródło
Python 2 , 134 bajty
Pobiera dane wejściowe jako dwie listy ciągów (po jednej dla każdej linii). Nie zakłada końcowych spacji w liniach.
Wypróbuj online!
Przykłady:
źródło
Python 2, 173 bajtów
Wypróbuj online
Pobiera dane wejściowe jako dwie listy list znaków.
Po pierwsze - kanapka
Po drugie - ugryzienie
Najpierw rozszerza tablicę zgryzów do rozmiaru tablicy kanapkowej:
[y<'.'and'#'or y for y in x]
zastępuje wszystkie spacje, aby#
(L(S[0])-L(x)),b+[[]]*(L(S)-L(b))
obliczyć liczbę brakujących elementówNastępnie porównuje wszystkie 4 obroty tego „przedłużonego” ugryzienia z kanapką:
lambda R służy do tworzenia kopii lustrzanej listy w poziomie
W połączonym przykładzie kanapka to:
A ugryzienie to:
źródło
R=Lambda:map...
i nieR=map...
B=[[y<'.'and'#'or y for y in x]+['#']*(L(S[0])-L(x))for x in b+[[]]*(L(S)-L(b))]
dla -4R=[x[::-1]for x in B]
dla -4. Zasadniczo nie używaj mapy z funkcją lambda