LLGolf Hole 8
doukaku.org
最初に書いたコード。
(do*((e(read))(i(- e)(1+ i)))((= i e))(dotimes(j(- e(abs i)))(princ"*"))(princ #\NewLine))
微妙だなあと思って投稿しないでいたらformatを使った回答が。
;mc #7421(2008-08-27 19:25) [ Common Lisp ] (format t "~{~,,V,'*A~%~}" (do ((i 1 (1+ i)) (r () `("" ,i ,@r)) (a () `(,i "" ,@a))) ((< 4 i) `(,@(nreverse r) ,@(cddr a)))))
なにこれ知らない、というかxyzzyのリファレンスにも実践CommonLispにも載ってない(見落としてるだけ?)
書き直し
(do*((e(read))(i(- e)(1+ i)))((= i e))(format t"~,,V,'*A~%"(- e(abs i))""))
結果
CL-USER> (do*((e(read))(i(- e)(1+ i)))((= i e))(format t"~,,V,'*A~%"(- e(abs i))"")) 6 * ** *** **** ***** ****** ***** **** *** ** * NIL
xyzzyでも動いた。
,,Vの部分が第1引数に置き換わるってことで良いのかな? 調べておこう。
*
formatの章のむっちゃ最初の方に書いてあった…orz