Ini dulu, tetapi saat ini semua orang telah beralih ke IPv6 . (Baik?)
Tugas Anda adalah menulis program yang mencetak semua alamat IPv6 .
Anda harus menulis program lengkap yang tidak mengambil input dan mencetak alamat IPv6, satu per baris, dan tidak ada output lainnya. Program Anda harus mencetak semua 128 alamat yang mungkin, termasuk yang tidak valid. Setiap alamat harus dicetak tepat sekali. Anda dapat mencetak alamat dengan urutan apa pun.
Setiap alamat dapat dicetak secara penuh, dengan 8 grup dengan 4 digit heksadesimal yang dipisahkan oleh titik dua, misalnya
2001:0db8:85a3:0000:0000:8a2e:0370:7334
Anda dapat, atas kebijakan Anda, menggunakan singkatan standar dari RFC 5952 :
- Angka nol di grup dapat dihilangkan, kecuali yang
0
tidak dapat disingkat lebih lanjut. ::
dapat digunakan paling banyak sekali per alamat untuk menyingkat urutan satu atau lebih grup yang semuanya nol.- Digit heksadesimal dapat menggunakan huruf kecil atau huruf besar.
Jika Anda mencapai rekomendasi representasi dari RFC 5952 (hanya huruf kecil, representasi sesingkat mungkin, dengan ::
digunakan sedini mungkin jika ada beberapa tempat di mana ia dapat digunakan), Anda mendapatkan bonus -20% .
Karena ukuran output, program Anda tidak diharapkan selesai saat kami duduk di sana. Program Anda mungkin terganggu oleh sarana eksternal di beberapa titik ( Ctrl+ C, mengeluarkan daya, ...). Program Anda harus menghasilkan output sebagai aliran, sehingga setelah menunggu "masuk akal", itu akan menghasilkan beberapa baris. Pada dasarnya, membangun string raksasa di memori hanya untuk mencetaknya di akhir tidak diperbolehkan. Program apa pun yang kehabisan memori pada PC "standar" didiskualifikasi. (Meskipun demikian, jika program Anda dibiarkan berjalan cukup lama, ia harus mencetak semua alamat IPv6 dan kemudian keluar.)
(Jika kondisi ini merupakan masalah bagi juru bahasa yang menjalankan program sampai selesai dan kemudian membiarkan Anda melihat hasilnya, dan Anda tidak memiliki juru bahasa yang di-host, ujilah program Anda pada versi masalah yang lebih kecil, lalu sesuaikan dengan hati-hati ke 2 128 penuh .)
Skor Anda adalah panjang program Anda dalam byte, dikalikan dengan 0,8 jika Anda mendapatkan bonus. Ini golf kode, jadi skor terendah menang.