Saya menemukan pertanyaan ini pada SO dan berpikir itu akan menjadi tantangan golf yang bagus. Jadi begini:
Tantangan:
Tulis sebuah program yang membaca urutan string karakter, satu per baris, dan menampilkan daftar semua posisi di mana setiap string memiliki karakter yang sama.
Masukan dan keluaran:
Input terdiri dari satu atau lebih baris karakter ASCII non-spasi yang dapat dicetak, masing-masing diikuti oleh baris baru. Anda dapat mengasumsikan bahwa semua jalur input memiliki panjang yang sama. Baris baru tidak dianggap sebagai bagian dari input (yaitu Anda tidak harus menampilkannya sebagai karakter yang cocok).
Input contoh (tanpa malu-malu dicuri dari pertanyaan SO):
abcdefg
avcddeg
acbdeeg
Setelah membaca input, program Anda harus mencetak posisi setiap kolom yang cocok dan karakter yang dikandungnya. (Program Anda mungkin, tetapi tidak perlu, berhenti membaca input lebih lanjut jika dapat menentukan lebih awal bahwa tidak ada kolom yang cocok.) Setiap format output yang masuk akal diizinkan; khususnya, Anda dapat menggunakan pengindeksan berbasis-0 atau berbasis-1 untuk posisi tersebut.
Contoh output untuk input di atas (menggunakan pengindeksan berbasis 0):
0: a
3: d
6: g
Mencetak:
Ini kode golf, jadi jawaban tersingkat menang. Jika terjadi seri, karakter pecahan tie-breaker dapat diberikan untuk fitur tambahan:
- −½ karakter untuk menangani jalur input dengan panjang yang tidak sama. (Output tidak boleh mengandung posisi melewati ujung jalur input terpendek.)
- −¼ karakter untuk menangani input dengan benar yang terdiri dari karakter Unicode yang disandikan UTF-8.
Untuk inspirasi, Anda dapat menemukan beberapa solusi tanpa kulit di pertanyaan SO (lihat di atas).
Klarifikasi:
Cukup menggabungkan posisi dan karakter, seperti dalam
0a3d6g, tidak dihitung sebagai "output yang masuk akal". Anda harus menyediakan semacam pemisah (seperti spasi) antara masing-masing elemen output sehingga dapat diuraikan secara jelas.Input akan diberikan pada aliran input standar (
stdin), atau menggunakan mekanisme input file teks apa pun yang paling alami untuk bahasa pilihan Anda. (Jika bahasa pilihan Anda tidak memiliki mekanisme alami untuk input file, lakukan apa pun yang tampaknya paling dekat dalam semangat.)Input berakhir ketika tidak ada lagi data untuk dibaca (yaitu ketika kondisi akhir file terjadi). Jika Anda menginginkannya, Anda mungkin mengharuskan input diakhiri oleh baris kosong (yang Anda seharusnya tidak dihitung sebagai bagian dari input, jelas). Jika Anda melakukannya, harap sebutkan di jawaban Anda sehingga orang lain dapat memberikan input yang benar untuk pengujian.
Setiap baris input, termasuk yang terakhir, diakhiri dengan karakter baris baru. Jawaban Anda tidak boleh melaporkan baris baru ini sebagai kolom yang cocok. (Tidak masalah jika solusi Anda juga dapat menangani input di mana baris terakhir tidak berakhir pada baris baru, tetapi itu tidak diperlukan.)