|
class Modulo(n=0, m=13) {
|
|
|
|
method init {
|
|
(n, m) = (n % m, m)
|
|
}
|
|
|
|
method to_n { n }
|
|
|
|
< + - * ** >.each { |meth|
|
|
Modulo.def_method(meth, method(n2) { Modulo(n.(meth)(n2.to_n), m) })
|
|
}
|
|
|
|
method to_s { "#{n} 「mod #{m}」" }
|
|
}
|
|
|
|
func f(x) { x**100 + x + 1 }
|
|
say f(Modulo(10, 13))
|