+133
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
int sum = 100;
int sch = 0;
for (int a50 = 0; a50 <= sum / 50; a50++)
{
for (int a25 = 0; a25 <= (sum - a50 * 50) / 25; a25++)
{
for (int a10 = 0; a10 <= (sum - a50 * 50 - a25 * 25) / 10; a10++)
{
for (int a5 = 0; a5 <= (sum - a50 * 50 - a25 * 25 - a10 * 10) / 5; a5++)
{
sch++;
}
}
}
}
Console.WriteLine(Convert.ToString(sch));
Задача: Подсчитайте сколькими способами можно разменять 1 доллар монетами достоинством 1, 5, 10, 25 и 50 центов. Решать можно как угодно - в лоб перебором, или в общем случае (для произвольной суммы размера и набора монет).
У кого какие варианты еще будут?)
Запостил:
ipro,
14 Июня 2013
Помнится где-то разоблачал Кнута. Или то Царь, был?
Не понять этого может только идиот и/или не читавший книгу.
Кнут в своих трудах использовал специальный mix-assembler. Применяют ли его где-то? Нет. Какое практическое значение трудов Кнута? Оно огромно.
Но более всего меня удивляет вопрос о применимости ФЯ, который задан с того же акка, с которого не так давно за мной бегали и вопрошали о лямбдах в жаве.
>или не читавший книгу.
Ой, я что-то пропустил?
А с лямбдами в яве все просто: в почти 2014 году ИХ НЕТ
> Ой, я что-то пропустил?
Книга стоит того, чтобы её прочитать. Русский перевод кошерен.
что есть /pr/?
Есть несколько компаний, которые пишут на хачкеле, окамле, кложуре, больше всех, думаю, эрланге. Писать всякие потоковые датадробилки, парсеры, анализаторы и кодогенераторы на фя одно удовольствие. Помню, у лицокниги вроде бы статический анализатор похапе кода был на окамле, pfff.
Можно сходить в гугл и спросить companies using X
Ну и наконец, повторюсь, что твой вопрос не имеет отношения к книге. В книге просто собрано много интересных и красивых идей, связанных с программированием.
Место, где сидят цари ФП и пишут хуйню, которую на императивном языке за 15 минут напишет любой непрограммист.
Мне, собственно, глубоко индифферентно, будешь ты её читать или нет.
"Не читал, но осуждаю".
Настоятельно рекомендую прекратить тратить бисер.
П.С. Просто съеби.
>>"Секс - это скучно. Мне подруга говорила."
Твоя подруга тебе такое говорит? Трахайся с консолечкой - она не броситю
>П.С. Просто съеби.
Просто съеби.
Слышал звон, да не знаешь где он.
— Вот все говорят Битлы, Битлы а я послушал — так ничего особенного
— Как же тебе удалось попасть к ним на концерт?!
— Да что ты, мне просто знакомый напел...
Уёбище, спрашиваю тебя в последний раз. Что там есть такого, что я не узнаю из других книг?
Решение перебором "сначала вширь" :)
Так, наверное, будет по-эффективнее, но и сложнее понять.
Но вместо цикла есть iterate, в котором с форматированием все нормально, и с ним бы тот же код читался лучше.
Но зачем? Можно же наваять рекурсивную функцию, которая высрет нужное нам S выражение. А затем просто поюзать ее в макросе.
ЗЫ. Вариант с рекурсивной функцией ничем не отличается кроме бесполезной функции засоряющей рантайм окружение. Проблема не в том как сделать, а в том, что то, что получается в итоге очень тяжело отлаживать, потому что исходного кода нигде нет, и бряк некуда поставить. Функция эту проблему не решит / не лучше чем макрос.
> Проблема не в том как сделать, а в том, что то, что получается в итоге очень тяжело отлаживать, потому что исходного кода нигде нет, и бряк некуда поставить.
Ну да, это основная проблема макроёбства почти на любом языке.
> Функция эту проблему не решит / не лучше чем макрос.
Согласен ;)
Зависит от диалекта
В этом свете совершенно не понятно, почему if таки special operator, а or - нет.
multiple-value-bind - вот кто придумал такое название для часто используемой функции?
Ну вот, классическое решение, как в учебнике.
>или в общем случае (для произвольной суммы размера и набора монет).
но почему-то не сходится.
давно не видел такого макро-фу. наверное только в 90х, во времена асма, где были человеческие препроцессоры.
А вообще, где такое "может" пригодится: например (хз как по-русски) binomial expansion посчитать не вычисляя все промежуточные степени. Т.е. сгенерировать что-то типа ((- (* n (expt x i)) (* (- m n) (expt x (+ n i))) ...) ...) и потом складывать коеффициенты (т.как часть отрицательные, то часть степеней не прийдется вычислять). А руками полиномы больше 5-6 степени просто замучаешься писать.
в мою защиту: с детства страдал слабостью к фракталам :)
> А вообще, где такое "может" пригодится
во всех тех местах где нужно ваять кучи кода, потому что на оптимизации типа constant propagation и inlining полагаться почти нельзя.
я страдал давным давно таким в плюсах с темплейтами. правда используя темплейты как параметры для темплейтов, очень быстро можно узнать что у компилеров и линкеров все таки есть ограничение на длину символа....
> binomial expansion
гугля говорит "биномиальное разложение"
P.S. А вообще, после портянок на лиспе смотрится наглядно и понятно ;)
Возможно, просто поискал в старой директории "project-euler" (а там надо лишь ответ) нашелся №31.
Это факт, причем, имхо, из-за фолда ;) Сам то по себе алгоритм простецкий.
Хотя на четвертой странице форума по этой задаче есть вот такое чудо: