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-10

CLOSでL-99 (P08 連続して現われる要素を圧縮)

| 17:24 | CLOSでL-99 (P08 連続して現われる要素を圧縮) - わだばLisperになる を含むブックマーク はてなブックマーク - CLOSでL-99 (P08 連続して現われる要素を圧縮) - わだばLisperになる

なんとなくのQiでの解答をなんとなくdefgenericで。

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

(defgeneric compress (lst)
  (:method ((lst null)) ())
  (:method (lst) (compress1 (car lst) (cdr lst))))

(defgeneric compress1 (head tail)
  (:method (head (tail null)) (list head))
  (:method (head (tail cons))
    (if (equal head (car tail))
	(compress tail)
	(cons head (compress tail)))))