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

ArcでL-99 (P06 リストの中身が回文的かを調べる)

| 07:07 | ArcでL-99 (P06 リストの中身が回文的かを調べる) - わだばLisperになる を含むブックマーク はてなブックマーク - ArcでL-99 (P06 リストの中身が回文的かを調べる) - わだばLisperになる

今回は、リストの内容が回文になっているかどうかを調べるというもの、ひっくりかえして比較すれば良いのですが、一応練習ということで丁寧に書いてみました。

同じ要素で構成されたリストかを比較するので、isoを使っています。

(def palindrome (lst)
  ((afn (l acc)
	(if (no l)
	    (iso lst acc)
	    (self (cdr l) (cons (car l) acc))))
   lst () ))

;; 簡単に
(def palindrome (lst)
  (iso (rev lst) lst))

(palindrome '(x a m a x))
;-> t

(palindrome '(た け や ぶ や け た))
;-> t