Real time: 11.625 sec.
Run time: 11.609375 sec.
Space: 438337756 Bytes
GC: 836, GC time: 3.546875 sec.
何も出力しないと 9 秒ちょっとでした。出力以外のほうが時間食ってます。文字列生成のコストが高い?
1
2
3
4
5
6
7
8
9
(defun young-1 (n m &optional (w (- n m -1)) (prefix ""))
(if (= m 0) (and (= n 0) (write-line prefix))
(when (<= m n)
(loop for k from w downto (ceiling n m)
as s = (concatenate 'string prefix #(#\Newline)
(make-string k :initial-element #\WHITE_SQUARE))
do (young-1 (- n k) (1- m) k s)))))
(defun young (n) (loop for m from 1 to n do (young-1 n m)))
kozima
#4548()
[
Common Lisp
]
Rating0/0=0.00
たぶん普通。accumulator は文字列にしてみました。
Celeron 2.66GHz, CLISP での実行結果:
何も出力しないと 9 秒ちょっとでした。出力以外のほうが時間食ってます。文字列生成のコストが高い?
(defun young-1 (n m &optional (w (- n m -1)) (prefix "")) (if (= m 0) (and (= n 0) (write-line prefix)) (when (<= m n) (loop for k from w downto (ceiling n m) as s = (concatenate 'string prefix #(#\Newline) (make-string k :initial-element #\WHITE_SQUARE)) do (young-1 (- n k) (1- m) k s))))) (defun young (n) (loop for m from 1 to n do (young-1 n m)))Rating0/0=0.00-0+
[ reply ]