Kutsal savaşlar mekanlara karşı sekmelere karşı savaştı. (Ve elbette uzaylar nesnel olarak üstündür, kazandı.) - Alex A.
S azı PEO s le hala çöp için bir o ccept WHI C h Cl e arly s upreme. Sadece aldık bir yanış kullanarak dosyayı yeniden ct, b reklamı ve inf e WHI anterior formunu t espace ve şimdi t he devam e bir dosyanın NTS r e kusurlu ve harap.
Dosyayı size gönderen kişiyi, ne kadar yanlış olduklarını - şiddetli bir şekilde - göstermeye de karar verebilirsiniz.
Açıklama
Başlığın önerdiği gibi, zorluğunuz bir veya daha fazla sekme içeren bir dosya almak:
this is an evil tab onoes
ve acımasızca onları paramparça eder:
this is an evil tab
o
n
o
e
s
Stack Exchange yazılımının değişmez sekmeleri dört boşluğa dönüştürdüğünü unutmayın (çünkü doğru), bu yazıdaki sekmeler dört boşluk olarak görüntülenecektir. Programınıza giriş, ancak gerçek sekmeler içerecektir.
Meydan okuma
Çözüm, yazdırılabilir ASCII, yeni satırlar ve sekmeler içerebilecek giriş olarak tek bir dize almalıdır. Girişte her zaman en az tek bir sekme olacaktır.
Çıktı, aşağıdaki kuralların uygulandığı şekilde aynı dizge olmalıdır:
İmleci koordinatlarda (0,0) ve sağa doğru başlatın. Koordinatlar (sütun, satır), sıfır dizinli ve karakter yazdırdıktan sonra imleci hareket ettirmeniz gereken yön.
Dizedeki her karakter için:
Eğer yeni bir satırsa, şimdiye kadar (n dahil) dizedeki yeni satırların sayısı n olan koordinatlara (0, n) gidin ve yönü sağa sıfırlayın.
Bu bir sekme ise, iki boşluk bırakın , imleç yönünü saat yönünde 90 derece döndürün ve sekmeyi yarıya indirerek "boşluk bırakarak" iki boşluk daha verin. İşte bir sekmenin temsil edildiği
--->
ve boşlukları aşağıdaki gibi gösteren görsel bir örnek·
:foo--->bar--->baz
olur
foo··· · b a r · · zab··
Aksi takdirde, imleci imleç üzerine getirin ve imleci geçerli yönde bir adım hareket ettirin.
Dizgiyi baştan sona okuduğunuz için, mevcut karakterlerin "üstüne" yazmanız gerekebilir - bu sorun değil. Örneğin, giriş
foo--->bar
spaces are superior
çıktısı ile sonuçlanmalı
foo
b
spaces are superior
r
"Kırık sekmeler" in diğer karakterlerin üzerine yazılmasını isteyip istemediğinizi seçebilirsiniz - asıl amaç onların yapmamasıydı, ancak belirsizlik belirsizdi, bu yüzden karar sizin.
Ayrıca, bu kuralları uyguladıktan sonra
İstediğiniz kadar sondaki boşlukları ekleyin veya kaldırın.
tek bir son satırın maksimum satırını ekleyin.
Girdi asla takip eden boşluk içermez; ayrıca hiçbir zaman öncü veya izleyen satırlar içermez. Ayrıca her zaman 0'dan küçük bir sütuna veya bir satıra yazmak zorunda olmayacağınızı da varsayabilirsiniz (örn. Ekran dışı).
Test durumu
Bu sınama durumundaki sekmeler, --->
aksi halde SE onları yukarı yitirdiği için temsil edilir .
Giriş:
Test case. Here's a tab--->there's a tab--->everywhere a tab--->tab--->this is some more text
blah
blah
blah blah blah blah blah blah--->blaah--->blaah--->blah--->blaaaaah--->blah--->blah--->blah--->blah--->blah
Çıktı:
Test case. Here's a tab
blah
blah t
blah blah blah blah blah blah
blaablah
r b
e l b
h 'h a l
a sa a a
l l h h
this is some mobe tbxt
haalhalb
b a
a b
t
bat a erehwyreve
Süslü animasyon:
kurallar
- Bu kod golf , yani bayttaki en kısa kod kazanacak!
(0,0)
gerektiğini söylediğinizde, önce konsolu silmemiz mi gerekiyor yoksa imlecin varsayılan konumunu bununla mı kastediyorsunuz?