28.10.2015 / 11:41 | |
Bogdan-G Пользователь Сейчас: Offline
Имя: Богдан Откуда: Москва Регистрация: 13.02.2011
| Naik, все замки от честных людей |
3.01.2016 / 15:05 | |
ДубоХирург Пользователь Сейчас: Offline
Имя: Сергей Откуда: Где-то возле Москвы Регистрация: 01.07.2012
| Почему в gtk2hs нельзя рисовать точку с нецелочисленными координатами? Это провал, товарищи
|
3.01.2016 / 15:08 | |
ДубоХирург Пользователь Сейчас: Offline
Имя: Сергей Откуда: Где-то возле Москвы Регистрация: 01.07.2012
| Ксакеп, как лучше посчитать период и предпериод последовательности? Я делал как-то так, но оно не очень работает: Открыть спойлер Закрыть спойлер period :: [Int] -> Int -> Int -> Int -> Int
period [] _ _ _ = 0
period [x] _ _ _ = 0
period (x:(y:xs)) index a b | x==a, y==b = index - 1
| otherwise = period ([y] ++ xs) (index + 1) a b
preperiod :: [Int] -> Int -> Int -> Int
preperiod seq index period | seq!!index == seq!!(index+period+1), seq!!(index+1) == seq!!(index+period+2) = index - 1
| otherwise = preperiod (tail seq) (index+1) period
|
3.01.2016 / 16:31 | |
aRiGaTo Пользователь Сейчас: Offline
Имя: Snork Откуда: Yerevan Регистрация: 03.02.2010
| ДубоХирург, Либо я что-то не так понимаю (ибо не Ксакеп), либо ты. Уверен, что ищешь период? Скорее индекс периода длиною в 2 элемента. Так же не совсем точная постановка задачи: может ли последовательность содержать периодическую подпоследовательность? Про предпериоды ты написал. А может ли встретиться «постпериод»?
Я бы искала так: 0. n = 2 1. Разделить последовательность на n частей 2. Сравнить подпоследовательности в порядке их следования (возможно, позволит учитывать «постпериод», если такое не требуется, то порядок не важен - главное, чтобы все были одинаковыми) 3. Если совпадают несколько рядом стоящих подпоследовательностей - период найден, иначе увеличить n 4. Если подпоследовательности получаются пустыми, период не найден. Для учета предпериода - смещаем последовательность на элемент вправо. И так далее
__________________
don't tread on me Изменено aRiGaTo (3.01 / 16:32) (всего 1 раз) |
3.01.2016 / 17:00 | |
ДубоХирург Пользователь Сейчас: Offline
Имя: Сергей Откуда: Где-то возле Москвы Регистрация: 01.07.2012
| aRiGaTo, да, я не всё написал. Последовательность определяется реккурентным соотношением: xn = (a*x(n-1)+b*x(n-2)+c)%m Я это использую, и ищу совпадающие пары Не могу себе представить последовательность с постпериодом, ведь числовые последовательности, в общем-то, не имею конца
Изменено ДубоХирург (3.01 / 17:01) (всего 1 раз) |
7.01.2016 / 20:19 | |
ДубоХирург Пользователь Сейчас: Offline
Имя: Сергей Откуда: Где-то возле Москвы Регистрация: 01.07.2012
| Чутка переформулирую задачу в соответствии с текущими условиями: Дан линейный конгруэнтный ГПСЧ: Где a, b, c, m - константы, заранее неизвестные. gen :: Int -> Int -> Int -> Int -> Int -> Int -> Int
И для этого генератора надо вычислить период, т. е. написать функцию: period :: (Int -> Int -> Int) -> Int
В принципе, рабочий вариант этой функции у меня уже был, но он использовал списки, а по заданию это запрещено. Как это более-менее красиво реализовать без списков? Пока в голову приходят только итеративные варианты, которые реализовывать не очень красиво. Изменено ДубоХирург (7.01 / 20:20) (всего 1 раз) |
19.01.2016 / 21:50 | |
ДубоХирург Пользователь Сейчас: Offline
Имя: Сергей Откуда: Где-то возле Москвы Регистрация: 01.07.2012
| https://github.com/SeTSeR/HaskellRandomВот, написал, если вдруг кому поможет Таки итеративный вариант Изменено ДубоХирург (19.01 / 21:50) (всего 1 раз) |
9.05.2016 / 18:08 | |
vl@volk Пользователь Сейчас: Offline
Имя: Владислав Откуда: Земля Регистрация: 26.12.2012
| Слегка непонятный, но забавно очень. Особенно эта сложность с вводом кучи символов, которые нужно знать все, чтоб начать писать __________________
знает толк |
15.04.2017 / 15:48 | |
Ксакеп Модератор форума Сейчас: Offline
Регистрация: 20.06.2012
| Тем кто хочет попробовать изучить Haskell рекомендую посмотреть курсы на https://stepik.org |
19.04.2017 / 08:44 | |
Alexandr Пользователь Сейчас: Offline
Имя: Александр Откуда: Днепр Регистрация: 01.07.2012
| зачем?
Предупреждение от Ксакеп: Причина: малосодержательное сообщение. |