Ringkasan
Terapkan FizzBuzz di Python, dengan token sekecil mungkin.
Tantangan
Tulis program yang mencetak angka desimal dari 1 hingga 100 inklusif. Tetapi untuk kelipatan tiga cetak "Fizz" bukan nomor dan untuk kelipatan lima cetak "Buzz". Untuk angka yang merupakan kelipatan dari tiga dan lima cetak "FizzBuzz". Program harus ditulis dalam beberapa versi Python.
Untuk detail lebih lanjut, lihat 1, 2, Fizz, 4, Buzz
Mencetak gol
Skor Anda akan sama dengan jumlah node di pohon sintaksis abstrak kode Anda, seperti yang dilaporkan oleh program ini untuk Python 3 , atau program ini untuk Python 2 . Untuk menjalankan program, berikan nama file kode Anda sebagai argumen baris perintah ke program. Misalnya:
python simple_counter.py fizzbuzz.py
Program-program ini didasarkan pada modul ast Python . Jika Anda mengalami kesulitan, beri tahu saya.
Untuk mencegah solusi sepele, seperti mengeksekusi string panjang dengan program aktual, atau meng-hardcoding output, ada beberapa batasan tambahan:
Tidak ada token dalam kode Anda yang boleh lebih dari 15 karakter. Program-program di atas akan memeriksa persyaratan ini untuk Anda. Perhatikan bahwa untuk kemudahan implementasi, program di atas menghitung komentar sebagai token.
Eksekusi / evaluasi kode dilarang.
Jika Anda memiliki pertanyaan, apakah sesuatu diperbolehkan, tanyakan kepada saya.
Skor Heuristik
Aturan berikut biasanya cukup untuk menghitung skor program Anda:
Blok pernyataan adalah 1 poin:
if
,for ... in ...
,while
,else
, dllPernyataan mandiri adalah 1 poin:
print
Python 2,break
,pass
, dllVariabel adalah 2 poin
Literal tunggal-tanda adalah 1 point:
2131
,"Hello, world!"
,True
Fungsinya adalah 3 poin (2 untuk menggunakan variabel, 1 ekstra):
print
dalam Python 3range
,, dll.Operator adalah 2 poin:
+
,*
,%
,and
,not
, dll=
adalah 1 poinTugas Augmented adalah 2 poin:
+=
,|=
, dllTanda kurung, indentasi, dll. Adalah 0 poin.
Baris yang berisi ekspresi, berlawanan dengan penugasan atau ekspresi, adalah +1 poin.
Memiliki kode sama sekali adalah 1 poin.
Tantangan:
Skor terendah menang. Semoga berhasil!
sumber
Jawaban:
33
Python 2
sumber
46
sumber
repr
sejauh yang saya ingat.3934sumber
Python 2, 36
Saya pikir ini adalah pendekatan yang terpendek yang tidak menggunakan sejumlah besar / string.
sumber