어제 샌드위치를 테이블 위에 두었습니다. 내가 오늘 일어 났을 때 물린 곳이 있었어 기억이 안나
문제:
샌드위치와 내 물린 패턴을 표현하고 그것이 내 물린 것인지 알려주세요.
예 :
예 1 :
내 물린 패턴 :
..
.
샌드위치:
#####
.####
..###
산출:
truthy
예 2 :
내 물린 패턴 :
..
..
샌드위치:
...##
..###
.####
산출:
falsy
예 3 :
진실로 계산되는 회전이 1 회 이상이면 출력이 진실입니다.
내 물린 패턴 :
.
.
.
샌드위치:
##.
#.#
.##
산출:
두 개의 가능한 회전 (동북 또는 남서쪽 코너에서 물기).
truthy
유효한 물기 :
..
.
...
.
.
.
.
.
..
. .
..
..
.
. .
일부 유효하지 않은 물기 :
..
...
.
..
.
.
규칙 :
-
내 바이트 패턴 방향은 항상 북서쪽 모서리를 물기위한 것입니다. 다른 모서리를 물도록 회전해야합니다.
-
샌드위치에는 항상 1과 1 바이트 만 있습니다.
-
샌드위치의 물린은 4 개의 옥수수 중 하나에있을 수 있습니다 (그에 따라 회전).
-
바이트 패턴은 항상 주 대각선을 따라 대칭입니다.
-
바이트 패턴은 항상 너비가 1 이상이고 비어 있지 않습니다.
-
샌드위치는 항상 너비와 높이가 내 바이트 패턴의 너비와 같거나 큰 직사각형입니다.
-
입력에서 샌드위치와 물기를 나타내는 2 개의 고유 한 공백이 아닌 문자를 선택할 수 있습니다.
-
바이트 패턴의 공백은 내 바이트가 샌드위치의 해당 부분에 닿지 않음을 의미합니다.
답변
루비 , 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}}}
할당을 a의 첫 번째 사용으로 이동하여 2 바이트를 절약했습니다. 분명히 루비는 배열 정의에서 쉼표와 동시 변수 할당에서 발생하는 쉼표를 혼동하지 않을 정도로 똑똑합니다 (적어도이 경우 : D).
답변
파이썬 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
답변
파이썬 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은 목록의 목록을 수평으로 미러링하는 데 사용됩니다
연결된 예제에서 샌드위치는 다음과 같습니다.
##.
#.#
###
그리고 물린은 :
.
.