1. PHP / Говнокод #18111

    +144

    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
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    <?php
    
    $startNumber = 0;
    
    function LittlePart($BigPart, $startNumber) {
      $i = -3;
      $number = $startNumber * M_PI + ($i - 1);
      do {
        $number += M_PI;
        echo $BigPart . ' + (' . $i . ') = ' . number_format($number, 2, ',', ' ') . PHP_EOL;
        $i++;
      } while ($i <= 3);
    }
    
    
    function MidPart($BigPart, $startNumber) {
      $i = -3;
      $number = $startNumber * M_PI + ($i - 1);
      do {
        $number += M_PI;
        LittlePart ($BigPart . ' + (' . $i . ')·π', $number);
        $i++;
      } while ($i <= 3);
    }
    
    
    function QuadradPart($BigPart, $startNumber) {
      $i = -3;
      $number = $startNumber * M_PI + ($i - 1);
      do {
        $number += M_PI;
        MidPart ($BigPart . ' + (' . $i . ')·π²', $number);
        $i++;
      } while ($i <= 3);
    }
    
    function CubePart($BigPart, $startNumber) {
      $i = -3;
      $number = $startNumber * M_PI + ($i - 1);
      do {
        $number += M_PI;
        QuadradPart ($BigPart . '(' . $i . ')·π³', $number);
        $i++;
      } while ($i <= 3);
    }
    
    
    CubePart('', 0);

    Система счисления по основанию π. Пока с целыми числами.

    http://ideone.com/EUYEKA

    Запостил: inkanus-gray, 03 Мая 2015

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

    • s/числами/цифрами/

      Ну вы поняли.
      Ответить
    • 2401 результат: http://pastebin.com/50pTefgN
      Ответить
      • Топите этот комментарий. Вот настоящие данные: http://pastebin.com/dcsd7YyH
        Ответить
    • > EUYEKA
      Какой ID )))
      Родственник начальника ideone?
      Ответить
      • Самому понравилось. Кстати, никто не заметил ошибку. В инкременте должна быть единица, а не M_PI. Говнокод же!

        Урезанная и исправленная версия: http://ideone.com/hAX9hi
        Ответить
        • А пичиму это у вас, товаришь, минус может перед цифрой стоять а не только перед числом?
          Ответить
          • Потому что я не знаю правил записи чисел в системах счисления с ненатуральным основанием.
            Ответить
            • просто тут нужна не цифирная запись, а обобщенная с подчеркиванием сверху.(множество то не счетно) Один знак - это число от ноля до Пи невключительно.
              покажу как умею
              ______________
              2,45 3,06 1,2
              Ответить
              • А однозначную запись (хотя бы как в системах с натуральным основанием: пока запись не бесконечна, всё однозначно) тут можно ввести?
                Ответить
                • надо подумать.
                  1 = {1/пи} {1/пи^2, 0} {1/пи^3, 0,0} ...
                  Не одназначность возникает при использовании чисел меньших 1
                  мы может ввести ограничения для всех числе, кроме первого, что бы они были больше 1, тогда N ое число будет содержаться в диапазоне от Пи^N до Пи^(N+1) не включительно. В этом случае запись будет однозначной. кажется
                  Ответить
    • Кстати, в пи-системе с целыми цифрами можно только перебирать все коэффициенты, чтобы получить красивую короткую запись числа, или есть какое-то более оптимальное решение?
      Ответить
      • Всё, как обычно: делим на основание системы. Я не уверен, что в случае иррационального основания можно считать остатки, поэтому делаем так:
        1. Считаем логарифм по основанию π.
        2. Округляя логарифм в меньшую сторону, получаем количество знаков. Пусть это будет n.
        3. Поделив число на π в степени n, и округлив вниз, получим старшую цифру. Пусть она равна M.
        4. Вычитаем M, умноженное на π в степени n, из числа и повторяем процедуру.

        P.S. Ах, да, алгоритм не учитывает возможность записи с отрицательными цифрами. Для них оптимального алгоритма не знаю.
        Ответить
        • Подсказка: тут хитрость в округлении. Округлив вверх, а не вниз, можно получить другой вариант разложения.
          Ответить
          • > другой вариант разложения.
            Т.е. выходит, что можно 2^n вариантов рассмотреть?

            Хотя, если округлять вниз, а потом корректировать (округлять вверх при желании) только последнюю цифру, получается годно (коротко и не очень затратно):
            1024.X = pi6 + 2pi3 + 2pi-1 // вышеописанный алгоритм
            1024.X = - pi - pi3 + pi4 + pi6 // подбор, цифры из {-1, 1}
            X.1024 = pi-8 + pi-6 + pi-2 // подбор, пи-стиль, цифры из {-1, 1}
            Ответить
    • зачем если есть wct
      Ответить
      • Хуйня ваша "wct". То ли дело "php".
        Ответить
        • А чему равно 8122 в системе счисления "php"?
          Ответить
          • <?php echo "8122" ?>
            Ответить
            • Т.е. "php" - это самая обычная десятичная система с какими-то лишними авторскими символами, распиаренная человеком с питухом петухом на аватарке?

              P.S. Вот же питуцарьство! Теперь уже это слово только через "и" питушу.
              Ответить
              • Я не человек. Я конь!
                Ответить
                • Челпитухоконь?
                  Петухочелоконь?
                  Коньпетухочел?
                  http://www.youtube.com/watch?v=xf69EEL3WBk
                  Ответить
            • PHP без эвала и собачек?
              Ответить
    • Так есь жеж пи-aдические числа (p-adic).
      Ответить
      • Спасибо за идею. Но мне их описание показалось сложным. Что можно изучить из того, что полегче?
        Ответить

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