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

Geniepro

  • Hero Member
  • *****
  • Сообщений: 1955
  • Знайте- истина в том, что повторено трижды подряд!
    • Просмотр профиля
Re: Решаем задачки. :)
« Ответ #45 : Сентябрь 29, 2011, 06:02:36 pm »
Понятие экзотика подходит?
хоть горшком назовите, только в печь не кладите...  ;D
to iterate is human, to recurse, divine

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

DIzer

  • Гость
Re: Решаем задачки. :)
« Ответ #46 : Сентябрь 30, 2011, 05:57:29 am »
Понятие экзотика подходит?
хоть горшком назовите, только в печь не кладите...  ;D
Может вас еще  в "терновый куст" кинуть  ;D ? - обойдетесь, ибо возможно привыкание....

DIzer

  • Гость
Re: Решаем задачки. :)
« Ответ #47 : Сентябрь 30, 2011, 04:43:59 pm »
Решение проблемы 8( что об арифметической прогрессии)- та же порнография...
« Последнее редактирование: Сентябрь 30, 2011, 05:29:50 pm от DIzer »

kemiisto

  • Jr. Member
  • **
  • Сообщений: 64
    • Просмотр профиля
    • kemiisto.ru
Re: Решаем задачки. :)
« Ответ #48 : Сентябрь 30, 2011, 06:31:50 pm »
Решение проблемы 8( что об арифметической прогрессии)- та же порнография...
Если уж критикуете, так конструктивнее. Что неправильно? И мне Ваши задачи "до лампочки". Я про них не спрашивал. Куда мне... ;D

DIzer

  • Гость
Re: Решаем задачки. :)
« Ответ #49 : Сентябрь 30, 2011, 06:38:56 pm »
Решение проблемы 8( что об арифметической прогрессии)- та же порнография...
Если уж критикуете, так конструктивнее. Что неправильно? И мне Ваши задачи "до лампочки". Я про них не спрашивал. Куда мне... ;D

1.ТАЖЕ ПОРНОГРАФИЯ =НЕ ЯВЛЯЕТСЯ РЕШЕНИЕМ ИСХОДНОЙ ЗАДАЧИ (ГНУСНЫЙ НАМЕК -  являются ли числа 4,8 ,16  членами арифметической прогрессии).
2. Это хорошо
3. Действительно, вы даже понять что нужно сделать в задачке для начинающих неспособны...Только кривляться да воздух сотрясать в чате...
« Последнее редактирование: Сентябрь 30, 2011, 06:41:19 pm от DIzer »

kemiisto

  • Jr. Member
  • **
  • Сообщений: 64
    • Просмотр профиля
    • kemiisto.ru
Re: Решаем задачки. :)
« Ответ #50 : Сентябрь 30, 2011, 06:57:09 pm »
А что Вы грубите? Я же написал:
Цитировать
Строго говоря, любые три целых числа являются членами арифметической прогрессии (с разностью 1). Имеет смысл, например, проверять, являются ли 3 числа идущими друг за другом членами арифметической прогрессии. 
Исходная задача сформулирована неодназаначно. Я, например, вот такую решил, как описал.

DIzer

  • Гость
Re: Решаем задачки. :)
« Ответ #51 : Сентябрь 30, 2011, 07:33:50 pm »
А что Вы грубите? Я же написал:
Цитировать
Строго говоря, любые три целых числа являются членами арифметической прогрессии (с разностью 1). Имеет смысл, например, проверять, являются ли 3 числа идущими друг за другом членами арифметической прогрессии. 
Исходная задача сформулирована неодназаначно. Я, например, вот такую решил, как описал.
1. Я не грублю - я возвращаю  вам ваше кривлянье с усилением (и успешно).
2. Это тривиальный случай -не интересный.
3. Это другая задача(подмножество исходной).
4. Если решаете ДРУГУЮ задачу - будьте добры  отразите этот факт в комментариях в шапке программы (лично я сомневаюсь что это правда, слишком похож этот случай на предыдущий, впрочем, дело ваше).
Задача сформулирована однозначно(минус тривиальный случай) - достаточно реформулировать ее в эквивалентном виде "проверить являются ли 3 целых числа членами арифметической прогрессии с шагом D>1". Но для этого нужно было потратить некоторое время на работу с ее условием= что вы не сделали как в первом, так и во втором случае...

DIzer

  • Гость
