Ne yapmak istediğinizi anladım ama şu kullanımı ilk defa görüyorum
if not (e := sayılar[start:i]): continue
sayı_listesi.append(e)
start = i
if e := sayılar[start:]: sayı_listesi.append(e)
orayı açıklarmısınız ' e : = ' kısmıını
Bu şart e değişkeni [] olursa sağlanıyor, bunun için listeye eklemiyorum. sayıların içinde ardışık iki sayı bulunursa sağlanır tabii ki. Hem niye bana soruyorsunuz ki, oraya bir tane print koymanız yeterli
Şöyle bir şey yazdım ama sadece 7 tane buluyor (soruda 12 tane bulunduğu söylenmiş), bir de sebebini anlayamadım ama aynı işlem iki defa yapılmış oluyor (aynı toplam iki defa elde ediliyor):
import itertools
sayılar = "123456789"
sonuçlar = set()
for ayıraç_sayısı in range(7):
ayıraçlar = itertools.combinations(range(1, 9), ayıraç_sayısı)
for ayıraç in ayıraçlar:
sayı_listesi = []
start = 0
for i in ayıraç:
if not (e := sayılar[start:i]): continue
sayı_listesi.append(e)
start = i
if e := sayılar[start:]: sayı_listesi.append(e)
for k in range((len(sayı_listesi)**2)):
toplam = sayı_listesi[0]
for i, j in enumerate(sayı_listesi[1:]):
if k & 2**i:
toplam += "+" + j
else:
toplam += "-" + j
## print(toplam)
if eval(toplam) == 100:
sonuçlar.add(toplam)
print(sonuçlar)
import itertools
sayılar = "123456789"
for ayıraç_sayısı in range(7):
ayıraçlar = itertools.combinations(range(1, 9), ayıraç_sayısı)
for ayıraç in ayıraçlar:
## print(ayıraç)
sayı_listesi = []
start = 0
for i in ayıraç:
if not (e := sayılar[start:i]): continue
sayı_listesi.append(e)
start = i
if e := sayılar[start:]: sayı_listesi.append(e)
import itertools
sayılar = "123456789"
for ayıraç_sayısı in range(7):
ayıraçlar = itertools.combinations(range(1, 9), ayıraç_sayısı)
aranan_listeler=[]
for ayıraç in ayıraçlar:
## print(ayıraç)
sayı_listesi = []
start = 0
for i in ayıraç:
if not (e := sayılar[start:i]): continue
sayı_listesi.append(e)
start = i
if e := sayılar[start:]: sayı_listesi.append(e)
for j in sayı_listesi:
aranan_listeler.append(sayı_listesi)
ekle1=[]
for i in aranan_listeler:
if i not in ekle1:
ekle1.append(i)
ekle2=[]
for i in ekle1:
a=' -'.join(i)
ekle2.append(a)
ekle3=[]
for j in ekle2:
b=j.split(' ')
ekle3.append(b)
işlem_listesi=[]
for i in range(0,len(ekle1)):
işlem_listesi.append(ekle1[i]+ekle3[i])
kullanılacak=[]
for i in işlem_listesi:
for k in range(1,len(i)+1):
a=itertools.combinations(i,k)
for j in a:
kullanılacak.append(list(j))
istenenler=[]
for i in kullanılacak:
sayaç=0
ekle=[]
for j in i:
ekle.append(int(j))
if sum(ekle)==100:
istenenler.append(i)
for i in istenenler:
if set(i)=={'123','45','-67','8','-9'}:
True
sonuç=[]
for i in istenenler:
kullan=[]
for j in i:
kullan.append(abs(int(j)))
if len(set(kullan))==len(kullan):
sonuç.append(i)
nihayet=[]
for i in sonuç:
if set(i) not in nihayet:
nihayet.append(set(i))
buldum=[]
for i in nihayet:
boş=''
for j in i:
boş+=j
c=boş.replace('-','')
if len(c)==9:
buldum.append(i)
böyle biraz karışda olsa sonuca giden bir şey yazdım
sorun şurda çıkıyor
istenenler=[]
for i in kullanılacak:
ekle=[]
for j in i:
ekle.append(int(j))
if sum(ekle)==100:
istenenler.append(i)
for i in istenenler:
if set(i)=={'123','45','-67','8','-9'}:
True
Şimdi 10 tane buldum. Yukarıda attığım kodda saçma bir hata yapmışım, düzelttim.
import itertools
sayılar = "123456789"
sonuçlar = set()
for ayıraç_sayısı in range(7):
ayıraçlar = itertools.combinations(range(1, 9), ayıraç_sayısı)
for ayıraç in ayıraçlar:
sayı_listesi = []
start = 0
for i in ayıraç:
if not (e := sayılar[start:i]): continue
sayı_listesi.append(e)
start = i
if e := sayılar[start:]: sayı_listesi.append(e)
for k in range(2 ** (len(sayı_listesi) - 1)):
toplam = sayı_listesi[0]
for i, j in enumerate(sayı_listesi[1:]):
if k & 2**i:
toplam += "+" + j
else:
toplam += "-" + j
## print(toplam)
if eval(toplam) == 100:
sonuçlar.add(toplam)
## print()
print(sonuçlar)
import itertools
sayılar = "123456789"
sonunsonu=[]
for ayıraç_sayısı in range(8):
ayıraçlar = itertools.combinations(range(1, 9), ayıraç_sayısı)
aranan_listeler = []
for ayıraç in ayıraçlar:
## print(ayıraç)
sayı_listesi = []
start = 0
for i in ayıraç:
if not (e := sayılar[start:i]): continue
sayı_listesi.append(sayılar[start:i])
start = i
if e := sayılar[start:]: sayı_listesi.append(e)
for j in sayı_listesi:
aranan_listeler.append(sayı_listesi)
ekle1 = []
for i in aranan_listeler:
if i not in ekle1:
ekle1.append(i)
ekle2 = []
for i in ekle1:
a = ' -'.join(i)
ekle2.append(a)
ekle3 = []
for j in ekle2:
b = j.split(' ')
ekle3.append(b)
işlem_listesi = []
for i in range(0, len(ekle1)):
işlem_listesi.append(ekle1[i] + ekle3[i])
kullanılacak = []
for i in işlem_listesi:
for k in range(1, len(i) + 1):
a = itertools.combinations(i, k)
for j in a:
kullanılacak.append(list(j))
istenenler = []
for i in kullanılacak:
sayaç = 0
for j in i:
sayaç += int(j)
if sayaç == 100:
istenenler.append(i)
sonuç = []
for i in istenenler:
kullan = []
for j in i:
kullan.append(abs(int(j)))
if len(set(kullan)) == len(kullan):
sonuç.append(i)
ensonunda=[]
for i in sonuç:
ekle=[]
for j in i:
a=j.replace('-','')
ekle.append(a)
topla=''
for k in ekle:
topla+=k
if len(topla)==9:
ensonunda.append(i)
sonunsonu.append(ensonunda)
buraya=[]
for i in sonunsonu:
for j in i:
buraya.append(j)
vurgun=[]
for i in buraya:
if set(i) not in vurgun:
vurgun.append(set(i))
print(vurgun)
print(len(vurgun))