Bazı insanlar, tablo ve girinti için boşluk kullanmakta ısrar ediyor.
Tablolama için bu tartışmasız yanlıştır. Tanım olarak, çizelgeleme çizelgeleme için kullanılmalıdır.
Girinti için bile, tabülatörler nesnel olarak üstündür:
Stack Exchange topluluğunda açık bir fikir birliği var .
Girinti için tek bir boşluk kullanmak görsel olarak rahatsız edicidir; birden fazla kullanmak israftır.
Tüm
golfoyuncularının bildiği gibi, programlar mümkün olduğu kadar kısa olmalıdır. Yalnızca sabit disk alanı kazanmakla kalmaz, daha az bayt işlenmesi gerektiğinde derleme süreleri de kısalır.Sekme genişliğini 1 ayarlayarak, aynı dosya her bilgisayarda farklı görünür, böylece herkes asıl dosyayı değiştirmeden en sevdiği girinti genişliğini kullanabilir.
Tüm iyi metin düzenleyicileri, varsayılan olarak (ve tanım) tabulatörler kullanır.
Öyle söylüyorum ve her zaman haklıyım!
Ne yazık ki, herkes mantıklı değil. Birisi size yanlış yapan bir dosya gönderdi, TM ve onu düzeltmelisiniz. Sadece manuel olarak yapabilirsin, ama başkaları da olacak.
Ara parçaların değerli zamanınızı boşa harcayacağı kadar kötü, bu nedenle sorunu çözmek için mümkün olan en kısa programı yazmaya karar veriyorsunuz.
Görev
Aşağıdakileri yapan bir program veya işlev yazın:
Tek bir dize STDIN'den veya komut satırı veya işlev argümanı olarak okuyun.
Boşlukların tablo veya girinti için kullanıldığı tüm konumları belirleyin.
Bir satırın başlangıcında gerçekleşirse, boşluklar girintisidir .
İki veya daha fazla boşluğun çalışması, girintisiz değilse , tablolamadır .
Girintisiz tek bir boşluk, tablolama için kullanılmış olabilir veya olmayabilir. Aynı karakteri farklı amaçlar için kullandığınızda beklendiği gibi, söylemesi kolay bir yol yoktur. Bu nedenle, alanın karışıklık için kullanıldığını söyleyeceğiz .
Tablolama veya girinti için kullanılan tüm alanların, dosya görünümünü değiştirmeden tablolayıcılarla değiştirilebileceği mümkün olan en uzun sekme genişliğini 1 belirleyin .
Girdide ne tablo ne de girintiler varsa, sekme genişliğini belirlemek mümkün değildir. Bu durumda, bir sonraki adımı atlayın.
Önceden belirlenmiş sekme genişliğini kullanarak, çizelgeleme veya girintiler için kullanılan tüm boşlukları çizelgeleyicilerle değiştirin.
Ayrıca, mümkün olduğunda dosyanın görünümünü değiştirmeden, tabloları karıştırmak için kullanılan tüm boşlukları değiştirin. (Şüpheniz varsa, boşluklardan kurtulun.)
Değiştirilen dizgiyi fonksiyonunuzdan döndürün veya STDOUT'a yazdırın.
Örnekler
Tüm alanları
a bc def ghij
tablo vardır.
Alanlarda pedlerin her çalışma 5 bir genişliğe boşluk olmayan karakter önceki dizi, doğru sekme genişliği 5 ve böylece doğru çıkış 2 olduğu
a--->bc-->def->ghij
İlk iki alanı
ab cde f ghi jk lm
tabülasyon, diğerleri karışıklıktır.
Doğru çıkış, böylece doğru sekme genişliği 4 olduğu 2 olduğu
ab->cde>f ghi>jk lm
Son boşluğa dokunulmaz, çünkü bir tabülatör tarafından değiştirilirse iki boşluğa dönüşür:
ab->cde>f ghi>jk->lm
Hepsi bir boşluk hariç
int main( ) { puts("TABS!"); }
girinti, diğeri karışıklık.
Doğru sekme genişliği 4 ve doğru çıkış böylece girinti seviyeleri 0 ila 4 ve 8 boşluklar vardır 2 olduğu
int --->main( ) --->{ --->--->puts("TABS!"); --->}
Boşluk içinde
( )
bir tabulator ile ikame eğer dokunulmaz, böylece üç boşluk olarak giderek azalacaktır.İlk iki alanı
x yz w
girinti, diğerleri karışıklık.
Uygun sekme genişliği 2'dir ve doğru çıkış 2 olduğu
->x>yz w
Son tablo, bir tabülatör tarafından değiştirilirse iki alan olarak gösterilecektir, bu yüzden dokunulmadan kalır.
İlk iki alanı
xy zw
girinti, diğer üç tablolama.
Doğru çıkış, böylece sadece 1 izinlerin bir sekme genişliği, tüm boşlukları ortadan kaldırmak için 2 olduğu
>>xy>>>zw
Tüm alanları
a b c d
kafa karışıklığı vardır.
Doğru çıktı hiçbir olası en uzun sekme genişliği vardır 2 olduğu
a b c d
Ek kurallar
Girdi tamamen yazdırılabilir ASCII karakterlerinden ve satır beslemelerinden oluşacaktır.
Satır başına en fazla 100 satır ve en fazla 100 karakter olduğunu varsayabilirsiniz.
Çıktı için STDOUT seçtiyseniz, tek bir izleyen satır besleme yazdırabilirsiniz.
Standart kod-golf kuralları geçerlidir.
1 Sekme genişliği, monospaced bir font kullanarak, art arda iki sekme durağı arasındaki karakter cinsinden mesafe olarak tanımlanır .
2 ASCII resim okları, Stack Exchange'in düzgün bir şekilde oluşturmayı reddettiği tabulatörleri temsil eder ve bunun için bir hata raporu gönderdim. Gerçek çıktı gerçek tabloları içermelidir.
programs should be as short as possible
Arthur Whitney'in uzun zamandır kayıp olan kardeşini bulduğuma inanıyorum !!