Re: Решаем задачки. :)
« Ответ #52 : Сентябрь 30, 2011, 07:46:28 pm »
А у меня, между делом, возникла просьба к "ремонтных дел мастеру" - Петру Алмазову. Что вы имели ввиду под "Уровень решения на КП - ниже плинтуса." - и если можно, с обоснованием.
« Последнее редактирование: Сентябрь 30, 2011, 07:48:18 pm от DIzer »

kemiisto

  • Jr. Member
  • **
  • Сообщений: 64
    • Просмотр профиля
    • kemiisto.ru
Re: Решаем задачки. :)
« Ответ #53 : Сентябрь 30, 2011, 08:17:20 pm »
1. Я не грублю - я возвращаю  вам ваше кривлянье с усилением (и успешно).
Какое кривляние? :o

2. Это тривиальный случай -не интересный.
3. Это другая задача(подмножество исходной).
4. Если решаете ДРУГУЮ задачу - будьте добры  отразите этот факт в комментариях в шапке программы (лично я сомневаюсь что это правда, слишком похож этот случай на предыдущий, впрочем, дело ваше).
Задача сформулирована однозначно(минус тривиальный случай) - достаточно реформулировать ее в эквивалентном виде "проверить являются ли 3 целых числа членами арифметической прогрессии с шагом D>1". Но для этого нужно было потратить некоторое время на работу с ее условием= что вы не сделали как в первом, так и во втором случае...
Я процитировал README.md из репозитория. Можете проверить - время коммита у решения и у описания задачи одно и тоже. Хоть в этом не сомневайтесь. Я согласен, что случай тривиальный. Сейчас обновлю формулировку и попробую решить. ;D

P.S. Я выложил ссылку. Если Вас что-то не устроило, так и скажите. Я же не просто так сюда написал. А тут сразу началось. Одному - ниже плинтуса, другому - порнография... :(
« Последнее редактирование: Сентябрь 30, 2011, 08:30:25 pm от kemiisto »

DIzer

  • Гость
Re: Решаем задачки. :)
« Ответ #54 : Сентябрь 30, 2011, 09:05:48 pm »
1. Я не грублю - я возвращаю  вам ваше кривлянье с усилением (и успешно).
Какое кривляние? :o
Я процитировал README.md из репозитория. Можете проверить - время коммита у решения и у описания задачи одно и тоже. Хоть в этом не сомневайтесь. Я согласен, что случай тривиальный. Сейчас обновлю формулировку и попробую решить. ;D

P.S. Я выложил ссылку. Если Вас что-то не устроило, так и скажите. Я же не просто так сюда написал. А тут сразу началось. Одному - ниже плинтуса, другому - порнография... :(
1. "Ивапще, низачли бы они. Я сам себе такую задачу дал.   Давайте Вашу, там будете Вы зачитывать."....."Я же не просто так сюда написал. А тут сразу началось. Одному - ниже плинтуса, другому - порнография... :(" взятые в контексте темы - кривлянье. Ответ с усилением в том же духе выглядит, естественно, как вызов (с различными оттенками грубости).
2. Время коммита из репозитория здесь не причем. Я вас не обвиняю, ошибаются все - просто спросите у своих собеседников по "мове"  (сиплюиста и хаскиллера  ;) ) решили бы они ПРАВИЛЬНО эту задачку. Собственно, то что вы сделали уже заслуживает уважения - по этому я и сделал сообщение об ошибке.
3. Не факт что это даст какой-то результат... Ответьте лучше на вопросы  - чего вы хотели достичь а) читая эту книгу. б ) решая эти задачи

kemiisto

  • Jr. Member
  • **
  • Сообщений: 64
    • Просмотр профиля
    • kemiisto.ru
Re: Решаем задачки. :)
« Ответ #55 : Сентябрь 30, 2011, 09:20:59 pm »
Я хочу научиться программировать. :)

По поводу задачи. Тут думать надо. А у меня живот болит. :( А выпил НО-ШПУ и пошёл спать. Завтра посмотрю... Сначала хотел посчитать модуль разности между a, b и b, c. Больший модуль проверить на делимость на меньший. Но нет. Точно не будет работать, например, на 4, 8, 14, то есть, когда шаг прогрессии меньше минимально разности между элементами проверяемой последовательности...

Peter Almazov

  • Sr. Member
  • ****
  • Сообщений: 482
    • Просмотр профиля
Re: Решаем задачки. :)
« Ответ #56 : Октябрь 01, 2011, 02:29:43 am »
А у меня, между делом, возникла просьба к "ремонтных дел мастеру" - Петру Алмазову. Что вы имели ввиду под "Уровень решения на КП - ниже плинтуса." - и если можно, с обоснованием.
Сейчас уезжаю, отвечу не раньше завтрашнего вечера.

