Comment detail

LL Golf Hole 2 - 文字列に含まれる単語の最初の文字を大文字にする (Nested Flatten)

Lazy Kで。666byte

$ echo "LL day and night" |lazy hole2.lazy
LL Day And Night
1
2
3
4
5
6
7
8
9
s(s`k(sii(s`k`s(s`ks(s`k`si(ss`si`kk)))(s`k`s`kk(s(s`ks(s`k`s`k(ss(s(ss`k(s(
sii)i))(ss`ki))(s`ksk)(s`k`sik))(s`k`s`kk(s(s`ks(s`kk(sii)))`k(si`k`ki)))))(
s`k`s(s(si`kk)`k(s`k`sik))(s`k`s`kk(s`k`si(s`kk(s`kk(s(s`ks(s`kk(sii)))`k(s(
s`ks(s`k`si(s`kk(s`k(s(s`k(s(ss(ss`ss)(ss`ki))s(s`ksk)(s(sii)i(s(s`ksk)i))(s
`k`sik))(s`kk(s(s(si`k(s`k`sik))(s`kk(s`k(sii(s(s`ks(s`k`s(si`k`kk)(s`k`s`k`
s(s`ksk)(s(s`ks(s`kk(sii)))`k(si`kI)))))`k`k`ki))(s`k(si(s(s(sii)i)`k(si`kI)
)(s(s`ksk)i))(s(si`k(s`k`sik))`k`k`ki)))))(s`k(ss(s(ss`ki)(ss(ss(ss`ss(ss`ki
)))))(s`ksk)(s`k`sik))k))))(s(si`k(s`k`sik))k))(si`kk)))))(s`kk(si`k`ki)))))
))))))))(s`k`s(si`k(s(s`ksk)(s(sii)i)(s(s`ksk)i)))k))`k`ki
Lazy K で 630 byte。

Lazy K のソースに付属している Lazy K コンパイラを使って以下のソースを Lazy-K に
変形し、適当に整形しました。

(load "./lazier.scm")
(load "./prelude.scm")
(load "./prelude-numbers.scm")

(lazy-def '(pred n)
          '(lambda(f x)
             (n (lambda(a b)(b (a f))) (k x) i)))
(lazy-def '(sub32 x) '(32 pred x))

(lazy-def '(islower x)
          '(car (x cdr (97 (cons #f) (26 (cons #t) (list-of #f) )))))

(lazy-def '(title f x)
          '(cons (car x)
                 (f
                   (and (= 32 (car x)) (islower (car (cdr x)))
                        (cons (sub32 (car (cdr x))) (cdr(cdr x)))
                        (cdr x)))))
(print-as-unlambda (laze '(Y title)))
1
2
3
4
5
6
7
8
9
sii(s`k(s`k`s(s`ks(s`k`si(ss`si`kk)))(s`k`s`kk(s(s`ksk)`k(s(s(s(s(s`k(si`kk)
(s(s(si`kk)`k(si`k`ki))`k(s(s`ksk)i(s(sii)i(s(s`ksk)i)(s`k`s(si`k`ki)k))(s(s
i`kk)`k(sii(s`k(s`k`s(si`k`ki)k)(sii)))))))(s(s(s(s(si`k`ki)`kk)`k(si`k`ki))
`k(s(sii)i(s(s`ksk)i)`s(s`ksk)(s(sii)`s(s`ksk)(s(s`ksk)i))(s`k`s(si`k`ki)k)(
s(s`ksk)(s(s`ksk)i(s(s`ksk)(sii(s(s`ksk)i))))(s`k`s(si`kk)k)(sii(s`k(s`k`s(s
i`k`ki)k)(sii))))))`kk))`k`ki)(s(s`ks(s`k`si(s`kk(s`k(s(s`ksk)i(s(sii)i(s(s`
ksk)i)(s(s`ks(s`k`s`ks(s(s`ks(s`k`s`ks(s`k`s`kk(s(s`ksk)`k(s`k`s`k`si(s`k`s`
kk(s`k`sik)))))))`k`kk)))`k`k`ki)))(s(si`k`ki)`kk)))))(s`kk(s(si`k`ki)`k`ki)
)))(si`k`ki)))))(sii))

Index

Feed

Other

Link

Pathtraq

loading...