public static int Puzzle(int number, int power) {
return (int)Math.Pow(number, power);
}
не проходит опять-же из-за плохих тестов.
Простой цикл дает 2 кирпича.
Как и такой изврат:
public static int Puzzle(int number, int power) {
return Enumerable
.Range(0, power)
.Select(x => number)
.Aggregate(1, (i, j) => i*j);
}
За решение буду признателен.
03.02
public static int Puzzle(int i) {
return (i == 0)? 1: i * Puzzle(i-1);
}
03.03
public static int Puzzle(int lowerBound, int upperBound) {
int product = 1;
for (int i = lowerBound; i <= upperBound; ++i) {
product *= i;
}
return product;
}
По многим числовым задачам помогает найти ответ сервис поиска последовательностей скажем oeis.org/
Например задачу 03.05 я решил так: получил два ответа (6 -> 56, 7-> 84), вбил в поиск, нашел последовательность oeis.org/A000292 применил любезно предоставленную мне формулу и получил 3 кирпичика.
Ладно бы сказали — NTFS больше не поддерживается, вместо IE по-умолчанию будет Firefox (а еще лучше Chrome), разрешено установить любую из 10 доступных DE, возможно запускать приложения под MacOS через Mine (гипотетический Wine для MacOS приложений), из-коробки включен эмулятор терминала с bash'ем и наконец-то можно забить переключение раскладки на Caps Lock!
Почему таких изменений нет и почему из-за них никто не переживает?
Важно лишь как в следующей версии Windows будет себя вести кнопка пуск.
Я думал об этом, но если вы посмотрите, то статья итак довольно длинная, у меня был небольшой выбор — либо больше ловушек, но покороче, либо больше информации о каждой ловушке, но ловушек меньше.
Я выбрал что-то среднее и в конечном итоге, последнюю запланированную ловушку даже пришлось убрать.
Мой опыт мне показывает, что как раз главное в коде — читаемость и поддерживаемость (при условии его работоспособности)
Вот вы и сами написали, что главное — работоспособность. Нерабочий чистый код никому не нужен. А рабочий грязный — нужен.
Поиск недостатков в любом коде
Иногда, согласитесь, нужно мириться с недостатками, особенно, если код чужой, тем более, что кажется одному хорошо, другому — недостатком (как пример я работаю в паре с одним программистом, ему кажется, что мутабельные объекты это нормально, а мне кажется, что это недостаток (когда можно без них)).
Неидеальный, но близкий к идеальному код можно написать за разумное время.
Значит идеальный нельзя таки.
Я понимаю, что автор подразумевает посвящение избыточного кол-ва времени на всё это, но перфекционизм не так плох, если это выражается в высоких требованиях к качеству кода
Да, Вы меня правильно поняли.
Спасибо за Ваше мнение, я обязательно учту Ваши пожелания при написании следующей статьи.
88 — это очень хорошо. Если учесть что в статье ~3200 слов, то «вы» встречается с частотой в 0.0275%.
И 15 из них можно вычесть, т.к. они часть шаблонной фразы «Признаки того, что вы в ловушке».
Ну а если серьезно, спасибо за замечание. Проанализирую ситуацию, если это плохо, буду исправляться.
Вы, возможно в ловушке защитного программирования.
А может и нет. Признаки того, что вы в ловушке созданы для того, чтобы подумать, не доходите ли вы до крайности. Если нет — все хорошо, независимо от того, тестируете ли вы встроенную функцию max или нет.
Теперь наконец добрался до того, что еще не решено, так-что решаю в реальном времени.
04.02
04.03
04.04
04.05
04.06
Необъяснимо, но у меня прошел такой код.
Второй раз тесты поменялись и прошел другой код:
Если у кого-нибудь есть мысли по этому поводу, буду рад их послушать.
04.07
04.08
04.09
04.10
04.11
04.12
Никакой код не дал 3 кирпича.
не проходит опять-же из-за плохих тестов.
Простой цикл дает 2 кирпича.
Как и такой изврат:
За решение буду признателен.
03.02
03.03
Можно и Linq.
03.04
03.05
03.06
03.07
Код ужасный, но ради кирпичей и не такое напишешь.
03.08
02.02
02.03
02.04
Удивительно, но более простой и правильный
не проходит из-за ужасно подобранных тестов.
02.05
02.06
Опять-же, лучший код
дает всего 2 кирпича.
02.07
И снова, код получше
всего 2 кирпича. Может MS накладывает штраф за использование Linq?
01.02
01.03
01.04
01.05
01.06
01.07
01.08
01.09
01.10
01.11
01.12
01.13
01.14
01.15
Например задачу 03.05 я решил так: получил два ответа (6 -> 56, 7-> 84), вбил в поиск, нашел последовательность oeis.org/A000292 применил любезно предоставленную мне формулу и получил 3 кирпичика.
И так получилось решить не одну числовую задачу.
Плюс в linux-системе у меня к этому дополнительный бонус — индикатор Caps Lock'а показывает раскладку — горит — русская, не горит — английская.
Почему таких изменений нет и почему из-за них никто не переживает?
Важно лишь как в следующей версии Windows будет себя вести кнопка пуск.
Я выбрал что-то среднее и в конечном итоге, последнюю запланированную ловушку даже пришлось убрать.
Вот вы и сами написали, что главное — работоспособность. Нерабочий чистый код никому не нужен.
А рабочий грязный — нужен.Иногда, согласитесь, нужно мириться с недостатками, особенно, если код чужой, тем более, что кажется одному хорошо, другому — недостатком (как пример я работаю в паре с одним программистом, ему кажется, что мутабельные объекты это нормально, а мне кажется, что это недостаток (когда можно без них)).
Значит идеальный нельзя таки.
Да, Вы меня правильно поняли.
Спасибо за Ваше мнение, я обязательно учту Ваши пожелания при написании следующей статьи.
И 15 из них можно вычесть, т.к. они часть шаблонной фразы «Признаки того, что вы в ловушке».
Ну а если серьезно, спасибо за замечание. Проанализирую ситуацию, если это плохо, буду исправляться.
Никто не спорит, что сложность алгоритмов очень важна и я согласен с Вами, насчет О(n) против O(n^2).
Но это не самое главное в программировании. И использовать лучшие алгоритмы недостаточно для написания хорошего продукта.
Не буду против если кто-нибудь захочет перевести и опубликовать версию на любом другом языке.
А может и нет. Признаки того, что вы в ловушке созданы для того, чтобы подумать, не доходите ли вы до крайности. Если нет — все хорошо, независимо от того, тестируете ли вы встроенную функцию max или нет.