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

ArcでL-99 (P20 指定した要素を削除)

| 03:36 | ArcでL-99 (P20 指定した要素を削除) - わだばLisperになる を含むブックマーク はてなブックマーク - ArcでL-99 (P20 指定した要素を削除) - わだばLisperになる

今回は、指定した要素を削除するというお題です。

割とこのL-99(というよりP-99)というのは、以前に解いた問題を応用して新しい問題を解かせるということにおいても秀逸で、なるほど!と感心することが結構あります。

(remove-at '(a b c d) 2)
;=> (a c d)

(def remove-at (lst pos)
  ((afn (lst acc cnt)
    (if (or no.lst (> cnt pos))
	(join rev.acc lst)
	(self cdr.lst
	      (if (is cnt pos)
		  acc
		  (cons car.lst acc))
	      (+ 1 cnt))))
   lst () 1))