fn pow10(exp: u32) -> u32 { var result: u32 = 1 var i: u32 = 0 while i < exp { result = result * 10 i = i + 1 } return result } fn digitCount(n0: u32) -> u32 { var n: u32 = n0 var count: u32 = 0 while n > 0 { count = count + 1 n = n / 10 } return count } fn cyclops(n: u32) -> Bool { let count: u32 = digitCount(n) if count % 2 == 0 { return false } let mid: u32 = count / 2 if n / pow10(mid) % 10 != 0 { return false } var value: u32 = n var pos: u32 = 0 while pos < count { let digit: u32 = value % 10 if pos != mid && digit == 0 { return false } value = value / 10 pos = pos + 1 } return true } pub fn main(world: World) -> Void raises { if cyclops(105) && !cyclops(100) { check world.out.write("cyclops ok\n") } }