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

ArcでL-99 (P10 連続する要素をランレングス圧縮する)

| 15:24 | ArcでL-99 (P10 連続する要素をランレングス圧縮する) - わだばLisperになる を含むブックマーク はてなブックマーク - ArcでL-99 (P10 連続する要素をランレングス圧縮する) - わだばLisperになる

前回に引き続き連続する要素を纏める系の問題ですが、前回のpackを使えば簡単です。

そして昨日、新しいArcが公開されました。

新しい構文が追加されたり、関数名が変更されたり。

といっても、Arc at 3 Weeksにも書いてあるアイディアなので、今回採用になった、というほうが良いでしょうか。

この時は、x.yとx:yですが、これが、x.yと、x!yってことになったみたいです。

list.1.2.3
;=> (1 2 3)
list!x!y!z
;=> (x y z)

なんとなく微妙。

しかし、この構文を使って書くとコードの見た目が、かなり変わって来ます。

今回は、折角なので、新しい書法で書いてみました。

括弧がどんどん無くなる…。

(def encode (lst)
  ((afn (lst acc)
	(if no.lst
	    rev.acc
	    (self cdr.lst
		  (cons `(,(len car.lst) ,caar.lst) acc))))
   pack.lst () ))

(encode '(a a a a b c c a a d e e e e))
;=> ((4 a) (1 b) (2 c) (2 a) (1 d) (4 e))