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-01-31

お題(127): 指定コマンドを別プロセスで起動、Arcで参加etc

| 20:09 | お題(127): 指定コマンドを別プロセスで起動、Arcで参加etc - わだばLisperになる を含むブックマーク はてなブックマーク - お題(127): 指定コマンドを別プロセスで起動、Arcで参加etc - わだばLisperになる

Common Lisp部門

今回のお題は、指定コマンドを別プロセスで起動とのこと。

とりあえず、KMRCLのcommand-outputを紹介して終わりました。

Arc部門

もっと「俺も俺も」とドッカンドッカン投稿されるのかと思ってたんですが、今日現在盛り上がってるのは、アジア圏内参加者では私一人だけのようです。

関数名等がCommon Lisp系のものが殆どなので、Common Lispに馴染みがあるとなんとなく気軽かなという気はしています。

そんな感じなので、Schemeの人とかは、Schemeの標準関数とかSRFIを片っ端から作ってしまうという学習方法もアリな気もします(笑)

決められた枠が非常にゆるい気がするので、やりたい放題な印象も受けますし…。

あと、システムのソースのarc.arcを眺めるとやりたいことが、存外さっと見付かって良い感じです。

それはさておき、そういった感じで、簡単なのをつらつらと投稿しております。

  • Hello, world!

とりあえず、昨日のうちに記念で投稿しました。

  • 与えられた数字のケタ数

文字列にして勘定の方向で

  • コラッツ・角谷の問題

前にCLで作ったのを翻訳してみたんですが、元が遅いので動作が遅いままです。

afnってのがあるんですが、結構便利な気がします。

ネーミングはitの代りにselfで参照できるアナフォリック無名関数ってことなんでしょうか。

((afn (x)
   (if (< x 2)
       x
       (+ (self (- n 1))
	  (self (- n 2)))))
 2)

とか。

  • 重複無し乱数

Common Lispのrotatefを使った感じで作ってみました。

  • 重複する要素を取り除く

CL版をそのまま書き直し

  • アレイのuniq

元からあるので、それを紹介

  • n人中m人が当選するくじ

「重複する要素を取り除く」の解答を流用してやっつけ気味

Arcを使ってみてのちょっとしたこと
  1. 全体的に短く書けるだけに、無闇に短くしたくなる。
  2. 関数名が大体3文字に略された単語なので、自分が付ける名前もそんな感じになって行く…。
  3. cdr:memとか割と良い感じに思える。多分馴れると常套句が沢山できる気がする。とりあえず、引数を1つしか取らないのを見付けると、すぐ合体してみたくなる。
  4. (lst 3)とかも案外良い感じ、要するに、lst[3]ということなのだけれど…。
  5. (push (pop (nchcdr lst (rand (len lst)))) res)とかしたかったけど、現状では駄目らしい。