Skip to content

lambdaman 圧縮が何やっているか #2

@semiexp

Description

@semiexp

大まかな方針: UDLR の列を 4 進数で整数にして(コード中では 94 進数で書ける)、それをデコードする

x が 0, 1, 2, 3 のとき、それぞれ U, D, L, R に変換するやつ

BT I" BD x SO>FL

Y コンビネータ

cf. wikipedia

Lf B$ Lx B$ vf B$ vx vx Lx B$ vf B$ vx vx

本質パート

B$ B$ <Y> Lf Ln ? B= vn I! S B. BT I" BD B% vn I% SO>FL B$ vf B/ vn I% <num>

<Y> は上の不動点コンビネータ。<num> は UDLR の列をエンコードしたもの。
0 なら止める、それ以外なら n % 4 を上のやつで UDLR に変換し、再帰的に n / 4 を処理する

SO>FLUDLR を表す文字列。
0 が末尾に来るとまずいので、python 側でちょっとごまかしている

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions