anchor.diff:                                             (let ((buf (make-string (file-length file))))
                                                (read-sequence buf file)
                                                (read-from-string buf))
  -                                         ;; return empty ranking if file doesn't exist
  +                                         ;; ランキングファイルが存在しなかった場合は空のデータを返す。
                                            '())))
            (write-ranking (ranking)
                           (with-open-file (file +ranking-file-name+
  
positive.code:     (t
        (scr-format "~% 「回復薬を持っていません！」~%"))))
  
  (defconstant +ranking-max-length+ 10)
  (defconstant +ranking-file-name+ "ranking.lisp")
  
  (defun total-seconds-to-hms (ss)
    (let* ((h (floor ss 3600))
           (m (floor (mod ss 3600) 60))
           (s (mod ss 60)))
      (list h m s)))
  
  (defun ranking-update (name total-seconds ranking)
    (let ((ranking1
           (stable-sort
  
negative.code:                             (list name total-seconds)
                            entry))
                        ranking)
              ;; 同じタイムは後ろに追加する。早い者勝ち。
              (append ranking (list (list name total-seconds))))
            #'< :key #'cadr)))
      ;; 最大で +ranking-max-length+ の項目を返す。
      (loop for i from 1 to +ranking-max-length+
            for entry in ranking1
            collect entry)))
  
  ;; ランキングの内容を表示する。name を指定すると該当の項目の左に矢印が
  ;; 表示される。
  (defun ranking-show (ranking &optional name)
    (loop for place from 1 to 10
          for entry in ranking
  