Üç farklı sayıyı bulma

Ben de cevabları paylaşıyorum :slightly_smiling_face:

[[594, 27, 16038], [17082, 3, 5694], [20457, 3, 6819], [20754, 3, 6918], [21658, 3094, 7], [8169, 3, 24507], [27504, 3, 9168]]

Ben bu kodu daha dün yazmıştım ama çalışması biraz uzun sürüyor diye atmamıştım. Şimdi 5dk açık bıraktım tamamlandı.

import itertools

ayıraçlar = list(itertools.combinations(range(10), 2))

sayı_listesi = [str(i) for i in range(10)]

sayı_grupları = itertools.permutations(sayı_listesi, 10)

durum = [0, 0, 0]

sonuç = []

sayaç = 0

for sayılar in sayı_grupları:
    sayaç += 1

    for ayıraç in ayıraçlar:
        
        try:
            durum[0] = int("".join(sayılar[:ayıraç[0]]))
            durum[1] = int("".join(sayılar[ayıraç[0]:ayıraç[1]]))
            durum[2] = int("".join(sayılar[ayıraç[1]:]))
        except ValueError: continue

##        print(durum)
        
        geç = 0
        for i in durum:
            if i==0:
                geç = 1
                break

        if geç: continue
            
        if durum[0] * durum[1] == durum[2]:
            if durum[0] % durum[1] == 0 or durum[1] % durum[0] == 0:
                sonuç.append(durum.copy())
                continue

        if durum[0] * durum[2] == durum[1]:
            if durum[0] % durum[2] == 0 or durum[2] % durum[0] == 0:
                sonuç.append(durum.copy())
                continue

        if durum[2] * durum[1] == durum[0]:
            if durum[2] % durum[1] == 0 or durum[1] % durum[2] == 0:
                sonuç.append(durum.copy())
                continue