Mari kita lihat loop khas, yang biasanya melakukan 8 iterasi:
for (int x=0; x<8; ++x);
Anda harus membuatnya tak terbatas!
Ini adalah kontes popularitas untuk semua bahasa yang mendukung bentuk for
loop seperti itu. Jadi solusi dengan skor tertinggi (upvotes minus downvotes) menang.
Jika bahasa Anda memiliki bentuk for
lingkaran lain, tetapi Anda yakin, Anda dapat membuat sesuatu yang keren dengan itu, jangan ragu untuk mengirim jawabannya dan menandainya sebagai tidak bersaing. Saya berhak memperbesar ruang lingkup konstruksi dan bahasa yang tersedia, tetapi tidak akan pernah menyusut, jadi jangan takut menjatuhkan solusi yang sebelumnya benar.
Apa solusinya?
Solusi terdiri dari dua program.
Program pertama adalah program bersih . Ini adalah program khas dalam bahasa Anda dengan for
loop membuat 8 iterasi. Seharusnya program yang normal, yang bisa ditulis oleh pengembang. Tidak ada peretasan khusus untuk tujuan persiapan. Sebagai contoh:
int main()
{
for (int x=0; x<8; ++x);
return 0;
}
Program kedua ditambah. Program ini harus berisi semua kode dari program bersih dan beberapa kode tambahan. Ada beberapa titik ekstensi, lihat bagian aturan lengkap untuk detailnya. Program augmented untuk yang bersih di atas bisa
inline bool operator < (const int &a, const int &b)
{
return true;
}
int main()
{
for (int x=0; x<8; ++x);
return 0;
}
Itu hanya sebuah contoh (tidak dapat dikompilasi dalam C ++) untuk menunjukkan ide. Program augmented benar benar harus dapat dikompilasi, bekerja dan memiliki loop tak terbatas.
Aturan lengkap
Kedua program:
- Bahasa apa pun dengan dukungan
for
loop seperti itu ok. - Badan loop harus kosong. Lebih tepatnya, Anda dapat menempatkan beberapa output atau kode lain ke dalam loop, tetapi perilaku loop harus sama jika loop kosong.
Program bersih:
Loop menggunakan bilangan bulat atau numerik dan melakukan 8 iterasi:
for (int x=0; x<8; ++x); // C, C++, C# for (var x=0; x<8; ++x); // C#, Javascript for (auto x=0; x<8; ++x); // C, C++ for (auto signed x=0; x<8; ++x); // C, C++ for (register int x=0; x<8; ++x); // C, C++
Jenis yang ditentukan pengguna tidak diizinkan.
- Penggunaan properti (kecuali variabel global) sebagai ganti variabel loop tidak diizinkan.
Deklarasi variabel bisa di dalam atau di luar loop. Kode berikut ok:
int x; for(x=0; x<8; ++x);
Baik kenaikan awalan atau postfix dapat digunakan.
Batas lingkaran
8
harus ditulis sebagai literal konstan tanpa menyimpan ke konstanta bernama atau variabel. Itu dibuat untuk mencegah solusi berdasarkan mendeklarasikan variabel atau konstanta sama dengan 8, dan kemudian menugaskan kembali, menimpa atau membayangi dengan nilai lain:const double n = 8; int main() { const double n = 9007199254740992; for (double x=0; x<n; ++x); return 0; }
Program augmented:
- Harus mengandung semua kode dari kode yang bersih.
- Harus memperluas program bersih dalam jumlah terbatas poin ekstensi.
- Harus mengeksekusi loop yang sama
for
dengan infinite loop itu sendiri.
Menempatkan loop ke dalam konstruksi tak terbatas lain tidak ok. - Runtime atau kompilasi waktu tambalan kode diizinkan selama representasi tekstual tidak berubah.
- Menempatkan konstruksi ke dalam string dan meneruskannya
eval
tidak diizinkan.
Poin ekstensi:
- Di mana saja di luar fragmen dengan kode bersih, termasuk file lain atau rakitan lainnya.
for
pernyataan (sebagai bagian tunggal -for
konstruksi dan tubuhnya) harus dijaga tidak berubah.- Deklarasi variabel harus tetap sama.
- Setiap tempat di antara pernyataan sederhana dapat digunakan sebagai titik ekstensi.
- Jika dan hanya jika variabel dinyatakan di luar loop dan tanpa penugasan langsung dari nilai, penugasan tersebut dapat ditambahkan.
/* extension point here */
int main()
/* extension point here */
{
/* extension point here */
int x /* extension point for assignment here */;
/* extension point here */
for (x=0; x<8; ++x);
/* extension point here */
return 0;
/* extension point here */
}
/* extension point here */
int main()
{
/* BEGIN: No changes allowed */ int x = 0; /* END */
/* extension point here */
/* BEGIN: No changes allowed */ for (x=0; x<8; ++x); /* END */
return 0;
}
PS: Jika memungkinkan, berikan tautan ke IDE online.
java.lang.Integer
? 2. Ini akan lebih baik dengan kriteria kemenangan yang tepat.