Bu zorluktan ilham aldık .
Hedef:
Önceden yapılandırılmış bir pano ve bir dizin listesi göz önüne alındığında, anahtarları verilen dizinlerde ters çevirin.
Bir pano, sarım içine sarılmış ve değişken uzunluktaki sıralara yerleştirilmiş bir dizi anahtardan ( v
veya ^
) oluşur -
. İşte örnek bir santral:
-v-^-v-
-^-v-
-v-^-v-
İnvert / a anahtarı vasıtası onu değiştirmeyi çevirmek v
için ^
ya gelen ^
etmek v
.
Anahtarlar soldan sağa, yukarıdan aşağıya dizine alınır. Örneğin, yukarıdaki örnekte v
, ilk satırdaki son konum 3 ^
, ortadaki satır 4 (1 indeksleme kullanılarak) olur.
Giriş:
- Geçiş panosunu temsil eden bir dize (veya dizelerin listesi). Regex ile eşleşmesi garanti edilir
((-[v^])+-)(\n(-[v^])+-)*
. - Dizinleri temsil eden muhtemel olarak boş bir sayılar listesi, 0 veya 1 (veya isterseniz bazı isteğe bağlı numaralar) dizine alınabilir. Bunlar çevrilmesi gereken anahtarlar.
Çıktı:
- Belirtilen anahtarlar ters çevrilmiş girişle aynı şekilde bir kontrol paneli. Belirtilmemiş anahtarlar başlangıç durumlarını korumalıdır.
Kurallar:
- Girdi her zaman doğru biçimde biçimlendirilecek ve verilen dizinler sınırların dışında kalmayacak.
- Dizinlerin listesi sıralanacak ve yinelenenleri olmayacak.
- Cevabınızda, hangi indekslemeyi kullandığınızı, 0, 1 ya da bazılarını keyfi bir şekilde belirtin.
- Çıktı girdi gibi göründüğü sürece izleyen boşluk boş.
- Bu kod golf yani en kısa kod kazanır.
Örnekler:
#Using 1-indexing
input: #Empty Case
[],
-v-^-v-
output:
-v-^-v-
input: #Single switch
[1],
-v-
output:
-^-
input: #Skip a line
[3,5],
-^-v-v-
-v-
-^-^-
output:
-^-v-^-
-v-
-v-^-
input: #Flip one in each line + number wrap
[3,4,6],
-^-v-v-
-v-
-^-^-
output:
-^-v-^-
-^-
-^-v-
input: #Flip 'em all
[1,2,3,4,5,6],
-^-v-v-
-v-
-^-^-
output:
-v-^-^-
-^-
-v-v-
>"-"
: Giriş dizesinin başlaması garantili olduğundan -
, bunun için kullandığınız parametre / bağımsız değişken / değişken adına göre kontrol edebilirsiniz.