Python ( 128137) 136)
Lanet olsun, itertools.permutations böyle uzun bir isme sahip olduğunuz için!
Kaba kuvvet çözümü. Bunun en kısa değil olduğuna şaşırdım: ama sanırımitertools çözümü mahvediyor.
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 (çirkin çıktı):
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 (güzel çıktı) (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: itertools modülünü içe aktarma ve çağırma i
x=map(int,input().split()): girdiyi boşluklara göre ayırır, ardından ortaya çıkan listelerin öğelerini tamsayılara dönüştürür ( 2 3 -5->[2, 3, -5] )
grubu ( sorted(j)i.permutations j aralığındaki bir (1, len (x) 1) (x, a) eğer toplamı (j) '== 0):
Tüm alt kümelerinin döndüren bir listesi x, burada toplamı, kriteri 0 olur ve yalnızca benzersiz öğeleri
( set(...)) alır
Etrafındaki mezarlar (`) sorted(j)Python'un kısaltmasıdır repr(sorted(j)). Burada olmasının nedeni Python'daki kümelerin listeleri işleyememesidir, bu nedenle bir sonraki en iyi şey, bir listeye sahip dizeleri metin olarak kullanmaktır.
3 3 -3 -3?