Python ( 128 137) 136)
Kurang ajar kau, itertools.permutations karena memiliki nama yang begitu panjang!
Solusi brute force. Saya terkejut itu bukan yang terpendek: tapi saya kiraitertools reruntuhan solusinya.
Tidak Disatukan:
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 (output jelek):
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 (keluaran cantik) (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: mengimpor modul itertools dan memanggilnya i
x=map(int,input().split()): memisahkan input dengan spasi, lalu mengubah item daftar yang dihasilkan menjadi bilangan bulat ( 2 3 -5-> [2, 3, -5])
set ( sorted(j)for a in range (1, len (x) +1) untuk j di i.permutations (x, a) jika jumlah (j) == 0):
Mengembalikan daftar semua himpunan bagian dalam x, disortir, di mana jumlahnya adalah 0, dan kemudian hanya mendapatkan item unik
( set(...))
Kuburan (`) di sekitar sorted(j)adalah singkatan Python repr(sorted(j)). Alasan mengapa ini ada di sini adalah karena set di Python tidak dapat menangani daftar, jadi hal terbaik berikutnya adalah menggunakan string dengan daftar sebagai teks.
3 3 -3 -3?