Gần đây tôi đã chơi qua ' Người thợ dệt ' và tôi nghĩ rằng đây là một thử thách thú vị cho môn đánh gôn .
Tiền đề:
Weaver là một trò chơi trong đó bạn được cung cấp một số dải băng đến từ 2 hướng cách nhau 90 độ và mục tiêu của bạn là hoán đổi chúng tại các giao lộ nhất định để đạt được đầu ra mong muốn.
Giống như thế này: Đây là một trao đổi: Đây không phải là:
Đầu vào:
3 mảng:
- Dải băng trên cùng (trái sang phải)
- Ruy băng trái (từ trên xuống dưới)
- Các tọa độ của các giao điểm để trao đổi
Đầu ra:
2 mảng:
- Dải băng dưới cùng (trái sang phải)
- Ruy băng bên phải (từ trên xuống dưới)
Ví dụ:
Tôi sẽ sử dụng hình ảnh trên làm ví dụ đầu tiên:
Đầu vào: [r, y, b], [r, y, b], [(0, 1), (2, 1), (2, 2)]
Điều gì xảy ra:
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
Trường hợp •
đại diện cho một trao đổi.
Đầu ra: [r, b, r], [y, y, b]
Đầu vào: [a, b, c], [d, e, f], [(0, 0), (2, 1)]
Điều gì xảy ra:
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
Đầu ra: [d, f, c], [a, e, b]
Đầu vào: [a, b], [a, b, c], [(0, 1), (1, 0), (1, 1), (2, 0), (2, 1), (3, 1)]
Điều gì xảy ra:
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
Đầu ra: [c, b], [b, a, a]
Ghi chú:
- Các ví dụ hiển thị tọa độ được đưa ra như
(row, column)
thể bạn có thể lấy chúng làm(column, row)
. - Hàng trên cùng và cột bên trái có thể có dải băng cùng màu
- Bảng có thể là hình chữ nhật
- Tất cả các tọa độ sẽ không âm (
>=0
) (hoặc hoàn toàn dương (>=1
) nếu bạn chọn lập chỉ mục 1) - Bỏ qua bất kỳ giao dịch hoán đổi bên ngoài bảng
- Bạn có thể chọn làm việc với các chữ cái (
[a-zA-Z]
), số nguyên ([0-9]
) hoặc cả hai - Các dải băng trong đầu ra của bạn phải khớp với các dải băng trong đầu vào chính xác (
a -> a
) - Bạn có thể giả sử danh sách các giao dịch hoán đổi được sắp xếp theo bất kỳ cách nào bạn muốn, miễn là nó phù hợp (nếu bạn làm như vậy, vui lòng chỉ định cách sắp xếp nó)
- Bạn có thể lấy tọa độ hoán đổi là 0 hoặc 1 chỉ mục
- Các lỗ hổng mặc định bị cấm
Ví dụ khác:
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]
Ví dụ cuối cùng liên quan đến trường hợp này (nếu điều đó giúp dễ hình dung hơn):
Đây là môn đánh gôn, vì vậy câu trả lời ngắn nhất tính bằng byte cho mỗi ngôn ngữ sẽ thắng.