Tantangan:
Tulislah sebuah program yang sangat singkat yang, ketika dikompilasi, menciptakan peringatan dan kesalahan kompiler paling banyak. Itu dapat ditulis dalam bahasa pemrograman apa pun.
Mencetak:
Skor ditentukan oleh persamaan ini: errors_and_warnings_length/code_length
. Kemenangan skor tertinggi.
Contoh:
Program C # class
memiliki panjang 5 karakter dan menghasilkan 3 peringatan, yang merupakan skor (1/5) * 3 = 0,6.
EDIT:
Karena beberapa kebingungan, program harus setidaknya 1 karakter. Kalau tidak, itu akan mendapatkan skor tak terbatas.
gcc -Wall -pedantic
sangat berbeda dari ol biasagcc
berbeda daritcc
mungkin berbeda dari beberapa c compiler lainnya.Jawaban:
GCC, skor 2 200 /36 ≈ 4,5 × 10 58
Saya belum benar-benar selesai mengkompilasi kode ini, tetapi berdasarkan pengujian dan matematika sederhana, harus menghasilkan total 200
#include nested too deeply
kesalahan.Tentu saja, program ini mudah dikembangkan. Menambahkan baris ketiga membawa skor hingga 3 200 /54 ≈ 4,9 × 10 93 . Empat baris memberikan 4 200 /72 ≈ 3,6 × 10 118 , dan seterusnya.
sumber
#include
], untuk menghindari rekursi yang kabur. Standar ini membutuhkan setidaknya 15 level. "C, 0 karakter - Skor = (1/0) * 1 = Infinity
menghasilkan 1 kesalahan:
Catatan: http://ideone.com/xdoJyA
sumber
GCC, skor 5586,6 (dan lebih banyak jika diperlukan)
179 karakter, 1000003 peringatan / kesalahan (menggunakan
-Wall
)Ini dapat diperpanjang secara sewenang-wenang, tentu saja. Misalnya, menggunakan 10
#define
detik bukannya 5 dan panjang 20 "panggilan" alih-alih 10 akan menghasilkan skor sekitar (20 ** 10) / (179 * 4) = 14301675977.65 (dan akan memakan waktu cukup lama untuk dijalankan ;)sumber
#define X(A) A,A,A,A,A,A,A
danX(X(X(X(X(X(A))))))
Anda dapat menduplikasi kode lebih cepat.GCC dua kali, 86
22 karakter, 1898 kesalahan + peringatan di sistem saya.
Saya yakin pendekatan ini bisa lebih ditingkatkan, dengan memilih file yang lebih panjang dengan nama yang lebih pendek.
sumber
/usr/bin/gdb
secara signifikan lebih besar (5,5M vs 760K), tetapi/vmlinuz
pada 5,6M mungkin merupakan taruhan terbaik Anda.HQ9 ++, 1 (batas (n + 29) / n)
Berikut ini memancarkan peringatan
Warning: this is not a quine
untuk setiap Q dalam kode.Kecil itu bagus, kan? Hmm ...
sumber
C, .727
11 karakter, 5 kesalahan, 3 peringatan, (1/11) * 8 = .727273
sumber
NASM, skor 63/40 * 2 ^ 32 ≈ 2.905 * 10 ^ 19
Akan menghasilkan
c.asm:3: error: label or instruction expected at start of line
2 ^ 64 kali. Sekali lagi ini mudah diperluas ke output yang jauh lebih besar.sumber
C ++ 98 (211 bytes) g ++ - 5 (Ubuntu 5.2.1-23ubuntu1 ~ 12.04) 5.2.1 0151031
Saya ingin melihat seberapa baik yang dapat saya lakukan di C ++ tanpa menggunakan preprocessor sama sekali. Program ini menghasilkan 2.139.390.572 byte output, yang sebagian besar adalah pesan kesalahan tunggal.
Tidak Disatukan:
Program ini bekerja dengan mendefinisikan template struct rekursif R yang memegang typedef D yang mengandung dua salinan R. Ini menghasilkan nama tipe yang tumbuh secara eksponensial, yang dicetak secara penuh dalam pesan kesalahan. Sayangnya, g ++ sepertinya tersedak saat mencoba untuk mencetak pesan kesalahan yang lebih lama dari (1 << 31) byte. 2.139.390.572 byte adalah yang paling dekat yang bisa saya dapatkan hingga batas tanpa melampaui. Saya ingin tahu apakah ada yang bisa menyesuaikan batas rekursi dan tipe parameter
27, float, 24, int*const*
untuk mendekati batas (atau menemukan kompiler yang dapat mencetak pesan kesalahan yang lebih lama).Kutipan dari pesan kesalahan:
2.139.390.572 byte / 211 byte = 10.139.291,8sumber
SmileBASIC, 1/1 = 1
Menghasilkan kesalahan
Syntax Error in 0:1
sumber