Saya baru-baru ini bermain melalui ' The Weaver ' dan saya pikir ini menyajikan tantangan yang menarik untuk golf kode .
Tempat:
Weaver adalah gim di mana Anda diberikan sejumlah pita yang datang dari jarak 2 arah 90 derajat dan tujuan Anda adalah menukarnya di persimpangan tertentu untuk mencapai hasil yang diinginkan.
Seperti ini: Ini swap: Ini bukan:
Memasukkan:
3 array:
- Pita atas (kiri ke kanan)
- Pita kiri (atas ke bawah)
- Koordinat persimpangan untuk bertukar
Keluaran:
2 array:
- Pita bawah (kiri ke kanan)
- Pita kanan (atas ke bawah)
Contoh:
Saya akan menggunakan gambar di atas sebagai contoh pertama:
Memasukkan: [r, y, b], [r, y, b], [(0, 1), (2, 1), (2, 2)]
Apa yang terjadi:
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
Dimana •
merupakan swap.
Keluaran: [r, b, r], [y, y, b]
Memasukkan: [a, b, c], [d, e, f], [(0, 0), (2, 1)]
Apa yang terjadi:
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
Keluaran: [d, f, c], [a, e, b]
Memasukkan: [a, b], [a, b, c], [(0, 1), (1, 0), (1, 1), (2, 0), (2, 1), (3, 1)]
Apa yang terjadi:
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
Keluaran: [c, b], [b, a, a]
Catatan:
- Contoh menunjukkan koordinat yang diberikan seolah-
(row, column)
olah Anda dapat mengambilnya sebagai(column, row)
. - Baris atas dan kolom kiri mungkin memiliki pita dengan warna yang sama
- Papan bisa berbentuk persegi panjang
- Semua koordinat akan menjadi non-negatif (
>=0
) (atau sangat positif (>=1
) jika Anda memilih 1-pengindeksan) - Abaikan swap yang ada di luar papan
- Anda dapat memilih untuk bekerja dengan huruf (
[a-zA-Z]
), bilangan bulat ([0-9]
) atau keduanya - Pita dalam output Anda harus cocok dengan pita di input persis (
a -> a
) - Anda dapat mengasumsikan daftar swap disortir dengan cara apa pun yang Anda inginkan, asalkan konsisten (jika ya, sebutkan bagaimana itu harus diurutkan)
- Anda dapat mengambil koordinat swap sebagai 0 atau 1-diindeks
- Celah default dilarang
Lebih banyak contoh:
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]
Contoh terakhir terkait dengan kasus ini (jika itu membuatnya lebih mudah untuk divisualisasikan):
Ini adalah kode-golf sehingga jawaban terpendek dalam byte untuk setiap bahasa menang.