寿司 虚空編 -Sushi Kokuu Hen- 002 を Haskellで組んだ

www.adventar.org

アンヨヨンヨカレンダー15日目です。1時間ぐらいかけて作りました。

概要

comic.pixiv.net

これの式をHaskellで求めるプログラムを作った。 解説については漫画を読むかググってください。

コード

module Main where

f n = n + 1

b m n
  | m < n && m == 0 = f n
  | m > n && n == 0 = b (m - 1) (n + 1)
  | m > 0 && n >  0 = b m (b (m + 1) n)

g x = b x x

main :: IO ()
main = do
  print $ g 3

結果

f:id:be_07:20161216000223p:plain

今度直します

追記

式が間違えていたので修正しました。

module Main where

f n = n + 1

b m n
  | m < n && m == 0 = f n
  | m > 0 && n == 0 = b (m - 1) 1
  | m > 0 && n >  0 = b (m - 1) (b m (n - 1))

g x = b x x

main :: IO ()
main = do
  print $ g 3


これで61が出力されました。

おまけ

今回のコードです。

github.com