CCC + BBB + AAA = CAAB ise, A, B, C harflerini nasıl bulabilirim.
(Rakamlar farklı ve 1’den 9’a kadar tam sayılardır.)
CCC + BBB + AAA = CAAB ise, A, B, C harflerini nasıl bulabilirim.
(Rakamlar farklı ve 1’den 9’a kadar tam sayılardır.)
Burada şu tarz bir matematik kullanmamız gerekecek,
AAA = 100A + 10A + A = 111A
(Yüzler basamagındaki rakamın 100 katı + onlar basamagındaki rakamın 10 katı + birler basamağındaki rakam)
Aynı şekilde,
BBB = 111B
CCC = 111C’dir.
CAAB dediğimiz şey ise 1000C + 100A + 10A + B’dir.
Sonuç itibariyle,
111A+111B+111C = 1000C+110A+B’dir.
Bundan sonrası artık değer vererek gerekli kombinasyonları bulmaktır.
Bu bilinmeyenler rakamdır fakat 0 olamazlar. Cünkü AAA gibi, BBB gibi değerlerde yüzler basamağında yer almışlardır. Bir sayının en büyük basamağı 0 olamaz.
Yani 0 < A, B, C < 10 şeklindedir aralığımız.
Bunu da for döngüleri ile oluşturacağız.
def cozumle(sayi):
# "AAA"yı parametre olarak alacağız. Her ne kadar ismine sayi desem de aslında karakter veri tipinde.
uzunluk = len(sayi)
liste1 = []
liste2 = []
for i in range(uzunluk-1, -1, -1):
liste2.append(10**i)
for i in range(0, uzunluk):
liste1.append(sayi[i])
return liste1, liste2, uzunluk
def hesapla(n1, n2, n3, n4):
n1, n2, n3 ,n4 = cozumle(n1), cozumle(n2), cozumle(n3), cozumle(n4)
list1 = [n1, n2, n3, n4]
list2 = [0, 0, 0, 0]
for A in range(1, 10):
for B in range(1, 10):
for C in range(1, 10):
list2 = [0, 0, 0, 0]
for x in range(4):
for y in range(list1[x][2]):
if list1[x][0][y] == "A":
list2[x] += list1[x][1][y] * A
elif list1[x][0][y] == "B":
list2[x] += list1[x][1][y] * B
else:
list2[x] += list1[x][1][y] * C
if sum(list2[0:3]) == list2[3]:
print(f"A: {A}, B: {B}, C:{C}")
hesapla("AAA", "BBB", "CCC", "CAAB")
hesapla("AB", "BC", "CA", "ABC")
Çıktı:
A: 9, B: 8, C: 1
A: 1, B: 9, C:8
Şeklinde olacaktır.
Not: Kod kısmı gereksiz derecede uzun olabilir. Dilerseniz değerleri input ile alacak şekilde ayarlayabilirsiniz.
Edit: cozumle() fonksiyonunda bir terslik varmış, şimdi düzelttim. Artık 2 basamaklı sayılarda da çalışıyor.
ah be hocam ben cevaplayacaktım çok beğenmiştim soruyu :D
Daha kısa bir algo yazmana kim engel ki
Hocam sizde bi kod paylaşabilir misiniz
Müsait iseniz?
import itertools
for a, b, c in itertools.permutations([1, 2, 3, 4, 5, 6, 7, 8, 9], 3):
if 111*a + 111*b + 111*c == 1000*c + 110*a + b:
print(a, b, c)
# 9 8 1
CCC + BBB + AAA = CAAB
CCC = 100*C + 10*C + C = 111*C
BBB = 100*B + 10*B + B = 111*B
AAA = 100*A + 10*A + A = 111*A
CAAB = 1000*C + 100*A + 10*A + B = 1000*C + 110*A + B
1000*C + 110*A + B = 111*A + 111*B + 111*C
A = 889*C - 110*B
from itertools import permutations
for a, b, c in permutations(range(10), 3):
if a == 889*c - 110*b:
print(f'a: {a} b: {b} c: {c}')
# a: 9 b: 8 c: 1