Catatan: Ini bukan tantangan golf; lebih dari itu meminta saran golf.
Baru-baru ini saya memiliki tugas Python untuk kelas pengembangan web saya, untuk memeriksa apakah kami bisa membuat kode. Karena saya sudah merasa nyaman dengan Python, saya memutuskan untuk mencoba dan bermain golf, dan saya bertanya-tanya apakah orang bisa menunjukkan hal-hal yang saya lewatkan.
Saya sudah tahu bahwa ada ruang tambahan di beberapa tempat, tapi saya lebih tertarik pada hal-hal konseptual, seperti menggunakan while r:
ketika r adalah variabel, dan kemudian menunggu itu "habis"!
import random
from collections import Counter
s=l=''
c=['yellow','blue','white','green','Black', 'purple', 'silver', 'cyan', 'magenta', 'red']
n=[10,15,1,10,6,15,10,25,1,12,5,10,4,6,5,12,0,10,1,1]
o=i=0
for y in c:l+=y[0]*(random.randint(n[o],n[o+1]));o+=2
l=list(l)
print("Welcome to the CIMS Gumball Machine Simulator\nYou are starting with the following gumballs:")
for b in c:print(str(l.count(b[0])) + " "+b);random.shuffle(l)
print("Here are your random purchases:")
while 'r' in l:
random.shuffle(l); r=l.pop(); s+=r
for j in c:
if j[0] == r:print(j.capitalize())
print("You purchased %i gumballs, for a total of $%.2f \nMost common gumball(s):" % (len(s),len(s)*25/100))
a=Counter(s).most_common()
m=[x[1] for x in a]
while m[0] == m[i]:
for j in c:
if j[0] == a[i][0]:print(j.capitalize(), end=" ")
if(i<(len(m)-1)):i+=1
else:break
Juga: Saya minta maaf jika ini bukan pertanyaan yang sesuai untuk halaman kode golf, karena ini bukan tantangan dan akan menghapusnya berdasarkan permintaan.
print
, tetapi hanya untuk memeriksa)Jawaban:
Inilah sejumlah optimasi mikro yang dapat Anda lakukan:
Gunakan
.split()
untuk membuat daftar panjang (-17 byte):Hapus kurung asing (-2 byte):
Gunakan splat (-2 bytes):
Gunakan pembongkaran yang dapat diperpanjang untuk mengubah sesuatu menjadi daftar (-4 byte):
Impor semua hal (-15 byte):
Gunakan fungsi lain yang dapat melakukan pekerjaan yang sama di sini (-5 * 2 = -10 byte):
print
memisahkan menurut ruang secara default (-11 byte):Lebih banyak membongkar (-3 byte):
Efek samping penyalahgunaan (-1 byte, plus indentasi):
Apa pun yang digunakan kembali dan lebih dari 5 karakter mungkin layak disimpan sebagai variabel (-1 byte):
Sederhanakan fraksi (-5 byte):
Penyalahgunaan yang tidak umum (-4 byte):
Atau yang terbesar ...
Lihatlah algoritme Anda, dan lihat apakah perlu diubah sama sekali
(Jika Anda menemukan diri Anda mengimpor
Counter
kode-golf, Anda mungkin melakukan sesuatu yang sangat salah ...)sumber
.title()
dengan melakukan prapembuatan segalanya. Juga, tetapkans.count
ke variabel.