Nota: Este não é um desafio para o golfe; é mais ainda pedir sugestões de golfe.
Recentemente, tive uma atribuição Python para minha classe de desenvolvimento web, a fim de verificar se poderíamos codificar. Como já me sinto confortável em Python, decidi tentar jogar golfe e fiquei pensando se as pessoas poderiam apontar as coisas que eu sentia falta.
Eu já sei que existem espaços extras em alguns lugares, mas estou mais interessado em coisas conceituais, como usar while r:
quando r é uma variável e esperar que "acabe"!
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
Além disso: desculpe se esta não é uma pergunta apropriada para a página de código de golfe, pois não é um desafio e a removerá mediante solicitação.
print
, mas apenas para verificar) #Respostas:
Aqui está um monte de micro otimizações que você pode fazer:
Use
.split()
para criar uma lista longa (-17 bytes):Remova colchetes estranhos (-2 bytes):
Use splat (-2 bytes):
Use a descompactação iterável estendida para transformar algo em uma lista (-4 bytes):
Importe todas as coisas (-15 bytes):
Use outras funções que podem fazer o mesmo trabalho aqui (-5 * 2 = -10 bytes):
print
separa por espaço por padrão (-11 bytes):Mais descompactação (-3 bytes):
Efeitos colaterais do abuso (-1 byte, mais recuos):
Vale a pena salvar qualquer coisa reutilizada e com mais de 5 caracteres como variável (-1 byte):
Simplifique frações (-5 bytes):
Abuso unário (-4 bytes):
Ou o maior de todos ...
Olhe para o seu algoritmo e veja se ele precisa mudar completamente
(Se você se importar
Counter
em um código-golfe, provavelmente está fazendo algo muito errado ...)fonte
.title()
pré-capitalizar tudo. Além disso, atribuas.count
a uma variável.