Comment detail

法演算 (Nested Flatten)

Evalを使用しました。 不正な文字列が与えられた場合のセキュリティには弱いですね。 この場合、なにかいい方法があるのでしょうか。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
def calc( x, ho ){
    x = x.replaceAll(/[0-9]+/, {
        def num = it.toInteger()

        seikika( num, ho ).toString()
    })
    seikika(new Eval().me(x), ho)
}

def seikika( num, ho ){
    while(num < 0 ){
        num += ho
    }
    num % ho
}

println calc("10 + 35", 10)
println calc("2 * 3", 10)
println calc("11 * 12", 10)
println calc("18 * 39", 10)

println calc("-13 * 11",7)
println calc("7 * 9",7)
println calc("3 * 4",7)

Index

Feed

Other

Link

Pathtraq

loading...