Sep. 11th, 2014

orleanz: (main)
.. работующую прогу, которая по числу N показывает 1/N в виде десятичной дробью с циклам

[(1,"0.1"),
(2,"0.5"),
(3,"0.(3)"),
(4,"0.25"),
(5,"0.2"),
(6,"0.1(6)"),
(7,"0.(142857)"),
(8,"0.125"),
...
(17,"0.(0588235294117647)"),
...
(102,"0.009(8039215686274509)"),
(103,"0.(0097087378640776699029126213592233)"),
...

Нужно было для одной задачи на Эйлере.

Казалось бы, вроде понятно как делать. Берешь единицу, умножаешь на десять, смотришь - больше ли N, если нет, еще умножаешь на десять, и так далее, в конце концов, делишь целочисленно (quot), запоминаешь результат, а дальше то же самое опять с начала для остатка (mod), и останавливаешься на том моменте где и quot и mod совпадают с одним уже до этого встреченным, типа, нашли цикл, усе. А если нашли ноль, то типа цикла не будет.

Но с учетом чисто функциональных ограничений Хаскелла пришлось попотеть. Ничего, утешаю себя тем, что я только еще новичок в Хаскелле, со временем буду писать на нем быстро и легко.

ПС. Если кто знает, как искать циклы проще - пишите. Может, можно в десять раз проще.

Profile

orleanz: (Default)
orleanz

December 2018

S M T W T F S
      1
2345678
9101112 131415
16171819202122
23242526272829
3031     

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Aug. 17th, 2025 03:31 pm
Powered by Dreamwidth Studios