Bu seferki göreviniz expand(1)
, sekmeleri boşluklara genişleten POSIX yardımcı programının bir varyantını uygulamaktır .
Programınız bir sekme noktası belirtimi almak ve daha sonra standart girişteki girişi okumak ve girişteki sekme karakterlerini bir sonraki sekmeye ulaşmak için uygun boşluklarla değiştirmektir. Sonuç standart çıktıya yazılmalıdır .
Tabstop teknik özellikleri
Bir tabstop özellikleri tek bir numara ya da tabstops virgülle ayrılmış liste ya oluşur. Tek bir sayı olması durumunda, sayıları virgülle ayrılmış bir listede gerçekleşmiş gibi tekrarlanır (örn . 4
Gibi davranır 4,8,12,16,20,...
). Virgülle ayrılmış listedeki her giriş isteğe bağlı olarak a ile işaretlenmiş bir pozitif tamsayıdır +
. Bir +
önek, virgülle ayrılmış listedeki önceki değerle göreli bir farkı gösterir. Listedeki ilk değer mutlak olmalıdır (yani önceden düzeltilmemiş). Sekmeler, bir sonraki boşluk olmayan karakterin sütununu (genişletilmiş sekmeyi izleyerek) belirtir ve en soldaki sütun 0 sayısı olarak alınır. Sekmeler her zaman en az bir boşluğa genişlemelidir.
Giriş çıkış
Tabstop belirtimi, programa ilk komut satırı parametresi olarak alınmalı veya kendi takdirinize bağlı olarak standarttan ilk girdi satırı (bir satırsonu tarafından sonlandırılır) olarak okunmalıdır. Sekme yeri okunduktan sonra, EOF işlenip genişletilene kadar kalan giriş (önceki durumda tüm girişler). Genişletilmiş çıktı standart çıktıya yazılacaktır.
Tüm genişletilmiş tablaların ve tüm girdilerin maksimum 80 sütun genişliğinde olduğu varsayılır. Tüm genişletilmiş sekme tablaları kesinlikle artıyor.
Misal
Tabstop spesifikasyonu girişe 4,6,+2,+8
eşdeğerdir 4,6,8,16
ve her iki girişle birlikte
ab<Tab>c
<Tab><Tab>d<Tab>e<Tab>f
içine genişletilmiş ( ␣
bir boşluğu gösterir)
ab␣␣c
␣␣␣␣␣␣d␣e␣␣␣␣␣␣␣f
01234567890123456 (Ruler for the above, not part of the output)
1111111
Puanlama saf kod golf ; en kısa kod kazanır.
x+($1?i:0)
daha kısa olarak yazabilir misin$1?x+i:x
?