1. Си / Говнокод #29073

    +1

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    /* Python:
    
    def A004086(n):
    return int(str(n)[::-1])
    */
    
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    int A004086(int n) {
        char str[12]; // Enough to hold the string representation of an int
        sprintf(str, "%d", n);
        int len = strlen(str);
        char reversed[12];
        
        for (int i = 0; i < len; i++) {
            reversed[i] = str[len - 1 - i];
        }
        reversed[len] = '\0'; // Null-terminate the string
        
        return atoi(reversed);
    }

    Результат переписывание с "Python" на "C". A004086 это последовательность из OEIS https://oeis.org/A004086

    Запостил: j123123, 02 Января 2025

    Комментарии (12) RSS

    • Анскильно это. Надо расхреначить число на отдельные цифры через цикл через взятие остатка от деления на 10 и потом обратным ходом состыковывать через цикл, умножая питушню на 10

      int A004086(int n)
      {
        char str[12];
        int i = 0;
        while (n > 0)
        {
          str[i] = n % 10;
          n /= 10;
          i++;
        }
      
        int len = i;
        while (i != 0)
        {
          n *= 10;
          n += str[len-i];
          i--;
        } 
        return n;
      }


      Нейросетевая переписывалка вот тут, если что: https://www.codeconvert.ai/python-to-c-converter
      Ответить
      • А вот если с Си это на питон переписать, то:
        def A004086(n):
            str_digits = []
            i = 0
            while n > 0:
                str_digits.append(n % 10)
                n //= 10
                i += 1
        
            length = i
            while i != 0:
                n *= 10
                n += str_digits[length - i]
                i -= 1
            return n
        Ответить
      • Но и это конечно хуита.
        Тут вообще без буфера можно обойтись

        Сначала узнаем количество знаков в числе (можно через кучку ифов или еще каким-то образом), потом в цикле тупо от числа откусываем по цифре с головы через "деление" и "остаток от деления", и напихиваем его в другое число, умножая на 1, 10, 100 и так далее
        Ответить
      • Скильно, зато менее читаемо.
        Ответить
    • > char str[12]; // Enough to hold the string representation of an int

      Это хуйня конечно
      Ответить
      • Кстати, а зачем тут вообще чар? цифр всего десять, а не 255.
        Ответить
        • У меня в Си нет типа, который бы принимал значения от 0 до 9
          Ответить
          • На одну цифру нужно 4 бита, в байте их восемь. Получается, что чаром можно закодировать две цифры
            Ответить
            • Упакованный BCD называется (неупакованный, когда в байте одна цифра).

              Сишкобляди соснули, да, и ещё много ЯП соснуло, ибо почти нигде нету такого типа.

              Между тем плавпитух нативно поддерживает некоторые типы упакованных многоразрядных BCD.
              Ответить
              • Я боюсь, что тут процессоры соснули, потому что работать с такой хуйней будет не очень перформансно, примерно как тыкву с база домой на боинге перевозить
                Ответить
              • >BCD
                а WCD знаешь??
                Ответить

    Добавить комментарий