Автор Тема: Решаем задачки. :)  (Прочитано 93320 раз)

Geniepro

  • Hero Member
  • *****
  • Сообщений: 1955
  • Знайте- истина в том, что повторено трижды подряд!
    • Просмотр профиля
Re: Решаем задачки. :)
« Ответ #30 : Сентябрь 28, 2011, 09:02:15 pm »
2Geniepro:

Так какой вариант решения второй задачи закинуть в репозиторий? Решение должно быть с одной стороны эффективным, а с другой - легко понимабельным (все же для новичков это делается) и требующим минимума плясок с бубном при компиляции и запуске. То есть оно не должно требовать скриптов компиляции, компилироваться должно как-то так: "ghc MyCoolSolution.hs".

Как ответишь - закину всю пачку решений хаскелевских.
main = do
    n <- readLn
    let is_perfect = n == sum ( 1 : [ d + d'
                                    | d <- [2..truncate $ sqrt $ fromIntegral n]
                                    , let (d', m) = n `divMod` d
                                    , m == 0
                                    ] )
    putStrLn $ if is_perfect then "Да" else "Нет"
Это решение чётко описывает решение задачи -- пересчитать все делители числа кроме него самого. В отличие от этого решение на сях -- эзотерично и нипанятно, а потому засчитано быть не может и должно быть дисквалифицировано!!!
Решение на КП -- намана, практически аналогично хаскельному...
to iterate is human, to recurse, divine

Салат «рекурсия»: помидоры, огурцы, салат…

Geniepro

  • Hero Member
  • *****
  • Сообщений: 1955
  • Знайте- истина в том, что повторено трижды подряд!
    • Просмотр профиля
Re: Решаем задачки. :)
« Ответ #31 : Сентябрь 28, 2011, 09:44:36 pm »
Про Хаскель: сам до сих пор не могу переделать свое мышление в функциональное, но, чем дальше, тем больше убеждаюсь, что программы на нем синтезируются (т.е. пишутся) с помощью вдохновения, озарения, догадки и т.п. Нет рабочего инструмента, который бы позволял профессионалу в любом состоянии гарантированно выдавать результат. Который не сильно отличался бы у разных людей.
Тысячу и одно решение любой задачи можно придумать на любом языке, было бы желание и немного фантазии.
Даже питон не в силах этому помешать...  ;D
to iterate is human, to recurse, divine

Салат «рекурсия»: помидоры, огурцы, салат…

valexey

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 1990
    • Просмотр профиля
Re: Решаем задачки. :)
« Ответ #32 : Сентябрь 28, 2011, 11:50:04 pm »
Решение на КП -- намана, практически аналогично хаскельному...
Кстати, действительно решение на КП будет практически аналогично хаскельному... по производительности :-)

Компилятор ББ ведь практически не умеет оптимизировать. ghc же умеет, но достижению настоящей производительности ему уже мешает дикий семантический разрыв между языком и машиной. Так что примерно то на то и должно выйти.
"но сейчас, чтобы компенсировать растущую мощность компьютеров, программисты используют фреймворки"

Peter Almazov

  • Sr. Member
  • ****
  • Сообщений: 482
    • Просмотр профиля
Re: Решаем задачки. :)
« Ответ #33 : Сентябрь 29, 2011, 06:03:06 am »
Тысячу и одно решение любой задачи можно придумать на любом языке, было бы желание и немного фантазии.
Ну, не скажите, Хаскель здесь рекордсмен. На том же КП трудно представить себе десятки вариантов вычисления факториала. Даже если удасться это сделать, то в этом не будет ни капли юмора. Один бред. В отличие от Хаскеля.

Geniepro

  • Hero Member
  • *****
  • Сообщений: 1955
  • Знайте- истина в том, что повторено трижды подряд!
    • Просмотр профиля
Re: Решаем задачки. :)
« Ответ #34 : Сентябрь 29, 2011, 09:41:45 am »
На том же КП трудно представить себе десятки вариантов вычисления факториала. Даже если удасться это сделать, то в этом не будет ни капли юмора. Один бред. В отличие от Хаскеля.

Так и на Хаскелле это тоже бред.
Например, сделать интерпретатор микроязычка, и на этом язычке реализовать факториал -- неужели на КП такое невозможно? Возможно, конечно же.
Почему же на КП такое не делают? Да просто потому, что слишком низкоуровневый язык, неудобен для реализации всяких трансляторов. Что ж поделать?
А было бы сильное желание -- сделать было бы можно...

Реально же факториал на хаскелле вычисляется проще пареной репы:
factorial x = product [1..x]
и по другому никто в реальном продакшене не сделает, ибо зачем делать сложнее? Хаскеллеры же не враги себе...
« Последнее редактирование: Сентябрь 29, 2011, 10:03:17 am от Geniepro »
to iterate is human, to recurse, divine

Салат «рекурсия»: помидоры, огурцы, салат…

DIzer

  • Гость
Re: Решаем задачки. :)
« Ответ #35 : Сентябрь 29, 2011, 11:19:10 am »


и по другому никто в реальном продакшене не сделает, ибо зачем делать сложнее? Хаскеллеры же не враги себе...
А что есть значимый "Хаскельдакшен" - сегмент рынка на котором за софтину созданную на Хаскеле народ готов платить реальное бабло?

Geniepro

  • Hero Member
  • *****
  • Сообщений: 1955
  • Знайте- истина в том, что повторено трижды подряд!
    • Просмотр профиля
