Ostatnio grałem w „ The Weaver ” i myślę, że stanowi to interesujące wyzwanie dla golfa kodowego .
Przesłanka:
Weaver to gra, w której dostajesz wiele wstążek pochodzących z 2 kierunków w odstępie 90 stopni, a Twoim celem jest zamiana ich na określonych skrzyżowaniach, aby osiągnąć pożądany wynik.
W ten sposób: To jest zamiana: To nie jest:
Wejście:
3 tablice:
- Górne wstążki (od lewej do prawej)
- Lewe wstążki (od góry do dołu)
- Współrzędne skrzyżowań do zamiany
Wynik:
2 tablice:
- Dolne wstążki (od lewej do prawej)
- Prawa wstążka (od góry do dołu)
Przykłady:
Użyję powyższego obrazu jako pierwszego przykładu:
Wejście: [r, y, b], [r, y, b], [(0, 1), (2, 1), (2, 2)]
Co się dzieje:
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
Gdzie •
reprezentuje zamianę.
Wynik: [r, b, r], [y, y, b]
Wejście: [a, b, c], [d, e, f], [(0, 0), (2, 1)]
Co się dzieje:
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
Wynik: [d, f, c], [a, e, b]
Wejście: [a, b], [a, b, c], [(0, 1), (1, 0), (1, 1), (2, 0), (2, 1), (3, 1)]
Co się dzieje:
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
Wynik: [c, b], [b, a, a]
Uwagi:
- Przykłady pokazują podane współrzędne, tak
(row, column)
jakbyś mógł je przyjąć(column, row)
. - Górny rząd i lewa kolumna mogą mieć wstążki tego samego koloru
- Tablica może być prostokątna
- Wszystkie współrzędne będą nieujemne (
>=0
) (lub ściśle dodatnie (>=1
), jeśli wybierzesz indeksowanie 1) - Zignoruj wszelkie zamiany znajdujące się poza planszą
- Możesz wybrać pracę z literami (
[a-zA-Z]
), liczbami całkowitymi ([0-9]
) lub obydwoma - Taśmy wyjściowe muszą dokładnie pasować do wstążek na wejściu (
a -> a
) - Możesz założyć, że lista zamian jest posortowana w dowolny sposób, pod warunkiem, że jest spójna (jeśli tak, proszę określić, w jaki sposób powinna być posortowana)
- Możesz przyjąć współrzędne wymiany jako indeksowane 0 lub 1
- Domyślne luki są zabronione
Więcej przykładów:
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]
Ostatni przykład dotyczy tego przypadku (jeśli to ułatwia wizualizację):
To jest golf golfowy, więc wygrywa najkrótsza odpowiedź w bajtach dla każdego języka.