Python ( 128 137 136)
Verdammt, dass du itertools.permutationsso einen langen Namen hast !
Brute-Force-Lösung. Ich bin überrascht, dass es nicht die kürzeste ist, aber ich vermute, dass sie itertoolsdie Lösung ruiniert.
Ungolfed:
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)
Golf (hässliche Leistung):
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)
Golf (ziemlich gute Leistung) (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: Importieren des itertools-Moduls und Aufrufen i
x=map(int,input().split()): trennt die Eingabe durch Leerzeichen und wandelt dann die Elemente der resultierenden Listen in Ganzzahlen um (2 3 -5 -> [2, 3, -5])
set ( sorted(j)für a in range (1, len (x) +1) für j in i.permutations (x, a), wenn summe (j) == 0):
Gibt eine Liste aller Teilmengen in xsortiert zurück, wobei die Summe ist 0 und erhält dann nur die eindeutigen Elemente
( set(...))
Bei den Gräbern (`) handelt es sich um die sorted(j)Abkürzung für Python repr(sorted(j)). Der Grund dafür ist, dass Sets in Python keine Listen verarbeiten können. Daher ist es am besten, Zeichenfolgen mit einer Liste als Text zu verwenden.
3 3 -3 -3?