Setiap hari, setiap menit, ... setiap mikrodetik, banyak keputusan dibuat oleh komputer Anda. Dalam bahasa tingkat tinggi, ini biasanya mengambil bentuk pernyataan seperti if
, while
dan for
, tetapi pada tingkat paling dasar ada instruksi bahasa mesin yang disebut instruksi cabang / lompat . Prosesor modern mengantre instruksi dalam sebuah pipa , dan ini berarti bahwa prosesor perlu memutuskan apakah akan mengisi pipa dengan instruksi segera setelah cabang (yaitu tidak diambil ) atau instruksi di tujuan cabang.
Jika prosesor tidak menebak dengan benar, instruksi yang telah salah dimasukkan ke dalam pipa harus diabaikan dan instruksi yang benar harus diambil, menyebabkan penundaan. Tugas prediktor cabang adalah mencoba dan menebak apakah cabang akan diambil untuk menghindari tindakan mahal untuk mengisi ulang pipa.
Anda harus menulis alat prediksi yang akan, mengingat urutan keputusan sebelumnya, menebak keputusan selanjutnya dengan benar. Program Anda dapat ditulis dalam bahasa apa pun, asalkan Anda menentukan tautan ke penerjemahnya jika itu bahasa yang tidak jelas / golf. Itu harus mengambil sejarah aktual masa lalu sebagai argumen baris perintah pertama, tetapi itu tidak akan disediakan untuk tebakan pertama dari urutan. Anda kemudian harus mengembalikan tebakan Anda dengan mencetaknya ke stdout. Keputusan berbentuk "y" atau "n". Setiap test case adalah urutan dari 72 keputusan, sehingga Anda dapat mengasumsikan bahwa argumen histori yang ditentukan tidak akan pernah lebih dari 71 karakter. Misalnya, tes "Bergantian 1":
ynynynynynynynynynynynynynynynynynynynynynynynynynynynynynynynynynynynyn
Anda akan didiskualifikasi jika program Anda:
- tidak mengembalikan hasil dalam satu detik
- tidak mengembalikan a
y
ataun
(baris baru tidak masalah dan diabaikan) - mencoba mengubah kode atau file apa pun yang terkait dengan tantangan ini, termasuk kode pesaing lainnya
- mengandung apa pun yang berbahaya
Anda dapat menggunakan file untuk kegigihan jika Anda menginginkannya, tetapi itu harus dinamai secara unik dan sesuai dengan yang di atas.
Ini adalah tantangan kode , bukan golf kode . Kemenangan akan diberikan oleh prediktor prediktor cabang kepada pesaing yang solusinya berhasil memprediksi sebagian besar cabang di seluruh rangkaian uji. Tes:
yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy,All yes
nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn,All no
ynynynynynynynynynynynynynynynynynynynynynynynynynynynynynynynynynynynyn,Alternating 1
nnyynnyynnyynnyynnyynnyynnyynnyynnyynnyynnyynnyynnyynnyynnyynnyynnyynnyy,Alternating 2
yyynnnyyynnnyyynnnyyynnnyyynnnyyynnnyyynnnyyynnnyyynnnyyynnnyyynnnyyynnn,Alternating 3
nnnnyyyynnnnyyyynnnnyyyynnnnyyyynnnnyyyynnnnyyyynnnnyyyynnnnyyyynnnnyyyy,Alternating 4
yyyyyynnnnnnyyyyyynnnnnnyyyyyynnnnnnyyyyyynnnnnnyyyyyynnnnnnyyyyyynnnnnn,Alternating 5
nnnnnnnnnnnnyyyyyyyyyyyynnnnnnnnnnnnyyyyyyyyyyyynnnnnnnnnnnnyyyyyyyyyyyy,Alternating 6
yyyyyyyyyyyyyyyyyynnnnnnnnnnnnnnnnnnyyyyyyyyyyyyyyyyyynnnnnnnnnnnnnnnnnn,Alternating 7
yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyynnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn,Alternating 8
yynyynyynyynyynyynyynyynyynyynyynyynyynyynyynyynyynyynyynyynyynyynyynyyn,2-1
ynnnynnnynnnynnnynnnynnnynnnynnnynnnynnnynnnynnnynnnynnnynnnynnnynnnynnn,1-3
nyyyyynyyyyynyyyyynyyyyynyyyyynyyyyynyyyyynyyyyynyyyyynyyyyynyyyyynyyyyy,5-1
nnnnnnnnnnnynnnnnnnnnnnynnnnnnnnnnnynnnnnnnnnnnynnnnnnnnnnnynnnnnnnnnnny,1-11
nyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyynyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy,35-1
yynnnnyynnnnyynnnnyynnnnyynnnnyynnnnyynnnnyynnnnyynnnnyynnnnyynnnnyynnnn,2-4
ynnyyynyynnnynnyyynyynnnynnyyynyynnnynnyyynyynnnynnyyynyynnnynnyyynyynnn,1-2-3
ynynynynynynynynynynynynynynynynynynyyyyyyyyyyyyyyyyyynnnnnnnnnnnnnnnnnn,A1/A7
yyyyyynnnnnnyyyyyynnnnnnyyyyyynnnnnnnnyynnyynnyynnyynnyynnyynnyynnyynnyy,A5/A2
nnnnnnnnnnnnyyyyyyyyyyyynnnnnnnnnnnnyyyynnnnyyyynnnnyyyynnnnyyyynnnnyyyy,A6/A4
nyyyyynyyyyynyyyyynyyyyynyyyyynyyyyynyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy,5-1/35-1
yyynnnyyynnnyyynnnnyyyyyyyyyyyyyyyyyyyyyyynyyyyynyyyyyyynnnnyynnnnyynnnn,A3/Y/5-1/2-4
yynnnnyynnnnyynnnnnyynnnynnyyynyynnnnnnynnnynnnynnnynnyynyynyynyynyynyyn,2-4/1-2-3/1-3/2-1
Set lengkap tes dan program pelari terletak di repositori GitHub ini . Cukup tambahkan prediktor Anda ke src/predictors.txt
dalam formulir <name>,<command to run>
dan jalankan main.py
. Saya telah menyediakan dua alat prediksi yang sangat mendasar untuk pengujian sederhana. Saya akan merekomendasikan lebar kolom setidaknya 92 ketika menjalankan pelari untuk hasil yang bagus. Jika Anda menemukan bug apa pun di dalamnya, beri tahu saya. :)