Size: a a a

2021 May 12

[

[BRM]White Rabbit in Haskell
так и хрен с ними, я же не говнокод пишу
источник

[

[BRM]White Rabbit in Haskell
вот такой код у меня получился
источник

[

[BRM]White Rabbit in Haskell
fromNat и toNat имеют одну и ту же асимптотику - O(n)
источник

[

[BRM]White Rabbit in Haskell
сложение имеет асимптотику O(n)
источник

[

[BRM]White Rabbit in Haskell
умножение - O(2 * (n + m))
источник

[

[BRM]White Rabbit in Haskell
факториал O(3 * n)
источник

K

Kir in Haskell
Можно их наподобие difference lists заэнкодить, но зачем
источник

K

Kir in Haskell
Тогда сложение будет O(1). А материализация числа N - O(N)
источник

[

[BRM]White Rabbit in Haskell
при этом реализация умножения без конвертирования в нормальные числа резко становится O( n * m)
источник

[

[BRM]White Rabbit in Haskell
что так-то охренеть как дороже чем 2 * (n+m)
источник

[

[BRM]White Rabbit in Haskell
а факториал вообще в какие-то безумные цифры выходит
источник

K

Kir in Haskell
Справедливо. Но зачем вообще оптимизировать Nat, если можно реализовать его как newtype over Integer (с оптимизированной арифметикой) и два ViewPatern-а?
источник

[

[BRM]White Rabbit in Haskell
задание такое
источник

AF

Alexey Fedotov in Haskell
а что за сложность такая 2 * (n + m), 3 * n
источник

K

Kir in Haskell
Константу дропнуть забыли
источник

N

Nikita Ursol in Haskell
Да и дропать не обязательно, смысла не меняет.
источник

[

[BRM]White Rabbit in Haskell
Чё бы нет?
источник

к

кана in Haskell
что забавно (но легко выводимо, почему так), такие нарастающие операции имеют такую же сложности как они сами

a + b -> O(a + b)
a * b -> O(a * b)
a! -> O(a!)
источник

JS

Jerzy Syrowiecki in Haskell
нет, это же не под O
источник

[

[BRM]White Rabbit in Haskell
Нет, сложение за a происходит
источник