GrassでLLGolf Hole 8 準備
(load "grass-primitive.l") (defun % (&rest arg) (reduce #'funcall arg)) (defun $ (&rest arg) (reduce #'funcall arg :from-end t)) (defvar y (lambda (f) ($ (lambda (g) ($ f (lambda (x) (% g g x)))) (lambda (g) ($ f (lambda (x) (% g g x))))))) (defun llgolf8 () (let* ((plant (lambda (_lf) (lambda (_cn) (lambda (self) (lambda (_ci) (let ((eq? (% _cn _ci))) (% out (% eq? _lf w)) (% eq? eq? self (% succ _ci)))))))) (main (lambda (_c1) (lambda (_cn) (lambda (_plant) (lambda (self) (lambda (_ci) (let* ((eq? (% _cn _ci)) (ci+1 (% succ _ci)) (__plant ($ y _plant ci+1))) (% __plant _c1) (% eq? eq? self ci+1) (% eq? eq? __plant _c1)))))))) (c1 (charfn (char-code #\1))) (lf (charfn (char-code #\NewLine))) (cn (% in w))) (% y (% main c1 cn (% plant lf)) c1)))
実行
* (llgolf8) 4 w ww www wwww www ww w #<CLOSURE (LAMBDA (Y)) {23B622E5}>
二桁の数値は受け付けません。(というか2桁目以降無視) 記号やアルファベットを入力すると大きいピラミッドが。
plantとmainは直訳できる形だからあとは1とLFさえ作ってしまえば。EmacsのGrassモードの力を借りながら新幹線の中で植えて行くか。間に合うかな…