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

みにくいアヒルの子系演算

| 15:56 | みにくいアヒルの子系演算 - わだばLisperになる を含むブックマーク はてなブックマーク - みにくいアヒルの子系演算 - わだばLisperになる

「ハッカーのたのしみ」という延々とビット演算が載ってる本がありますが、多分好きな人にとっては堪らない本だと思うのですね。

私もこの本をブックオフで購入したのですが、内容的にはさっぱりです。

しかし、作者はこういうのが相当好きなんだなということは伝わってきて、こういう本って良いなあと思ってしまい買ってしまったのですね…。

LISPでもリスト処理などに、こういうのが沢山あるような気がするので、微力ながらも気になったものを集めてみようかなと思いました。

なんというか、LISPで生活してないと出てこないような発想のようなものを集められると良いなと思うのですが、私の実力的にはなかなか難しそうです。

今回は、昔のLispマシンのソースを読んでて、そういえばそうだよなあと思った例です。

;; 1
(+ 1 2 3 -4 5)(+ (- (+ 1 2 3) 4) 5) 

(+ a b c (- d) e)(+ (- (+ a b c) d) e) 

(+ (frob) -1 2 3 4 5)(+ (1- (frob)) 2 3 4 5)

;; 2
(* a b c (/ d) e)(* (/ (* a b c) d) e)

どっちかというとこういうのは掲示板で募集してみた方が良いのかもしれないですね。

連続ものにしたいとは思っているのですが、ネタのストックはあと2つ3つ位しかありません(笑)

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

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

前回は、

((4 a) (1 b) (2 c) (2 a) (1 d) (4 e))

という風に出力していましたが、今回は、

((4 a) b (2 c) (2 a) d (4 e))

のように出力せよ、との問題。1つの場合は、リストにしないで、アトム単体で表現するというわけですね。

ということで前回のを少し修正して終わり。

(def encode-modified (lst)
  ((afn (lst acc)
	(if no.lst
	    rev.acc
	    (self cdr.lst
		  (let n (len car.lst)
		    (cons (if (is 1 n) caar.lst `(,n ,caar.lst)) 
			  acc)))))
   pack.lst () ))

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