"PHP" / Говнокод #6498 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  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 knes, (Updated )

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

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

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

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

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

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

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

Из-за тебя ушел bormand, guest!

    А не использовать ли нам bbcode?


    8