ed, 35 karakter
s/[a-zA-Z]*\([a-zA-Z]\)\|./\1/g
p
Q
Böylece dünya ed ile bitiyor. Kelimenin tam anlamıyla hazır olmayı sevdiğim için, çözümü ed ile yazmak için yazmaya karar verdim - ve görünüşe göre aslında bir programlama dili . Şaşırtıcı derecede kısa, bu konudaki zaten birçok kısa çözümü göz önünde bulundurarak bile. Başka bir şey kullanabilseydim daha iyi olurdu [a-zA-Z]
, ama ed bir programlama dili değil, aslında yeterince iyi.
İlk önce, bunun sadece dosyadaki son satırı ayrıştırdığını söylemek istiyorum. Daha fazla ayrıştırmak mümkün olacak, sadece ,
iki ilk satırın başına yazmanız (bu, standart son satır aralığının aksine "her şey" aralığında belirtilen) ancak kod boyutunu 37 karaktere çıkaracaktı.
Şimdi açıklamalar için. İlk satır, tam olarak Perl çözümünün yaptığını yapar (Unicode karakterleri için destek olmadan). Perl çözümünü kopyalamadım, sadece tesadüf eseri benzer bir şey icat ettim.
İkinci satır son satırı yazdırır, böylece çıktısını görebilirsiniz. Üçüncü satır kuvvetleri çıkın - Yapmak zorunda aksi ed
basacaktır ?
Dosyayı kaydettikten değil hatırlatmak için.
Şimdi nasıl çalıştırılacağı için. Çok basit. ed
Programımı böyle bağlarken, sadece test senaryosunu içeren dosyayı çalıştırın .
ed -s testcase < program
-s
Sessiz. Bu ed
, başlangıçta çirkin dosya boyutunun çıkmasını önler . Ne de olsa editör değil komut dosyası olarak kullanıyorum, bu yüzden meta verilere ihtiyacım yok. Bunu yapmazsam, ed aksi halde önleyemediğim dosya boyutunu gösterir.