Hatena::Groupcadr

kozima の日記

2009-05-16

15 分のもやってみた

00:09

http://ameblo.jp/programming/entry-10001212615.html もやってみました。何分かかったのかよくわからない。変数名がわかりにくいせいでバグ出しましたが、たぶん 15 分でできてると思います。

最初は引数をどうやって加工したら扱いやすくなるだろうかと考えたんですが、考えてるうちに実はそんな必要ないかなーと思い始めました。

で、結局のところ、空白が入らないデータが空白区切りで並んでるんだったら、分解せずにそのまま search *1 でいいんじゃね?とか思った結果がこのコード。

(defun who-can-see (users allowed-data report-data)
  (loop for user in users and allowed in allowed-data
    if (loop for data in report-data always (search data allowed))
    collect user))

合ってるんでしょうか。入力の細かい仕様の部分も意味がわからなかったのですが。一応、例にあるものについては正しい結果が得られます。

おまけ

こんなゴルフ臭いことをやろうとして無駄に時間使いました。空白区切りの文字列からシンボルのリストを作る短いコード。

(read-from-string (format nil "(~A)" "clients products"))
;=> (clients products)

*1xyzzy なら string-match