Saya sedang mengerjakan masalah yang saya atur untuk bersenang-senang, yaitu membuat skrip python yang mencetak angka genap dari 0 hingga 100. Tantangannya adalah membuat skrip sekecil mungkin. Inilah yang saya miliki sejauh ini:
for x in range(0, 101):
if (x % 2 == 0):
print x
Saat ini 60 byte. Adakah yang bisa memikirkan cara untuk membuatnya lebih kecil?
Edit: print(*range(2,101,2),sep='\n')
yaitu 30 byte. Adakah yang lebih kecil?
i=2;exec"print i;i+=2;"*50
0
atau2
? Saya tidak banyak python, tetapi bagi saya sepertinya dua contoh Anda melakukan hal yang berbeda. Harap perbaiki saya jika tidak.print "0 10 100"
(is binary OK?)Jawaban:
Python 2 - 12 karakter
Representasi desimal dari semua angka genap dari 0 hingga 100 dapat ditemukan di output:
Sebagai bonus, begitu juga angka ganjil.
sumber
Python 3, 22 (Mungkin tidak diizinkan)
Jika tantangannya adalah "untuk membuat skrip python yang mencetak angka genap dari 0 hingga 100" dan bukan "untuk membuat skrip python yang mencetak angka genap dari 0 hingga 100, baris baru dipisahkan ", maka solusi terpendek adalah:
Ingat, sangat penting dalam kode golf untuk tidak membatasi diri Anda sendiri - lakukan apa yang ditanyakan masalah, dan jangan lagi.
sumber
possibly not allowed
ada dalam judulnya. Di sisi lain, itu juga mungkin bahwa dia terjebak dalam mencocokkan output dari program awalnya, dan lupa spec masalah awal. Karena saya tidak tahu yang mana masalahnya, saya memberikan jawaban ini.Python2 26
penemuan independen solusi @ bitpwner
sumber
Python 2 - 26
Berdasarkan tip pada exec dengan perkalian string ditemukan di Tips untuk bermain golf di Python .
sumber
Python 2, 26 (mungkin tidak diizinkan)
Itu tidak ditentukan secara spesifik, di mana urutan nomor yang akan dicetak.
sumber
Python 2, 28
sumber
Python 2 - 20 (Mungkin tidak diizinkan)
Ini adalah python 2 spesifik dan mungkin curang karena mencetak daftar, tetapi karena semua angka berakhir di layar:
sumber
Python 2 di * NIX, 24
Jika Anda perlu menambahkan
Maka totalnya adalah 33 karakter.
sumber
os.system
panggilan program sistem.os.system('a')
, karena saya kebetulan memiliki program yang dipanggila
dengan perilaku yang diinginkan pada sistem saya ..Python 3, 29
Jika Anda menggunakan Python 2 dan kebetulan sudah mengimpor fungsi cetak, Anda tidak harus menjadikan objek iterator ke dalam daftar dan itu menjadi 25 karakter:
Saya tidak tahu itu sepenuhnya adil.
Inilah ide lain yang menyenangkan yang bekerja di python 2 atau 3. Ini sedikit lebih lama.
sumber
*a,=map(print,range(0,101,2))
menggunakan Extended Iterable Unpacking .Python 2 - 24
(berdasarkan pada solusi bitpwner dan Sparr)
Dalam shell, "_" berisi nilai ekspresi yang dievaluasi sebelumnya
sumber
range(0,102,2)
karena ini akan menampilkan semua angka genap (ditambah beberapa koma dan dua tanda kurung) di layar.Pemahaman Daftar Python - 39
Ini menggunakan pemahaman daftar, salah satu trik untuk membuatnya lebih pendek adalah dengan mengalikan indeks dengan 2 daripada pergi dari 0 hingga 100 dan pemeriksaan trailing
if x % 2
untuk genap.Menggunakan peta dan saran @ isaacg, itu akhirnya menjadi karakter yang sama:
Sunting: Setelah memisahkan nilai dengan baris baru, ini bukan yang terpendek.
sumber
prints the even numbers from 0 to 100
, bukan hanya menghasilkan mereka. Juga, jika Anda hanya menginginkan daftar,range(0,101,2)
lebih pendek.Python 2 - 20 (dipertanyakan)
Jika solusi pisah ruang isaacg OK, maka mungkin pemformatan daftar normal juga:
Untuk memutar aturan lebih lanjut, terapkan saran SirBraneDamuj dari komentar:
dan Anda berusia 16 tahun. Jadi bagaimana jika ada sampah ekstra yang memisahkan mereka?
sumber