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

    +160

    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
    function bigplus(){
    	$args = func_get_args();
    	$maxlength = 0;
    	$mlkey = 0;
    	$inmind = 0;
    	foreach($args as $key=>$arg){
    		$args[$key] = array_reverse(str_split($arg));
    		$length = count($args[$key]);
    		if($maxlength<$length){
    			$maxlength = $length;
    			$mlkey = $key;
    		}
    	}
    	for($pos=0; $pos<$maxlength; $pos++){
    		$c = 0;
    		for($i=0; $i<count($args); $i++){
    			if(!isset($args[$i][$pos])){
    				$args[$i][$pos]=0;
    			}
    			$c+=$args[$i][$pos];
    		}
    		$args[0][$pos] = $c+$inmind;
    		$inmind = floor(($args[0][$pos])/10);
    		$args[0][$pos] %= 10;
    	}
    	if($inmind>0){
    		$args[0][] = $inmind;
    	}
    	return implode(array_reverse($args[0]));
    }

    Народ, знаю что говнокод, помогите советом как исправить?
    Функция выводит результат сложения любого числа положительных чисел произвольной длины.
    Не придумал ничего умнее, чем реализовать сложение "в столбик".

    Запостил: knes, 28 Апреля 2011

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

    • bcadd("343424234234234234234234", "3333333333333333333333333");

      http://www.php.net/manual/ru/function.bcadd.php
      Ответить
    • bcadd требует библиотечки, которую ставят далеко не все хостеры.
      Кроме того, оно складывает только два числа.
      Ответить
      • первый guest - Я
        В цикле перебрать, да и все. Все проще, чем у вас.
        Если честно, ещё не встречал платных хостингов без поддержки BCMath.
        Да и вообще, обычно можно договориться с техподдержкой. Этот способ проще, а главное эффективнее и быстрее.
        Ответить
        • Я уже сталкивался. И bcmath отсутствовал и мультибайтовая строка и много чего еще.
          Ответить
          • Это проблема хостера, не?
            Ответить
            • в этой стране, чаще всего, это проблема программиста :(
              Ответить
              • Т.е. выбрать нормальный хостинг не позволяет религия? Или, там, сменить, если надоел.
                Вообще не вижу проблем.
                Ответить
                • Чаще всего, не позволяет жаба, душащая владельца договора, то бишь, клиента. Или, возможно что и религия. Главное, суть в том, что 90% товарищей сидят непонятно на чем и переходить куда-то не собираются.
                  На самом деле, тут много моментов, если интересно, с удовольствием обсужу их по почте или каком-нибудь IM.
                  Ответить
                  • Всю жизнь считал, что библиотеки лучше велосипедов, ибо они скомпилированные нативные приложения, а не чёртезнаетчто с хвостиком сбоку.
                    Ответить
                    • Правильно считали. Хоть и тут не все гладко, как правило, библиотеки и правда лучше. Но для человека, для которого библиотека = домик с колоннами, книжками и библиотекаршей, все это пустой звук
                      Ответить
                      • сколько жалостливых эссе из-за разницы два бакса в месяц...
                        Ответить
                    • кроме случая, когда из-за одной-двух функций в этой либе не хочется тянуть всю либу
                      Ответить
                      • Да, мне тоже жалко памяти и дискового пространства.
                        Ответить
        • Увидел пару забавных доработок:
          1) максимальную длину чисел сравнивать с длиной php_int_max, деленную на количество чисел. Если меньше - использовать array_sum
          2) вместо $args[$i][$pos]=0 в цикле сделать str_pad.
          Плюс, основываясь на вашем комментарии:
          3) проверка наличия bcmath: если есть, запускать в цикле bcadd
          Ответить
    • knes, а вы не ошиблись сайтом?
      Ответить
      • Неа. =) В посте говнокод? Говнокод. Значит, тематику сайта не нарушил.
        Мне помогли? Помогли. Значит тут тусуются шарящие люди.
        Так в чем проблема?
        Ответить
        • нешарящие здесь не тусуются, возвращайся на PHPClub
          Ответить
          • показать все, что скрытовъебал обоим по минусу
            Ответить
            • кармодрочер?
              Ответить
              • олежка какой-то петросянщиной занимаеца

                > въебал всем по минусу
                > какого хуя
                > у меня от ... брат умер
                > почисти куки браузером

                вообщем унылый анон, который ко всему прочему страдает лурчанкой
                Ответить
                • ^^^

                  О_о раз минусует точно Олег
                  Ответить
                • > какого хуя
                  > почисти куки браузером
                  а вот это вот, ни хрена не олежка.
                  Ответить
                  • > а вот это, ни хрена не олежка.

                    тролль никогда не захочет чтобы его деанонимизировали и поэтому будет стараться себя выдавать за других людей, что собственно и наблюдаем
                    Ответить
                    • деанонимизиция - это, как бы, интерактивное горение в аду?
                      Ответить
        • > шарящие люди
          > тусуются
          http://bit.ly/iiztP1
          Ответить
          • да в общем-то, обращеньицем народ он себя сразу отпозиционировал
            Ответить
            • просто уже бытует легенда вида "о, чувак, не знаешь как правильно написать код? запости эту свою хугню на говнокод! там подскажут..."
              Ответить
              • отсюда следует, что:
                а) необходимо раннее обнаружение (лексикон и владение языком "с трудом, но без словаря" позволяют)
                б) нельзя давать положительное подкрепление (из (а) вытекает неспособность придти с интересной, нетривиальной проблемой)

                моим деанонимизаторам: просьба найти год публикации работы по коррекции поведения упомянутой в (б)
                Ответить
                • какой язык программирования способен реализовать подобный копроанализатор?
                  Ответить
                  • мм, насчёт автоматизации я еще не думал...
                    Ответить
                    • вконтактике™ придумали свой метод®. посадили толпу модераторов.
                      Ответить
                  • function isBullshitUser($username){
                    return $username=='knes';
                    }
                    Ответить
                  • > какой язык программирования способен реализовать подобный копроанализатор?

                    Думаю что китайский...
                    Ответить
                    • 没有猫的中文。并没有这句话在谷歌翻译
                      Ответить
                      • Перевод: китайский > русский
                        Китайский без кошки. Это предложение не перевод в Google

                        Без кошки!!! В рот мне ноги.
                        Ответить
                      • Мы от всего этого возрадовались до плеши.
                        Ответить
    • и почему я от деанонимизации не страдаю?
      Ответить
      • Потому что ты не анон :)
        Ответить
        • не, ну даже мой вконтактик положили (хотя я там не Чары Хаоса), со всеми данными, а я не убиваюсь от этого веником. ЧЯДНТ?
          Ответить
    • Млять. Вам реально заняться больше нечем что ли?!
      Ответить
      • Есть чем. Вот и занимаюсь, пока остальные флуд разводят.
        Собственно, кто хотел - посмеялись над ГК, кто умел - помог(за что спасибо), а троллинг - не моя стезя.
        Ответить
        • Да я собственно про флудеров, а не про Вас.
          Ответить
      • Интересно сколько сюда народу заходит из работы?:)
        Ответить
        • У меня такое чувство, что тут куча фрилансеров, причем довольно шарящих, которым пока некуда тратить огромный ресурс своего мозга.
          Ответить
          • А я офисный планктон:)
            Зато с ГК стыкаюсь реже, чем фрилансеры
            Ответить

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