Son zamanlarda ' Weaver ' ile oynuyorum ve bence kod golf için ilginç bir meydan okuma .
Öncül:
Dokumacı, size 90 derece arayla 2 yönden gelen bir dizi şerit verildiği ve amacınız belirli bir kavşakta istenen bir çıktıyı elde etmek için bunları takas etmektir.
Bunun gibi: Bu bir takas: Bu değil:
Giriş:
3 dizi:
- Üst şeritler (soldan sağa)
- Sol şeritler (yukarıdan aşağıya)
- Takas edilecek kavşakların koordinatları
Çıktı:
2 dizi:
- Alt şeritler (soldan sağa)
- Sağ şeritler (yukarıdan aşağıya)
Örnekler:
Yukarıdaki görüntüyü ilk örnek olarak kullanacağım:
Giriş: [r, y, b], [r, y, b], [(0, 1), (2, 1), (2, 2)]
Ne oluyor:
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
Nerede •
bir takas temsil eder.
Çıktı: [r, b, r], [y, y, b]
Giriş: [a, b, c], [d, e, f], [(0, 0), (2, 1)]
Ne oluyor:
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
Çıktı: [d, f, c], [a, e, b]
Giriş: [a, b], [a, b, c], [(0, 1), (1, 0), (1, 1), (2, 0), (2, 1), (3, 1)]
Ne oluyor:
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
Çıktı: [c, b], [b, a, a]
Notlar:
- Örnekler
(row, column)
sanki onları alabileceğiniz gibi verilen koordinatları gösterir(column, row)
. - Üst sıra ve sol sütun aynı renkte şeritlere sahip olabilir
- Tahta dikdörtgen olabilir
- Tüm koordinatlar negatif değil (
>=0
) (veya>=1
1 dizin oluşturmayı seçerseniz kesinlikle pozitif ( ) olacaktır) - Kartın dışındaki takasları yoksay
- Harf (
[a-zA-Z]
), tamsayılar ([0-9]
) veya her ikisiyle çalışmayı seçebilirsiniz - Çıktınızdaki şeritler girişteki şeritler ile tam olarak eşleşmelidir (
a -> a
) - Takas listesinin tutarlı olduğu sürece istediğiniz şekilde sıralandığını varsayabilirsiniz (eğer yaparsanız, lütfen nasıl sıralanması gerektiğini belirtin)
- Takas koordinatlarını 0 veya 1 dizinli olarak alabilirsiniz
- Varsayılan boşluklar yasaktır
Daha fazla örnek:
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]
Son örnek bu durumla ilgilidir (eğer görselleştirmeyi kolaylaştırırsa):
Bu kod-golf yani her dil için bayt en kısa cevap kazanır.