Solusi yang jelas adalah dengan hanya mencetaknya sebagai string, tetapi apakah mungkin untuk menulis kode yang lebih pendek?
Persyaratan:
- Tidak ada input yang harus diproses, dan output harus dalam bentuk
2 3 5 7 11 13 ...
dll. - Tidak ada kata khusus dalam bahasa yang digunakan sama sekali
- Bahasa setidaknya harus memungkinkan pemrograman terstruktur, dan telah memesan kata-kata (jika tidak, poin 2 akan diperdebatkan).
pertama saya secara eksklusif C / C ++ dalam pikiran, tetapi memperpanjang pertanyaan sambil tetap berusaha untuk mencegah kecurangan
Jawaban:
C, 60 karakter
Batasan "tanpa kata kunci" tidak masalah di sini. Saya cukup yakin bahwa memperbaikinya, jika mungkin, tidak akan dilakukan dengan menambahkan kata kunci.
Versi alternatif:
Outputnya tidak sebaik, tapi saya suka
printf
penyalahgunaannya.Trik dalam kedua solusi adalah untuk menggabungkan dua loop (diimplementasikan oleh rekursi) menjadi satu.
n
adalah potensi utamam
berikutnya, pembagi potensial berikutnya.Dalam setiap panggilan rekursif, kami menambah
n
(sambil mengaturm
ke nilai sebelumnya) atau mengurangim
.sumber
Python, 108 karakter
Python tidak dibuat untuk tantangan ini. Wanna
print
? Itu sudah dipesan. Nah, bagaimana kalau kita gunakanstdout
? Yah, itu akan menelan biayaimport
... Anda dapat menebaknya, memesan. Yah ... Saya sedang di unix, jadi saya bisa membuka file descriptor 1, yang kebetulan adalah stdout. Retas!Man, dan iterasi? Tapi tidak ada
eval
. Tidak ada loop, tentu saja, tetapi kita bahkan tidak bisa mendefinisikan fungsi dengandef
ataulambda
. Dan untuk menambah penghinaan pada cedera, kita bahkan tidak bisa menggunakan daftar pemahaman! Saya selalu mencari alasan untuk menggunakan hal-hal sepertimap(p.__mod__,...)
dalam kode golf ... pemahaman selalu lebih baik. Sampai sekarang.Sekarang, Anda mungkin mengeluh itu
exec
adalah kata kunci, meskipun saya tidak menggunakan kata kunci (saya bahkaneval
tidak punyaexec
). Nah, inilah solusi 117-karakter yang tidak digunakan'exec'
.sumber
__import__
, tapi itu akan biaya karakterJavaScript (80 karakter)
Jalankan di konsol browser web Anda.
Digunakan saringan utama, yang ternyata sangat kental.
sumber
C, 183 karakter
Nah, inilah upaya cepat pertama. Saya percaya ini harus memenuhi persyaratan. Saya menggunakan divisi percobaan sederhana untuk menemukan bilangan prima dan loop yang tidak dikontrol dibangun menggunakan preprocessor untuk mengulanginya sampai saya menemukan cukup banyak dari mereka. Jumlah pengulangan telah diubah sehingga tepat 128 bilangan prima dicetak.
sumber
C, 87 karakter
(Saya mencoba menulisnya dengan gaya yang lebih fungsional, tetapi ketidakmampuan saya untuk menggunakan
return
semacam itu mematikan rencana itu.)sumber
C, 134 karakter
Berikut ini adalah solusi alternatif yang mencoba untuk menghindari menggunakan kata-kata sebanyak mungkin, dilindungi undang-undang atau sebaliknya:
Yang digunakan hanyalah
printf
danmain
dengan satu argumen.sumber
Mathematica 50 karakter
Saya tidak yakin bagaimana menafsirkan "kata-kata yang dicadangkan" untuk Mathematica tetapi saya ingin bermain sehingga saya akan menganggapnya berarti melakukan tanpa fungsi bawaan untuk menghasilkan bilangan prima atau menguji primality.
sumber
Haskell, 72 karakter
Diakui, menghindari kata kunci tidak terlalu sulit di Haskell.
sumber
K (ngn / k) , 31 byte
Cobalah online!
sumber