正規表現にマッチしうる単語を全パターン生成したら順番が付けれるので、圧縮とかに使えるというもの


インストールした
brew install https://raw.github.com/sinya8282/homebrew/rans/Library/Formula/rans.rb --HEAD


SFCの学籍番号で試す
% rans "[ts]\d{5}[a-z]{2}" --text t03792sh
70163867
むしろ長くなった


戻す
% rans "[ts]\d{5}[a-z]{2}" --value 70163867
t03792sh



速い
% time rans "a*(c*|b*)" --value 100000
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
rans "a*(c*|b*)" --value 100000 0.15s user 0.00s system 94% cpu 0.159 total


正規表現にマッチする正規表現
% rans ".+" --text "[ts]\d{5}[a-z]{2}"
31462101652614893842981046923104593130365
% rans ".+" --value 31462101652614893842981046923104593130365
[ts]\d{5}[a-z]{2}


日本語通る
% rans ".+" --text "RANSに日本語通るじゃん"
147105960411517028678017420574823136344237912645382197029890108076901827475
% rans ".+" --value 147105960411517028678017420574823136344237912645382197029890108076901827475
RANSに日本語通るじゃん


奇数
% rans "([1-9]+\d*)?[13579]" --value 0
1
% rans "([1-9]+\d*)?[13579]" --value 1
3
% rans "([1-9]+\d*)?[13579]" --value 2
5
% rans "([1-9]+\d*)?[13579]" --value 3
7
% rans "([1-9]+\d*)?[13579]" --value 4
9
% rans "([1-9]+\d*)?[13579]" --value 11
23