DIzer

  • Гость
Re: Решаем задачки. :)
« Ответ #57 : Октябрь 02, 2011, 08:08:40 am »
Прочитал оглавление книги, кусок из первой главы(пробник с одного из издательских сайтов), попробовал восстановить логику обучения... Возникло 2 вопроса к вам kemiisto
1. 8 задача дается после того, как вводится неформальное определение циклического оператора или нет?
2. Не смог понять, что имел ввиду автор под словами СОВРЕМЕННОЕ ПРОГРАММИРОВАНИЕ-можете привести свои соображения на этот счет(с оценкой, как пользователя  честно заплатившего за книгу- насколько в этом контексте удачно изложение), может это просто маркетинговый ход?.
« Последнее редактирование: Октябрь 02, 2011, 08:34:50 am от DIzer »

Geniepro

  • Hero Member
  • *****
  • Сообщений: 1955
  • Знайте- истина в том, что повторено трижды подряд!
    • Просмотр профиля
Re: Решаем задачки. :)
« Ответ #58 : Октябрь 02, 2011, 04:40:43 pm »
Тестовые примеры в задаче 6 противоречат условию самой задачи.
Поэтому я беру такие тесты:
Main> :main
1 2 3 4 5
0 -- не найдено

Main> :main
1 2 3 4 0
0 -- не найдено

Main> :main
1 2 3 4 2
2

Main> :main
1 3 5 6 5
3
Само решение:
module Ex_6 where

main :: IO ()
main = do
    str <- getLine
    let xs :: [Integer]
        xs = map read $ words str
        ys = init xs
        l  = last xs
    print $ find l ys
  where
    find x xs = find' xs 1
      where
        find' []     _              = 0
        find' (y:ys) n  | y == x    = n
                        | otherwise = find' ys (n+1)


А вот решение задачи 8. Зачем кому-то здесь могут понадобиться циклы -- ума не приложу: ))
module Ex_8 where

main :: IO ()
main = do
    str <- getLine
    let x:y:z:_ = map read $ words str
        (av, m) = (x + y + z) `divMod` 3
        f       = m == 0 && (x == av || y == av || z == av)
    putStrLn $ if f then "Да" else "Нет"
Три числа являются рядом лежащими членами арифметической прогрессии, если их сумма кратна трём, а одно из них (среднее) равно трети от их суммы (среднее арифметическое трёх чисел):
y = x + d
z = x + d + d
(x + y + z) = x + (x + d) + (x + d + d) = 3*(x + d) = 3*y
(x + y + z) = 3*y кратно трём
(x + y + z)/3 = y

это я что бы самому не забыть )))
« Последнее редактирование: Октябрь 02, 2011, 09:11:26 pm от Geniepro »
to iterate is human, to recurse, divine

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

DIzer

  • Гость
Re: Решаем задачки. :)
« Ответ #59 : Октябрь 02, 2011, 05:13:43 pm »

А вот решение задачи 8. Зачем кому-то здесь могут понадобиться циклы -- ума не приложу: ))
module Ex_8 where

main :: IO ()
main = do
    str <- getLine
    let x:y:z:_ = map read $ words str
        (av, m) = (x + y + z) `divMod` 3
        f       = m == 0 && (x == av || y == av || z == av)
    putStrLn $ if f then "Да" else "Нет"
Мне (dizer'у) - и скорее всего начинающему программисту (который хочет решить эту задачку) - но, я так понял, не вам  ;)

Цитировать
Три числа являются рядом лежащими членами арифметической прогрессии, если их сумма кратна трём, а одно из них (среднее) равно трети от их суммы (среднее арифметическое трёх чисел):
y = x + d
z = x + d + d
(x + y + z) = x + (x + d) + (x + d + d) = 3*(x + d) = 3*y
(x + y + z) = 3*y кратно трём
(x + y + z)/3 = y

это я что бы самому не забыть )))
Да, не вам - теперь, я надеюсь, это видят - все.   :( .  Вот, кстати, Kemiisto, ответ от любителя хаскеля- и очень наглядный урок: "не понимаешь что нужно делать - нефиг писать программу, ибо  тут не поможет даже Хаскель"... И еще поздравляю - вы, в отличии от Geniepro поняли в чем прикол с пол-тычка.
« Последнее редактирование: Октябрь 03, 2011, 04:54:23 am от DIzer »