https://projecteuler.net/problem=15
Combinationの計算をすればよいですが、あえてDPで計算しています。Matrix構造体を1次元ベクトルで表現しています。
import sys #################### Matrix #################### struct Matrix: var H: Int var W: Int var A: DynamicVector[Int] fn __init__(inout self, H: Int, W: Int): self.H = H self.W = W self.A = DynamicVector[Int]() self.A.resize(H*W, 0) fn __getitem__(self, i: Int, j: Int) -> Int: return self.A[i*self.W+j] fn __setitem__(inout self, i: Int, j: Int, e: Int): self.A[i*self.W+j] = e #################### process #################### fn f(H: Int, W: Int) -> Int: var dp = Matrix(H+1, W+1) dp[0, 0] = 1 for x in range(H+1): for y in range(W+1): if x >= 1: dp[x, y] += dp[x-1, y] if y >= 1: dp[x, y] += dp[x, y-1] return dp[H, W] fn main() raises: let args = sys.argv() let H = atol(args[1]) let W = atol(args[2]) print(f(H, W))