Hatena::Groupcadr

わだばLisperになる このページをアンテナに追加 RSSフィード

2004 | 12 |
2005 | 01 | 02 | 07 | 10 | 11 |
2006 | 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 | 11 |

2008-03-11

CLOSでL-99 (P09 連続して現われる要素を纏める)

| 19:32 | CLOSでL-99 (P09 連続して現われる要素を纏める) - わだばLisperになる を含むブックマーク はてなブックマーク - CLOSでL-99 (P09 連続して現われる要素を纏める) - わだばLisperになる

なんだかあまり面白くないパズルの様相を呈して来ました。こういうのではなくて、まともにCLOSの勉強をしなくては(笑)

(pack '(a a a a b c c a a d e e e e))
;=> ((A A A A) (B) (C C) (A A) (D) (E E E E))

(defmethod pack ((lst null)) () )
(defmethod pack (lst) (pack1 lst () () ))

(defmethod pack1 ((lst null) acc res)
  (nreverse (cons acc res)))
(defmethod pack1 ((lst cons) (acc null) res)
  (pack1 (cdr lst) (cons (car lst) acc) res))
(defmethod pack1 ((lst cons) acc res)
  (if (equal (car lst) (car acc))
      (pack1 (cdr lst) (cons (car lst) acc) res)
      (pack1 lst () (cons acc res))))