コラッツ予想がとけたらいいな2

自分の考察を書いていきます。

Egisonで文字列書き換え系で自然数の四則演算

自然数をzeroとsuccで表せるのは周知の事実だ。
文字列で書くこともできる。例えば、"ssso"は3になる。
文字列で表した自然数を、文字列のまま計算したらどうだろう。
文字列書き換え系でやってみた。

ユーティリティ

  • convergeReplaceString()
    それ以上置換しても変わらなくなるまで、置換を繰り返す。
  • reverseString()
    文字列を逆順にする。

第一引数をx、第二引数をyとします。

加算

  1. xの中の"o"yに置換する。

Egisonにもポイントフリースタイルが導入されればなあ。

減算

  1. xの中の"o"reverseString yに置換する。
    (例えば7 - 3なら"sssssssosss"になる)
  2. "sos"を無くなるまで"o"に置換する。
  3. "os"を無くなるまで"o"に置換する。
    (x<yのときは答えは0になるため)

乗算

  1. xの中の"so"reverseString yに置換する。"so"が無くなるまで置換する。
  2. 文字列を逆順にする。

余り

  1. xの中のy"o"に置換する。yが無くなるまで置換する。

除算

  1. 余りを引く。zとおく。
  2. zの中のy"os"に置換する。yが無くなるまで置換する。
  3. 文字列を逆順にする。




意外とすんなり実装できた。
整数に拡張したら面白いかもしれない。
(でも多分やらない)

ソースコード