読者です 読者をやめる 読者になる 読者になる

暇人がひたすら草を植える日記

Grass4日目。楽しくなってきた。

wから始めて文字コードをインクリメントしながら256文字出力。

wWWwWWWWwv   ; out&succ  
wwWWwWWWwv   ; 2
;main
wWWww        ; 2 2 : 4 
Ww           ; _ _ : 256
Wwwwww       ; _ out&succ
Wwwwwwwwww   ; _ char

コメント部分、:の左側は関数適用の内容で、右側は適用結果の分かりやすい名前。_ は直前の関数適用の結果で、charはプリミティブのw。

実行すると、制御文字とかも出力するので変なのが表示されたりビープ(0x07)が鳴ったり。

ASCII印字可能文字(0x20〜0x7E)だけ表示しようとするとめんどい。

wWWwWWWWwv                  ; out&succ
wwwwWWWwwWwwWWWWWWwwwwWwwv  ; +
wwWWwv                      ; 1
;main
wWWWww                      ; + 1    : 1+
Wwww                        ; _ 1    : 2
WWw                         ; 1+ _   : 3
Www                         ; _ 2    : 8
WWWWWWWwww                  ; + 2    : 2+
Wwww                        : _ 3    : 5
WWWWWWWWWwww                ; + 8    : 8+
Www                         ; _ 5    : 13
WWWWWWWw                    ; 2 _    : 169
Wwwwwwwwwwwwwwww            ; _ succ
Wwwwwwwwwwwwwwwwww          ; _ char : <SPACE>
WWWWWWWWWWwwwwwwwww         ; 2 3    : 9
WWWWWWWWWWWw                ; 2 _    : 81
WWWWWWWWWWWWWWWWw           ; + _    : 81+
Wwwwwwww                    ; _ 13   : 94
WWWWWWWWWWWWWWWw            ; 1+ _   : 95
Wwwwwwwwwwwwwwwwwwwww       ; _ out&succ
Wwwwwwww                    ; _ <SPACE>

実行結果

 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~

数字の作り方次第で短くできそう。
なんかこういう奴の最短手順を求める問題が確かProject Eulerに・・・あった。
まだ解いてない。
これに冪乗も加えて考えるのはかなりしんどそう…

Project Eulerは2ヶ月ほど前から挑戦してます。(殆どxyzzyで解いてるけど、たまにSBCL使ってゴリ押し)
Grassで商・剰余が書けたら再開しよう。