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
?