https://projecteuler.net/problem=62
数字をソートして同じ数になるものを集めます。ただし、昇順だと0があると桁数がわからなくなるので、降順にソートして整数に直します。
import sys #################### library #################### fn digits(owned n: Int) -> List[Int]: var ds = List[Int]() while n > 0: var d = n % 10 ds.append(d) n //= 10 return ds #################### process #################### # 数字を降順に並べて再び整数化する fn encode(n: Int) -> Int: var ds = digits(n) sort(ds) var s = 0 for i in range(len(ds)-1, -1, -1): s = s * 10 + ds[i] return s fn f(N: Int) raises -> Int: var dic = Dict[Int, List[Int]]() var n = 1 while True: var c = n**3 var s = encode(c) if s in dic: dic[s].append(c) else: dic[s] = List[Int](c) if len(dic[s]) == N: return dic[s][0] n += 1 fn main() raises: var args = sys.argv() var N = atol(args[1]) print(f(N))