1. Python / Говнокод #12

    −268.5

    1. 1
    2. 2
    3. 3
    temp = a
    a = b
    b = temp

    Запостил: SvartalF, 25 Ноября 2008

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

    • tester:
      а в чем проблема-то?
      Ответить
    • показать все, что скрытоShock:
      Перед выполнением, допустим:
      a = 'A-Value', b = 'B-Value';
      temp = a
      a = b
      b = temp
      a == 'B-Value', b == 'A-Value';
      То есть эта функция меняет местами значение а и б.
      Ответить
    • Shock:
      Интересно, а работают тут бб-коды, или <b>хтмл-теги</b>, или какие-то другие *способы разметки*
      Ответить
    • страйко:
      думаю скоро сделаем ббкоды
      Ответить
    • Stilus:
      И что тут неправильного? Бывают же случаи когда надо менять местами значения переменных.
      Ответить
    • показать все, что скрытона себя посмо:
      говнокодер тот, кто посчитал этот пример говнокодом. Автор, учи матчасть.
      Ответить
    • PooH:
      Господа успокойтесь, это действительно говонокод. На питоне пишут так:
      a, b = b, a
      Ответить
    • anonymous:
      Питонщеги знают, почему это говнокод.
      Ответить
    • показать все, что скрытопитон слабо знаю, но тут чуть не обоссался
      Ответить
    • Veton:
      [quote=Говногость]питон слабо знаю, но тут чуть не обоссался[/quote]
      Энурез?
      Ответить
    • Sotikov:
      a = a + b
      b = a - b
      a = a - b
      Ответить
      • а если там не числа?
        Ответить
        • С помощью побитовых операций.
          Ответить
          • Побитовые круто, но если попадутся идентичные величины, будет весело.
            Ответить
            • поясните мысль™
              Ответить
            • > если попадутся идентичные величины
              Не вижу проблемы:
              // a = 42; b = 42;
              a ^= b;
              // a = 0; b = 42;
              b ^= a;
              // a = 0; b = 42;
              a ^= b;
              // a = 42; b = 42;
              Ответить
              • Притча во языцех

                Наверное каждый прогер решал эту задачу
                Ответить
                • > каждый прогер решал эту задачу
                  Задача для юных программистов: Буратино дали 3 яблока, а потом одно яблоко забрали. Сколько яблок осталось у Буратино?
                  Ответить
                  • Ответ неизвестен. Мы не знаем, сколько у Буратино было яблок вначале. Может, он был кому-то должен пяток яблок?
                    Ну и там мораль обычно была про инициализацию переменных.
                    Ответить
                    • > Ответ неизвестен
                      > UB
                      Ок, тогда второй уровень: У Буратино было 5 яблок. Ему дали 3 яблока, а потом у него одно яблоко забрали. Сколько яблок осталось у Буратино?
                      Ответить
                      • У кого забрали? Одно что забрали?
                        Ответить
                        • > У кого забрали? Одно что забрали?
                          Ему дали 3 яблока, а потом у него одно яблоко забрали.
                          fxd
                          Ответить
                          • Глазное?
                            Ответить
                            • Адамово.

                              Вот и третья мораль - юзайте неймспейсы и избегайте конфликтов имён, чтобы не спутать яблоко и яблоко.
                              Ответить
                              • Тогда вопрос
                                bormand в http://govnokod.ru/12#comment285262 написал:
                                >> Сколько яблок осталось у Буратино?
                                некорректен
                                Ведь не указано каких яблок
                                Ответить
                      • Были ли конкурентные модификации числа яблок у Буратино?
                        Ответить
                        • > Были ли конкурентные модификации числа яблок у Буратино?
                          Ага, сразу видно программиста :)

                          Он и правда за эти два интервала мог их съесть, отдать или взять у кого-то ещё.

                          P.S. А ещё он мог за это время умереть или не захотеть отдавать яблоки... :(
                          Ответить
                          • > Ага, сразу видно программиста :)
                            Умение смоделировать реальную ситуацию и обернуть её в исходный код -- важная особенность и достоинство программиста. Только вот никто не сказал, что модели, которые он создаёт, правильные.
                            Программист (а) добавляет в модели свои домыслы ("а сколько было?" из уровня 1, "а конкурентные модификации?" и "а ещё он мог умереть" из уровня 2), (б) плохо работает с недостаточно формализованными задачами. Поэтому в итоге рождаются программы, где отслеживается смерть Буратино и прочие факторы, но нельзя дать ему ещё пару яблок, ведь это не было указано в ТЗ.

                            Всё тлен.
                            Ответить
                            • Это всё оттого, что они используют неправильные языки. Вот в 'PHP' конкурентная модификация невозможна, буратино посреди работы не умрёт, а все переменные аккуратно инициализируются null'ом, который в арифметических операциях станет нулём. Всё интуитивно и красиво.

                              Переходите на 'PHP'!

                              > А вот на ПХП всё бы отработало правильно.
                              Хайвмайнд.
                              Ответить
                              • Ну вообще-то возможна, только никому это не нужно.
                                Ответить
                              • Вот хотя бы в том же C# можно посмотреть на приоритеты операций и написать однозначное выражение.
                                Ответить
                                • регистрозависимость в сиподобных приблудах - экономия на спичках, в лексере.

                                  оу, мимо ответил.
                                  Ответить
                          • А еще яблоки могли испортится, не забывайте об этом
                            Ответить
                      • У Бормандино было 4 яблока. Ему дали 4i (мнимых) яблока, а потом одно мнимое яблоко у него забрали. Какая абсолютная величина яблок осталась у Бормандино?
                        Ответить
                        • вопрос 2
                          Какой побочный эффект у Бормандино вызовет работа с мнимыми яблоками?
                          Ответить
                          • >Какой побочный эффект у Бормандино вызовет работа с мнимыми яблоками?
                            Может покраснение кожи или сыпь. Про побочные эффекты лучше читать на упаковке.
                            Ответить
                            • Мне кажется, что если долго оперировать мнимыми яблоками можно попасть в дурку
                              Ответить
                              • Представим мнимое яблоко, описанное прямоугольным параллелепипедом с комплексными длиной, шириной и высотой. Параллелепипед повёрнут относительно нас на некоторые углы. Представили?
                                Шестимерное пространство. Увозите.
                                Ответить
                                • интересно, приходят ли ОП письма о том, что в его топик поднасрали новых каментов
                                  Ответить
                                • Пх’нглуи мглв’нафх Ктулху Р’льех вгах’нагл фхтагн
                                  И тебя в соседнюю камеру
                                  Ответить
                        • эм, глазных?
                          Ответить
                    • А вот на ПХП всё бы отработало правильно.
                      Ответить
                  • UB
                    Ответить
          • Кстати, а как в Питоне передаются сложные типы?
            Ответить
            • по ссылке
              Ответить
            • в питоне на самом деле всё передается по ссылке, но это деталь реализации
              семантически верно делить типы на изменяемые и неизменяемые (скалярные и всякие кортежи)
              Ответить
        • Какой анскилл )))
          https://ideone.com/FKJFnk
          Ответить
      • Такие задачки ещё в школе на Турбо Паскакале решали :)
        Ответить
    • xengine:
      > Sotikov
      своими перлами делишься? :)
      а не проще a,b = a+b, a-b так ?
      Ответить
    • temoto:
      2xengine:
      это бессмысленно. Лучше
      a,b=b,a

      Его 3 строки не занимают лишней памяти, в отличие от
      a,b=b,a
      , и выполняются намного быстрее.

      Хотя экономить на таких вещах - пустая трата времени.
      Ответить
      • да как бы
        a, b = b, a
        выполняется быстрее, умник...
        тесты проводи сначала
        Ответить
    • nooob:
      a,b=b,a

      кроме всего прочего обменивает не только числа, но
      и строки и вообще любые обьекты.
      Ответить
    • Не сказал бы, что это говнокод. Хотя для питона не очень рационально, да.
      Ответить
    • a,b=b,a
      ABBA рулез фарева!11
      Ответить
    • Нафиг вообще так свопить в высокоуровневых языках. Больше похоже на академическую задачу для ничего
      Ответить
    • Даже на пиэйчпи можно прикольнее написать =)
      list($a, $b) = array($b, $a);
      Ответить
      • а смысл?) при таком раскладе помоему выделить 1 переменную, чем использовать 2 конструкции для работы с массивом...
        Ответить
      • Выглядит красиво. Но как это будет выглядеть в памяти?
        Ответить
    • Программистский свинг, бессмысленный и бепощадный XDDD
      Ответить
    • не говно
      Ответить
    • Баян
      Ответить
    • cleaned
      Ответить
    • int main() {
         int a = 4, b = 7;
         a, b = b, a;
         printf("%d %d", a, b);
      }


      Всем привет.
      Подскажите пожалуйста, почему этот код выводит херню?

      Заранее спасибо.
      Ответить
      • Вот, пофиксил
        Не благодари

        int main() {
           int a = 4, b = 7;
           a, b = b, a;
           printf("%d %d", b, a);
        }
        Ответить

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