«前の日記(2005.05.05 / Thursday) 最新 次の日記(2005.05.08 / Sunday)» 編集

Hena Hena Nikki

2003|05|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|10|11|12|
2012|01|02|03|04|05|06|07|08|10|12|
2013|01|02|04|06|

2005.05.06 / Friday [長年日記]

* [computer] 再帰のお勉強をやってみる (四則演算 vol.1)

今日は四則演算。 まず初めにトークン処理関数。 あー、ミス発見。直さなきゃ。 ←done.

(defun ys:get-tokens (expression)
  (let (tokens)
    (while (string-match "[0-9]+\\|[-+*/()]" expression)
      (setq tokens (cons (match-string 0 expression) tokens))
      (setq expression (replace-match "" nil t expression)))
    (reverse tokens)))

で、優先順位を無視した数式処理関数。 funcall が出てこなくて苦労した。情けない…。 ;(

(defun ys:eval-tokens (tokens)
  (let (token sign value)
    (while tokens
      (setq token (car tokens))
      (setq tokens (cdr tokens))
      (cond
       ((string-match "[0-9]+" token)
        (if value
            (setq value (funcall sign value (string-to-int token)))
          (setq value (string-to-int token))))
       ((string= "+" token)
        (setq sign '+))
       ((string= "-" token)
        (setq sign '-))
       ((string= "*" token)
        (setq sign '*))
       ((string= "/" token)
        (setq sign '/))))
    value))

優先順位に対応した数式処理関数はまた明日 (か明後日)。

* [myself] “猟奇的な彼女”をみた

想像していたよりずっと普通の内容だった。 とりあえずハッピー・エンドで良かった良かった。

* [myself] 今日のお仕事

欲しい情報が得られなかったことで、思う様に作業が出来なかった。 睡眠不足もあって気分的に辛い 1 日だったな。


  • この日記には本日 名の方が訪問してくださっているようです。 また、昨日は 名の方が訪問してくださったようです。
  • この日記の更新情報の取得には antenna.lirs を利用するのがおすすめです。