Вниз  Haskell
- 28.10.2015 / 11:41
Bogdan-G
  Пользователь

Bogdan-G 
Сейчас: Offline
Naik, все замки от честных людей :gg:
- 3.01.2016 / 15:05
ДубоХирург
  Пользователь

ДубоХирург 
Сейчас: Offline
Почему в gtk2hs нельзя рисовать точку с нецелочисленными координатами? Это провал, товарищи
- 3.01.2016 / 15:08
ДубоХирург
  Пользователь

ДубоХирург 
Сейчас: Offline
Ксакеп, как лучше посчитать период и предпериод последовательности?
Я делал как-то так, но оно не очень работает:
Открыть спойлер

- 3.01.2016 / 16:31
aRiGaTo
  Пользователь

aRiGaTo 
Сейчас: Offline
ДубоХирург, Либо я что-то не так понимаю (ибо не Ксакеп), либо ты. Уверен, что ищешь период? Скорее индекс периода длиною в 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
aRiGaTo, да, я не всё написал.
Последовательность определяется реккурентным соотношением:
xn = (a*x(n-1)+b*x(n-2)+c)%m
Я это использую, и ищу совпадающие пары
Не могу себе представить последовательность с постпериодом, ведь числовые последовательности, в общем-то, не имею конца

Изменено ДубоХирург (3.01 / 17:01) (всего 1 раз)
- 7.01.2016 / 20:19
ДубоХирург
  Пользователь

ДубоХирург 
Сейчас: Offline
Чутка переформулирую задачу в соответствии с текущими условиями:
Дан линейный конгруэнтный ГПСЧ:

Где a, b, c, m - константы, заранее неизвестные.
  1. gen :: Int -> Int -> Int -> Int -> Int -> Int -> Int
И для этого генератора надо вычислить период, т. е. написать функцию:
  1. period :: (Int -> Int -> Int) -> Int
В принципе, рабочий вариант этой функции у меня уже был, но он использовал списки, а по заданию это запрещено. Как это более-менее красиво реализовать без списков?
Пока в голову приходят только итеративные варианты, которые реализовывать не очень красиво.

Изменено ДубоХирург (7.01 / 20:20) (всего 1 раз)
- 19.01.2016 / 21:50
ДубоХирург
  Пользователь

ДубоХирург 
Сейчас: Offline
https://github.com/SeTSeR/HaskellRandom
Вот, написал, если вдруг кому поможет
Таки итеративный вариант

Изменено ДубоХирург (19.01 / 21:50) (всего 1 раз)
- 9.05.2016 / 18:08
vl@volk
  Пользователь

vl@volk 
Сейчас: Offline
Слегка непонятный, но забавно очень. Особенно эта сложность с вводом кучи символов, которые нужно знать все, чтоб начать писать :)
__________________
 знает толк
- 15.04.2017 / 15:48
Ксакеп
  Модератор форума

Ксакеп 
Сейчас: Offline
Тем кто хочет попробовать изучить Haskell рекомендую посмотреть курсы на https://stepik.org
- 19.04.2017 / 08:44
Alexandr
  Пользователь

Alexandr 
Сейчас: Offline
зачем?
Предупреждение от Ксакеп:
Причина: малосодержательное сообщение.
Наверх  Всего сообщений: 40
Фильтровать сообщения
Поиск по теме