Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 12

Тема: Как реализовать троичная запись числа python?

  1. Как реализовать троичная запись числа python?

    Ребзя, столкнулся с задачей перевода числа в троичную запись на python, но чето мозг пользы не приносит Может кто-то уже через это проходил и подскажет самый простой способ это сделать? Пожелания - хотелось бы минимум 3 варианта решения: по-простому, по-умному и что-нибудь междумежду. Кстати, было бы супер, если бы кто-то подсказал проверку корректности обратного преобразования, т.е. троичное обратно в десятичное. Большущее спасибо заранее!



  2. Ждём вас в нашем чате в Телеграмм ==>> @pythoneer_chat

    А ТАКЖЕ: Канал о Python, статьи и книги ==>>
    @pythoneer_ru

  3. Эй, не переживай, касатик. Вот по-простому, base-то-3 вариант - мы просто через строковые модули это сделаем:

    Программный код:
    def to_base_3(n):
        if 
    == 0:
            return 
    '0'
        
    nums = []
        while 
    n:
            
    ndivmod(n3)
            
    nums.append(str(r))
        return 
    ''.join(reversed(nums)) 
    Обратка:

    Программный код:
    def from_base_3(s):
        return 
    int(s3
    Примерчик:

    Программный код:
    num 29
    tr_num 
    to_base_3(num)
    print(
    tr_num)  # вывод: 1001
    print(from_base_3(tr_num))  # вывод: 29 
    Не благодарствуй!

  4. Цитата Сообщение от Герда
    Эй, не переживай, касатик. Вот по-простому, base-то-3 вариант - мы просто через строковые модули это сделаем:

    Программный код:
    def to_base_3(n):
        if 
    == 0:
            return 
    '0'
        
    nums = []
        while 
    n:
            
    ndivmod(n3)
            
    nums.append(str(r))
        return 
    ''.join(reversed(nums)) 
    Обратка:

    Программный код:
    def from_base_3(s):
        return 
    int(s3
    Примерчик:

    Программный код:
    num 29
    tr_num 
    to_base_3(num)
    print(
    tr_num)  # вывод: 1001
    print(from_base_3(tr_num))  # вывод: 29 
    Не благодарствуй!
    О, спасибо! Простой и четкий вариант, это я искал!

  5. Теперь умный вариант, с использованием numpy и побитового подхода:

    Программный код:
    import numpy as np
      
    def to_base_3
    (n):
        if 
    == 0:
            return 
    '0'
        
    int(np.ceil(np.log(n+1) / np.log(3)))
        
    np.zeros(ldtype=int)
        for 
    i in range(l):
            
    nb[l-i-1] = divmod(n3)
        return 
    ''.join(map(strb))
      
    def from_base_3(s):
        return 
    int(s3)
      
    # Всё в ажуре:
    num 29
    tr_num 
    to_base_3(num)
    print(
    tr_num)  # 1001
    print(from_base_3(tr_num))  # 29 
    Немножко покопаться пришлось, но зато выглядит стильно!

  6. Цитата Сообщение от Анатолий1980
    Теперь умный вариант, с использованием numpy и побитового подхода:

    Программный код:
    import numpy as np
      
    def to_base_3
    (n):
        if 
    == 0:
            return 
    '0'
        
    int(np.ceil(np.log(n+1) / np.log(3)))
        
    np.zeros(ldtype=int)
        for 
    i in range(l):
            
    nb[l-i-1] = divmod(n3)
        return 
    ''.join(map(strb))
      
    def from_base_3(s):
        return 
    int(s3)
      
    # Всё в ажуре:
    num 29
    tr_num 
    to_base_3(num)
    print(
    tr_num)  # 1001
    print(from_base_3(tr_num))  # 29 
    Немножко покопаться пришлось, но зато выглядит стильно!
    Ого, numpy и троичная система, понял принял, выглядит круто!

  7. Ха, ребят, а вот как-то между: ф-ции встроенные юзаем:

    Программный код:
    def to_base_3(n):
        return 
    format(n'o')
      
    def from_base_3(s):
        return 
    int(s8)

    Можно и так:
    num 29
    tr_num 
    to_base_3(num)
    print(
    tr_num)  # 1001
    print(from_base_3(tr_num))  # 29 
    Вроде покороче, зато понятно даже новичку.

  8. Цитата Сообщение от КапитанАмерика
    Ха, ребят, а вот как-то между: ф-ции встроенные юзаем:

    Программный код:
    def to_base_3(n):
        return 
    format(n'o')
      
    def from_base_3(s):
        return 
    int(s8)

    Можно и так:
    num 29
    tr_num 
    to_base_3(num)
    print(
    tr_num)  # 1001
    print(from_base_3(tr_num))  # 29 
    Вроде покороче, зато понятно даже новичку.
    Блин, объеденили встроенные фишки и покороче, нравится

  9. Могу еще предложить вариант через list comprehension, как-то более pythonic:

    Программный код:
    def to_base_3(n):
        return 
    ''.join([str((// 3**i) % 3) for i in reversed(range(n.bit_length() // 2 + 1))])
      
    def from_base_3(s):
        return 
    int(s3)
      
    num 29
    tr_num 
    to_base_3(num)
    print(
    tr_num)  # 1001
    print(from_base_3(tr_num))  # 29 
    Конечно, с list comprehension эффектно.

  10. Цитата Сообщение от SofiaStorm
    Могу еще предложить вариант через list comprehension, как-то более pythonic:

    Программный код:
    def to_base_3(n):
        return 
    ''.join([str((// 3**i) % 3) for i in reversed(range(n.bit_length() // 2 + 1))])
      
    def from_base_3(s):
        return 
    int(s3)
      
    num 29
    tr_num 
    to_base_3(num)
    print(
    tr_num)  # 1001
    print(from_base_3(tr_num))  # 29 
    Конечно, с list comprehension эффектно.
    Ну все, теперь у меня полный арсенал троичных преобразований, пасиб всем!

Страница 1 из 2 12 ПоследняяПоследняя