나는 최근에 ' The Weaver ' 를 겪어 왔으며 그것이 코드 골프에 대한 흥미로운 도전을 제시한다고 생각합니다 .
전제:
Weaver는 90도 간격으로 2 방향에서 나오는 많은 리본이 제공되는 게임이며 목표는 특정 교차점에서 교체하여 원하는 출력을 얻는 것입니다.
이처럼 : 이것은 스왑입니다 : 이것은 아닙니다 :
입력:
3 개의 배열 :
- 상단 리본 (왼쪽에서 오른쪽)
- 왼쪽 리본 (위에서 아래로)
- 교점의 교점 좌표
산출:
2 개의 배열 :
- 하단 리본 (왼쪽에서 오른쪽으로)
- 오른쪽 리본 (위에서 아래로)
예 :
위의 이미지를 첫 번째 예로 사용하겠습니다.
입력: [r, y, b], [r, y, b], [(0, 1), (2, 1), (2, 2)]
무슨 일이야:
r y b
r y b
r r r r•y y y y
r r b
y y y y y y y y
r r b
b b b b•r r•b b
r b r
r b r
어디 •
스왑을 나타냅니다.
산출: [r, b, r], [y, y, b]
입력: [a, b, c], [d, e, f], [(0, 0), (2, 1)]
무슨 일이야:
a b c
a b c
d d•a a a a a a
d b c
e e e e e e e e
d b c
f f f f•b b b b
d f c
d f c
산출: [d, f, c], [a, e, b]
입력: [a, b], [a, b, c], [(0, 1), (1, 0), (1, 1), (2, 0), (2, 1), (3, 1)]
무슨 일이야:
a b
a b
a a a a•b b
a a
b b•a a•a a
b a
c c•b b•a a
c b
c b
산출: [c, b], [b, a, a]
노트:
- 예제는
(row, column)
마치 로 좌표를 받을 수있는 것처럼 주어진 좌표를 보여줍니다(column, row)
. - 상단 행과 왼쪽 열에 동일한 색상의 리본이있을 수 있습니다
- 보드는 직사각형 일 수 있습니다
- 모든 좌표는 음이 아닌 값 (
>=0
) (또는>=1
1- 인덱싱을 선택한 경우 엄격히 양수 ( ))입니다. - 보드 외부에있는 스왑은 무시하십시오
- 문자 (
[a-zA-Z]
), 정수 ([0-9]
) 또는 둘 다로 작업하도록 선택할 수 있습니다 - 출력의 리본이 입력의 리본과 정확히 일치해야합니다 (
a -> a
) - 스왑 목록이 일관된 한 원하는 방식으로 정렬되어 있다고 가정 할 수 있습니다 (그렇다면 정렬 방법을 지정하십시오).
- 스왑 좌표를 0 또는 1- 인덱스로 사용할 수 있습니다
- 기본 허점 은 금지되어 있습니다
더 많은 예 :
Input:
[b], [r], []
Output:
[b], [r]
Input:
[b], [r], [(0, 0)]
Output:
[r], [b]
Input:
[r, p, y], [r, y, p], [(0, 0), (1, 2), (2, 1), (3, 2)]
Output:
[r, p, y], [r, y, p]
Input:
[b, y, o, r],
[r, o, b, y],
[(0, 0), (2, 0), (3, 2)]
Output:
[b, y, y, r],
[b, o, r, o]
마지막 예는이 경우와 관련이 있습니다 (시각화가 더 쉬운 경우).
이것은 코드 골프 이므로 각 언어에 대한 가장 짧은 바이트 단위의 대답이 이깁니다.