Uwaga: To nie jest tak duże wyzwanie w golfa; tym bardziej jest prośba o sugestie dotyczące gry w golfa.
Ostatnio miałem zadanie w Pythonie dla mojej klasy programowania WWW, aby sprawdzić, czy możemy kodować. Ponieważ czuję się już dobrze w Pythonie, postanowiłem spróbować zagrać w golfa i zastanawiałem się, czy ludzie mogą wskazać rzeczy, które mi umknęły.
Wiem już, że w niektórych miejscach są dodatkowe spacje, ale bardziej interesują mnie rzeczy koncepcyjne, takie jak używanie, while r:
gdy r jest zmienną, a następnie czekanie na jej „wyczerpanie”!
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
Ponadto: Przykro mi, jeśli nie jest to właściwe pytanie dotyczące strony golfa, ponieważ nie stanowi wyzwania i usunie ją na żądanie.
print
, ale tylko po to sprawdzić)Odpowiedzi:
Oto cała masa mikrooptymalizacji, które możesz wykonać:
Użyj,
.split()
aby utworzyć długą listę (-17 bajtów):Usuń obce nawiasy (-2 bajty):
Użyj ikony (-2 bajty):
Użyj rozszerzonego iterowalnego rozpakowywania, aby zamienić coś w listę (-4 bajty):
Zaimportuj wszystkie rzeczy (-15 bajtów):
Użyj innych funkcji, które mogą wykonywać tę samą pracę tutaj (-5 * 2 = -10 bajtów):
print
domyślnie oddziela spacje (-11 bajtów):Więcej rozpakowywania (-3 bajty):
Efekty uboczne nadużywania (-1 bajt plus wcięcia):
Cokolwiek ponownie użyte i ponad 5 znaków może być warte zapisania jako zmienna (-1 bajt):
Uprość ułamki (-5 bajtów):
Jednoargumentowe nadużycie (-4 bajty):
Lub największy ze wszystkich ...
Spójrz na swój algorytm i sprawdź, czy wymaga on całkowitej zmiany
(Jeśli kiedykolwiek importujesz grę
Counter
w golfa kodowego, prawdopodobnie robisz coś bardzo złego ...)źródło
.title()
dokonując wstępnej kapitalizacji wszystkiego. Przypisz równieżs.count
do zmiennej.