ed, 35 karakter
s/[a-zA-Z]*\([a-zA-Z]\)\|./\1/g
p
Q
Jadi, dunia berakhir pada ed. Karena saya ingin menjadi terlalu literal, saya memutuskan untuk menulis untuk menulis solusinya dengan ed - dan ternyata itu sebenarnya bahasa pemrograman . Ini mengejutkan pendek, bahkan mempertimbangkan banyak solusi yang lebih pendek sudah ada di utas ini. Akan lebih baik jika saya bisa menggunakan sesuatu selain [a-zA-Z]
, tetapi mengingat ed bukan bahasa pemrograman, itu sebenarnya cukup baik.
Pertama, saya ingin mengatakan ini hanya mem-parsing baris terakhir dalam file. Dimungkinkan untuk mem-parsing lebih banyak, cukup ketik ,
di awal dua baris pertama (rentang "semuanya" yang ditentukan ini, yang bertentangan dengan rentang baris terakhir standar), tetapi itu akan meningkatkan ukuran kode menjadi 37 karakter.
Sekarang untuk penjelasan. Baris pertama melakukan persis apa yang dilakukan solusi Perl (kecuali tanpa dukungan untuk karakter Unicode). Saya belum menyalin solusi Perl, saya baru saja menemukan sesuatu yang serupa secara kebetulan.
Baris kedua mencetak baris terakhir, sehingga Anda bisa melihat hasilnya. Kekuatan garis ketiga berhenti - saya harus melakukannya, jika tidak ed
akan mencetak ?
untuk mengingatkan Anda bahwa Anda belum menyimpan file.
Sekarang untuk bagaimana menjalankannya. Yah, ini sangat sederhana. Jalankan saja ed
dengan file yang berisi test case, sambil mem-pipkan program saya, seperti itu.
ed -s testcase < program
-s
diam. Ini mencegah ed
dari menghasilkan ukuran file yang jelek di awal. Bagaimanapun, saya menggunakannya sebagai skrip, bukan editor, jadi saya tidak perlu metadata. Jika saya tidak melakukan itu, ed akan menunjukkan ukuran file yang saya tidak bisa mencegah sebaliknya.