Python girilen sayının jumbled olup olmadığını bulma

Gdjer372

Hectopat
Katılım
22 Ekim 2021
Mesajlar
1.050
Çözümler
3
Girilen sayının jumbled (komşu rakamları arasındaki fark maksimum 1) olup olmadığını bulun.

Çözemedim yardımcı olur musunuz?
 
Sayının yan yana seçilen iki rakamı arasındaki farkın maksimum 1 olması gerekiyor.
(jumbled number = karışık sayı)

12 bir karışık sayı iken 13 değildir. (890 değilken 987 karışık sayıdır)

Buna göre girilen sayıyı string (metin) olarak düşünüp her harf için bir sonraki harf ile arasındaki farkı kontrol etmen gerekiyor. Son harf için de ekstra bir kontrol yaparak (sonrasında harf olmadığı için) sorunu çözebilirsin.
 
Çok uğraştım ama yapamıyorum. Çözümü lazım bana.

String olduğu için birbirinden çıkaramıyorum sayıları. İnteger'a da çeviremiyorum kafayı yiyeceğim.
 
Son düzenleme:
Python:
sayi = input("Bir sayı girin:")
a = 0
for x in sayi:
    eski_a = a
    a = x
    if abs(int(a)-int(eski_a)) > 1:
        exit()
print("jumbled")
 
Son düzenleme:
Teşekkürler fakat eksi a kısmını tam anlayamadım. Açıklayabilir misiniz?
Eksi a değil eski a. Yani bir önceki adımdaki a değeri.
sayi = 123 ise;
Adım 1:
eski_a = 0
a = 1
Adım 2:
eski_a = 1
a = 2

.....
Böyle devam eder. Yani önceki satır değerini kaybetme ki çıkarabilsin.
Bu arada kodda ufak bir hata yapılmış düzelttim yenisine bakmayı unutma.
 
Python:
x = "9876513"
print('jumbled' if reduce(lambda a,b: b if abs(int(a)-int(b)) <= 1 else 11, list(x)) != 11 else 'malesef :(')
 
Bu siteyi kullanmak için çerezler gereklidir. Siteyi kullanmaya devam etmek için çerezleri kabul etmelisiniz. Daha Fazlasını Öğren.…