Follow

"делать было нечего, дело было вечером" 😅

случайно наткнулась на старую статью на Хабре про "тривиальную" задачку FizzBuzz (которую "даже опытные программисты не могут решить за несколько минут"😆 )

нарисовала два решения - первое буковками выглядит "более описанным", зато второе (через тернарный оператор) - заметно компактнее!

а вам какой вариант больше нравится (использовали бы)? :ablobcatangel:

· · Web · 4 · 3 · 2

@linka ..но эта задачка решается в два ифа...

@mo что ты имеешь ввиду?)

@linka то, что она решается в два ифа и один else. Три ифа просто избыточно

@linka ...или я не выспалась и хуйню несу

@mo@mastodon.ml
@linka@mastodon.ml там 4 варианта. Тип, там честность 3 и честность 5, два варианта дают 4 комбинации.

@GagyyaRinqq не, типа можно на кратность 3 добавлять Fizz, на кратность 5 добавлять Buzz и не делать проверку на кратность обоим

@linka

@mo @GagyyaRinqq такое решение не будет точно соответствовать условиям задачи, ведь если бы вместо fizzbuzz было бы другое значение (не соединение этих двух fizz и buzz) то алгоритм был бы не верен).

@linka бля, рили, если поменять условия задачи то решение от прошлой задачи не подойдёт...ауф...

@GagyyaRinqq

@mo @GagyyaRinqq ну блин, я же говорю про универсальность алгоритма !) входные данные не должны его менять или ломать. "Читерство" в понимании поставленной задачи сокращают алгоритм на 1 итерацию, но делают его потенциально опасным при выполнении.

@linka Fizz и Buzz входными данными не являются. Входные данные тут — число итераций

@GagyyaRinqq

@linka а чтобы был не опасным, надо просто переписать на раст /ш

@GagyyaRinqq

@mo @GagyyaRinqq входные данные это то что ты получаешь на вход - они потому и указанны в переменных.
Если бы вместо физз было бы "1", Базз - было "2", а физбаз давало ответ "3", читерство с пониманием задачи привело бы к "12", а реальный результат "3', не был бы получен.
Когда задачу со входными данными ставишь сам себе ты и её же формулируешь, ошибок скорее всего не будет, но когда задачу формулируют другие, то не факт что это именно та хотелка, которую имел ввиду заказчик! :blobfoxthinksmart:

@linka заказчик ясно описал, что хочет физз и базз, не придумывай никаких "1" и "2". Это школьная задачка ало

@GagyyaRinqq

@linka @mo @GagyyaRinqq
То есть, много if'ов это не так уж и плохо...

@frssoft @mo @GagyyaRinqq если я правильно помню ветвление в процессорах прогнозируется лучше, чем проверка условия через switch - case.
Но я могу ошибаться, в разных языках реализация его своя.
Про читабельность кода я не говорю - это проблемы читателей!)))

@linka ...у процессоров в принципе нет понятия switch-case, у них только "if" :ageblobcat:

@frssoft @GagyyaRinqq

@linka @mo @GagyyaRinqq
Ну, вроде switch case это завуалироввнный if elif, просто компактнее чуток. Ну, при компиляции может его как-то лучше оптимизирует. Вот кстати, проверь, напиши какой-нибудь длинный case из 10 условий и тоже, только на if elif, и с помощью time посмотри кто быстрее и вес бинарей замерь. Интересно, будет ли разница :blobfoxthinking:

@linka@mastodon.ml
@mo@mastodon.ml но если мы говорим об оптимизации, то общий случай обычно медленнее конкретного

@mo @linka не, всё норм, вариант, где создаётся временная строка, можно решить с двумя ифами вместо трёх

@linka а зачем переменные под одноразовые строки?

@strizhechenko вынос переменных позволяет заиспользовать эту глупость в других проектах под свои нужды!;)

@linka Второй, если как раз убрать переменные под строки

Sign in to participate in the conversation
Mastodon.ml

Русская нода социальной сети "Мастодонт", части Fediverse - всемирной федерации социальных сетей. Зона общения, свободная от рекламы и шпионажа, теперь и в России.