Objektif
Tulis rutin yang menerima string karakter ASCII yang dapat dicetak, s , dan mengembalikan string yang berisi karakter yang sama dengan s , disusun ulang sehingga tidak ada substring dua karakter yang muncul lebih dari satu kali. Program harus memproses semua string benchmark (lihat di bawah) masing-masing dalam waktu kurang dari satu menit pada komputer modern . Saya juga akan penghargaan bonus khusus dari 50 rep untuk jawaban skor terendah yang memproses setiap string yang 30-karakter yang valid di dalam satu menit.
Misalnya, dengan diberi input Mississippi
, output yang valid adalah issiMspiips
(tidak ada substring dua karakter yang muncul dua kali), sedangkan output yang tidak valid adalah ipMsispiiss
(karena substring is
muncul dua kali).
Rutin dapat berupa:
- pembacaan program lengkap dari
stdin
(atau setara) atau baris perintah, dan keluaran kestdout
(atau setara) - sebuah fungsi yang menerima argumen string tunggal dan mengembalikan string
Anda dapat mengasumsikan bahwa string input selalu mengakui setidaknya satu output yang valid.
Tantangan
Rutin Anda harus terdiri dari 5 atau lebih baris kode yang dipisahkan oleh baris baru. Baris kosong (yang termasuk baris yang hanya berisi spasi putih) diabaikan dalam semua konteks dan tidak dihitung terhadap jumlah baris total.
Mengganti dua baris dalam kode sumber Anda harus menghasilkan kesalahan fatal. Dengan "kesalahan fatal", kami merujuk ke salah satu kondisi berikut:
- kode sumber gagal dikompilasi, dengan kompiler / juru bahasa menyatakan kesalahan fatal
- aborsi rutin dengan kesalahan fatal runtime atau pengecualian runtime tidak tertangani
- rutin dipaksa menjadi penghentian tiba-tiba, program abnormal yang tidak menghasilkan output apa pun kecuali untuk pesan kesalahan yang mungkin dan / atau tumpukan dump
Atau , blok kode yang berdekatan yang tidak mengandung karakter baris baru dapat digunakan sebagai ganti baris. Blok-blok ini masing-masing harus ditampilkan pada baris mereka sendiri di file sumber, dengan pemahaman bahwa baris baru dihapus sebelum kode sumber dikompilasi / ditafsirkan.
Misalnya kodenya
aaaa
bbbb
cccc
akan mengembun
aaaabbbbcccc
sebelum dievaluasi.
Dalam mode ini, kondisi kesalahan fatal berlaku untuk menukar dua blok kode apa pun (dan dengan demikian untuk menukar baris dalam kode sumber sebelum baris baru dihapus). Oleh karena itu dalam contoh di atas rutinitas aaaaccccbbbb
, bbbbaaaacccc
dan ccccbbbbaaaa
semua harus menghasilkan kesalahan fatal, baik di compiletime atau runtime.
Pengajuan yang menggunakan mode alternatif ini harus menyatakan penggunaannya.
Mencetak gol
Biarkan n menjadi jumlah baris teks tidak kosong dalam file sumber Anda, dengan n ≥ 5. Biarkan c menjadi jumlah byte yang terdiri dari baris teks terpanjang (dengan panjang byte) dalam file sumber Anda, tidak termasuk baris baru yang tertinggal.
Skor pengajuan diberikan oleh c ( n + 10).
Pengajuan dengan skor terendah adalah pemenang.
Semoga berhasil. ;)
String Tolok Ukur
Abracadabra Alacazam
Is Miss. Mississauga Missing?
Ask Alaska's Alaskans
GGGGAAAATTTTCCCCgggaaatttccc
A Man A Plan A Canal Panama
Mspiisiipss
valid karena satu-satunya pengulangan ii
yang tidak terjadi Mississippi
?
CooliO
, outputoOoCli
?