- 1
for($i=0;$i<=100;$i++)echo(!$i?$i:($i%3==0&&$i%5==0?'FizzBuzz':($i%3==0?'Fizz':($i%5==0?'Buzz':$i)))).'<br>';
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+46
for($i=0;$i<=100;$i++)echo(!$i?$i:($i%3==0&&$i%5==0?'FizzBuzz':($i%3==0?'Fizz':($i%5==0?'Buzz':$i)))).'<br>';
FizzBuzz - мое решение.
1) Нахрена тут 0?
2) Ноль как бы делится на 3 и на 5, поэтому вместо него надо FizzBuzz.
3) Я бы на месте HR послал пишущего в таком стиле куда подальше.
Время отработки: 710 мс на топ тесте.
Крестово:
Время отработки: 120 мс на топ тесте.
Беда в том, что у меня никак не получается правильно сократить формулу с трёх одинаковых расчётов до одного линейного уравнения. Возможно, конечно, мне следует не сокращать, а наоборот распаралелить некоторые вычисления, чтобы уменьшить время расчётов ещё немного, но я рукожоп, походу.
Математически сведённая формула (7 * n * n + n - 8) / 30 даёт неверные результаты. Я не понимат. :с
Там же целочисленные деления. Нельзя взять и выкинуть floor.
Вот с формулой для этих расхождений у меня и проблемы.
Можно нагородить гораздо больше, если приплести литералы Чёрча или числа Пеано
И это не смотря на то, что я этого никогда не делаю
Минусы красные. Значит красный текст набирает много минусов.
Согласно теории, оценка этого поста всегда будет находиться на нуле.
- implode
- array_map
- use ($threes)
- preg_filter
- .=
ИМХО, самый читабельный вариант будет всегда с использованием пачки if-ов.
man pattern-matching
Это по-настоящему красивое, не перегруженное и понятное описание класса.
После хаскеля буду смотреть скалу.
Scriabin Symphony #3: Divine Poem
А весь алгоритм изолируй в стратегию.