Soru x tabanındaki bir sayıyı y tabanına dönüştürmek

paraffin

Öğrenci
Katılım
6 Aralık 2023
Mesajlar
68
Reaksiyon puanı
53
Puanları
18
Yaş
31
Merhaba dostlar.

x tabanındaki bir sayıyı y tabanına, sayıyı onluk tabana dönüştürmeden, yani x'ten y'ye direkt olarak nasıl dönüştürebilirim? Ve ayrıca sayı çok büyük, bu sebeple parça parça işlem yapılmalı.

Sayının formu şu: [37, 4, 117]

Örnek:
13 tabanında [1, 12] = 25
7 tabanında [3, 4] = 25
3 tabanında [2, 2, 1] = 25

Eğer bir python kodu veya sözdekod o da olmazsa matematiksel olarak yöntemi yazarsanız minnettar olurum.
 

magnify

localhost
Cezalı
Katılım
10 Kasım 2021
Mesajlar
192
Reaksiyon puanı
112
Puanları
43
Python:
def taban_donusumu(sayi, x, y):
    onluk_tabanda = 0
    
    # Verilen sayıdaki her bir basamağı onluk tabana dönüştürerek toplamak
    for i, basamak in enumerate(reversed(sayi)):
        onluk_tabanda += basamak * (x ** i)
    
    # Onluk tabandaki sayıyı hedef tabana dönüştürmek
    hedef_tabanda = []
    while onluk_tabanda > 0:
        hedef_tabanda.append(onluk_tabanda % y)
        onluk_tabanda //= y
    
    # Hedef tabandaki sayıyı ters çevirerek doğru sırayla elde etmek
    hedef_tabanda.reverse()
    
    return hedef_tabanda

# Örnek kullanım
sayi = [37, 4, 117]
x = 13
y = 10

print(f"{x} tabanındaki {sayi} sayısı, {y} tabanına dönüştürüldüğünde: {taban_donusumu(sayi, x, y)}")
 

paraffin

Öğrenci
Katılım
6 Aralık 2023
Mesajlar
68
Reaksiyon puanı
53
Puanları
18
Yaş
31
Python:
def taban_donusumu(sayi, x, y):
    onluk_tabanda = 0
   
    # Verilen sayıdaki her bir basamağı onluk tabana dönüştürerek toplamak
    for i, basamak in enumerate(reversed(sayi)):
        onluk_tabanda += basamak * (x ** i)
   
    # Onluk tabandaki sayıyı hedef tabana dönüştürmek
    hedef_tabanda = []
    while onluk_tabanda > 0:
        hedef_tabanda.append(onluk_tabanda % y)
        onluk_tabanda //= y
   
    # Hedef tabandaki sayıyı ters çevirerek doğru sırayla elde etmek
    hedef_tabanda.reverse()
   
    return hedef_tabanda

# Örnek kullanım
sayi = [37, 4, 117]
x = 13
y = 10

print(f"{x} tabanındaki {sayi} sayısı, {y} tabanına dönüştürüldüğünde: {taban_donusumu(sayi, x, y)}")
Maalesef chatgpt de aynı hatayı yapıyor. Önce onluk tabana dönüştürüyor. Oysa onluk tabana dönüştürmeden direkt x'ten y'ye dönüştürmek istiyorum. Yine de cevabınız için sağolun.
 
Üst