Nota: Esto no es tanto un desafío de golf; es más que pedir sugerencias de golf.
Recientemente tuve una asignación de Python para mi clase de desarrollo web, para verificar si podíamos codificar. Como ya me siento cómodo en Python, decidí intentar jugar al golf y me preguntaba si la gente podría señalar cosas que me perdí.
Ya sé que hay espacios adicionales en algunos lugares, pero estoy más interesado en cosas conceptuales, como usar while r:
cuando r es una variable, ¡y luego esperar a que se agote!
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
Además: lo siento si esta no es una pregunta adecuada para la página de golf de código, ya que no es un desafío y la eliminará a pedido.
print
, pero solo para verificar)Respuestas:
Aquí hay un montón de micro optimizaciones que puede hacer:
Use
.split()
para crear una lista larga (-17 bytes):Eliminar paréntesis extraños (-2 bytes):
Use splat (-2 bytes):
Use el desempaquetado iterable extendido para convertir algo en una lista (-4 bytes):
Importar todas las cosas (-15 bytes):
Utilice otras funciones que pueden hacer el mismo trabajo aquí (-5 * 2 = -10 bytes):
print
se separa por espacio por defecto (-11 bytes):Más desempaquetado (-3 bytes):
Efectos secundarios de abuso (-1 byte, más sangrías):
Cualquier cosa reutilizada y más de 5 caracteres podría valer la pena guardarla como una variable (-1 byte):
Simplifica fracciones (-5 bytes):
Abuso unario (-4 bytes):
O el más grande de todos ...
Mire su algoritmo y vea si necesita cambiar por completo
(Si alguna vez te encuentras importando
Counter
en un código de golf, probablemente estés haciendo algo muy mal ...)fuente
.title()
precapitalizar todo. Además, asignes.count
a una variable.