Re: Решаем задачки. :)
« Ответ #36 : Сентябрь 29, 2011, 11:42:24 am »
и по другому никто в реальном продакшене не сделает, ибо зачем делать сложнее? Хаскеллеры же не враги себе...
А что есть значимый "Хаскельдакшен" - сегмент рынка на котором за софтину созданную на Хаскеле народ готов платить реальное бабло?

ну, говорят, что есть. хотя с триллионым рынком софта на коболе хаскеллу, конечно же, не сравниться...
to iterate is human, to recurse, divine

Салат «рекурсия»: помидоры, огурцы, салат…

DIzer

  • Гость
Re: Решаем задачки. :)
« Ответ #37 : Сентябрь 29, 2011, 11:46:31 am »
и по другому никто в реальном продакшене не сделает, ибо зачем делать сложнее? Хаскеллеры же не враги себе...
А что есть значимый "Хаскельдакшен" - сегмент рынка на котором за софтину созданную на Хаскеле народ готов платить реальное бабло?

ну, говорят, что есть. хотя с триллионым рынком софта на коболе хаскеллу, конечно же, не сравниться...
И это говорит активист хаскелизма на враждебных виртуазных нивах.... смело, однако ;)

DIzer

  • Гость
Re: Решаем задачки. :)
« Ответ #38 : Сентябрь 29, 2011, 11:49:41 am »
Ну ладно по делу - шестую задачу  я бы автору(решения) не зачел . Какого фига он исключил возможность равенства значения в L одному из введенных ранее значений (a,b,c,d)
« Последнее редактирование: Сентябрь 29, 2011, 11:59:04 am от DIzer »

Geniepro

  • Hero Member
  • *****
  • Сообщений: 1955
  • Знайте- истина в том, что повторено трижды подряд!
    • Просмотр профиля
Re: Решаем задачки. :)
« Ответ #39 : Сентябрь 29, 2011, 11:56:17 am »
сегмент рынка на котором за софтину созданную на Хаскеле народ готов платить реальное бабло?

Вообще, по-идее, обычно народ платит за программы не потому что те были написаны на каком-то языке, а за то, что эти программы решают какие-то важные для народа хозяйственные задачи...
to iterate is human, to recurse, divine

Салат «рекурсия»: помидоры, огурцы, салат…

DIzer

  • Гость
Re: Решаем задачки. :)
« Ответ #40 : Сентябрь 29, 2011, 11:58:20 am »
сегмент рынка на котором за софтину созданную на Хаскеле народ готов платить реальное бабло?

Вообще, по-идее, обычно народ платит за программы не потому что те были написаны на каком-то языке, а за то, что эти программы решают какие-то важные для народа хозяйственные задачи...
не возражаю , и что  ;)

kemiisto

  • Jr. Member
  • **
  • Сообщений: 64
    • Просмотр профиля
    • kemiisto.ru
Re: Решаем задачки. :)
« Ответ #41 : Сентябрь 29, 2011, 12:44:43 pm »
Ну ладно по делу - шестую задачу  я бы автору(решения) не зачел . Какого фига он исключил возможность равенства значения в L одному из введенных ранее значений (a,b,c,d)
Потому что, в этом случае придётся специфицировать поведение алгоритма в этой ситуации. В формулировки задачи на это нет никаких намёков. Ивапще, низачли бы они. Я сам себе такую задачу дал. 8)  Давайте Вашу, там будете Вы зачитывать. ;)

DIzer

  • Гость
Re: Решаем задачки. :)
« Ответ #42 : Сентябрь 29, 2011, 03:00:02 pm »
Потому что, в этом случае придётся специфицировать поведение алгоритма в этой ситуации. В формулировки задачи на это нет никаких намёков. Ивапще, низачли бы они. Я сам себе такую задачу дал. 8)  Давайте Вашу, там будете Вы зачитывать. ;)
А ну поняяяятно, нефиг в чужуй нужник лезть... и то естно - обгадититься низачо сподобно.   ;D . А свою  вам пожалуй не дам - слишком долго объяснять надо что сделать... и судя по всему не факт, что до вас дойдет  ;) А если  про обучающие задачки вы говорите - то это бессмысленно (судя по вашему решению , и отношению к критике) , пустая трата времени , однако.
« Последнее редактирование: Сентябрь 29, 2011, 03:53:57 pm от DIzer »

Geniepro

  • Hero Member
  • *****
  • Сообщений: 1955
  • Знайте- истина в том, что повторено трижды подряд!
    • Просмотр профиля
Re: Решаем задачки. :)
« Ответ #43 : Сентябрь 29, 2011, 03:44:02 pm »
сегмент рынка на котором за софтину созданную на Хаскеле народ готов платить реальное бабло?

Вообще, по-идее, обычно народ платит за программы не потому что те были написаны на каком-то языке, а за то, что эти программы решают какие-то важные для народа хозяйственные задачи...
не возражаю , и что  ;)
а то, что подобный софт на хаскелле делается, продаётся, возможно даже покупается кем-то.
но в основном всё-таки на хаскелле решают внутрифирменные задачи, так что там зарплату платят хаскеллерам и всё на этом ((
to iterate is human, to recurse, divine

Салат «рекурсия»: помидоры, огурцы, салат…

DIzer

  • Гость
Re: Решаем задачки. :)
« Ответ #44 : Сентябрь 29, 2011, 03:48:52 pm »
а то, что подобный софт на хаскелле делается, продаётся, возможно даже покупается кем-то.
но в основном всё-таки на хаскелле решают внутрифирменные задачи, так что там зарплату платят хаскеллерам и всё на этом ((
Тогда , с моей точки зрения, это не продакшен (потому, что завязан на конкретную фирму). МММ. Понятие экзотика подходит?