Project Euler Problem 4 için yardım

sayi = []
for i in range(100, 1000):
    for j in range(100, 1000):
        sayi.append(i*j)
        
for b in sayi:
    if b == b[::-1]:
        print(b)

output:‘int’ object is not subscriptable

[1000,100243,12340234]
Mesela bu array içinden str(sayi)[3] yazdığımda output olarak direkt 0 veriyor.

1 Beğeni

ben aynı mantıkla ama başka bi şekilde çözdüm
istediğin konuda yardım edemem ama kendi kodlarımı atayım mı?

1 Beğeni

b burada bir sayı (int) oluyor, siz ona bir str gibi davranıyorsunuz.

1 Beğeni

Tabii, başka bakış açıları görmek çok yararlı olur. Teşekkür ederim

1 Beğeni

Int gibi davrandığımda int object hatası veriyor.

“Int gibi davrandığınız” kodu da atarsanız yardımcı oluruz.

1 Beğeni
def is_palindromic(number):
    number = str(number)
    return number[:3] == number[:2:-1]


a = 999
b = 999

s = 0
while True:
    a -= 1
    if a == 0:
        a = b
        b -= 1
        if b == 0:
            break

    k = a*b
    if s < k and is_palindromic(k):
        s = k


print(s)

2 Beğeni

Haa pardon, şimdi anladım. Int gibi davranıp nasıl çözebilirim soruyu. Tersten yazılışı da aynı olan üç basamaklı iki sayının en büyük çarpımını istiyor

küme = set()
text_sayi = ""
liste = []

for i in range(100,1000):
    for a in range(100,1000):
        text_sayi = str(i * a)
        küme.add(text_sayi)

for s in küme:
    if len(str(s)) == 6 and s[0:1] == s[5:6] and s[1:2] == s[4:5] and s[2:3] == s[3:4]:
        liste.append(s)

print(max(liste))
1 Beğeni

s[i: i+1], s[i] ile eşdeğerdir.

2 Beğeni

Tek yapmanız gereken sayıyı str kullanarak string’e çevirmek.

1 Beğeni

Aynen öyle yaptım

sayi = []
for i in range(100, 1000):
    for j in range(100, 1000):
        sayi.append(str(i*j))


for b in sayi:
    if b == b[::-1]:
        print(b)
    

Çok teşekkür ederim

2 Beğeni