Python ( 128 137 136)
Cholera itertools.permutations
, za tak długie imię!
Rozwiązanie brutalnej siły. Dziwi mnie, że to nie jest najkrótsze: ale chyba itertools
zrujnuje to rozwiązanie.
Nie golfowany:
import itertools
initial_set=map(int, input().split())
ans=[]
for length in range(1, len(x)+1):
for subset in itertools.permutations(initial_set, length):
if sum(subset)==0:
ans+=str(sorted(subset))
print set(ans)
Gra w golfa (brzydka moc wyjściowa):
from itertools import*
x=map(int,input().split())
print set(`sorted(j)`for a in range(1,len(x)+1)for j in permutations(x,a)if sum(j)==0)
Gra w golfa (ładna produkcja) (183):
from itertools import*
x=map(int,input().split())
print `set(`sorted(j)`[1:-1]for a in range(1,len(x)+1)for j in permutations(x,a)if sum(j)==0)`[5:-2].replace("'","\n").replace(",","")
import itertools as i
: importowanie modułu itertools i wywoływanie go i
x=map(int,input().split())
: rozdziela dane wejściowe spacjami, a następnie zamienia wynikowe elementy list na liczby całkowite ( 2 3 -5
-> [2, 3, -5]
)
set ( sorted(j)
dla zakresu in (1, len (x) +1) dla jw i.permutations (x, a) if sum (j) == 0):
Zwraca listę wszystkich podzbiorów w x
, posortowane, gdzie suma wynosi 0, a następnie otrzymuje tylko unikalne elementy
( set(...)
)
Groby (`) wokół sorted(j)
są skrótem Python repr(sorted(j))
. Powodem tego jest to, że zestawy w Pythonie nie mogą obsługiwać list, więc następną najlepszą rzeczą jest użycie ciągów z listą jako tekstem.
3 3 -3 -3
?