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 |

2010-04-07

KMRCLを眺める(134) RANDOM-STRING

| 13:47 | KMRCLを眺める(134) RANDOM-STRING - わだばLisperになる を含むブックマーク はてなブックマーク - KMRCLを眺める(134) RANDOM-STRING - わだばLisperになる

今回はKMRCLのstrings.lispから、RANDOM-STRINGです。

動作は

(LOOP :REPEAT 10
      :COLLECT (KL:RANDOM-STRING :LENGTH 8 :SET :UNAMBIGUOUS))
⇒ 
("JZXQz956" "Ck4HrVZw" "rZYJFrLK" "Z93rPrw3" "jcNvxkyC"
 "ggv578Xm" "SanChNn8" "52HZ6Gbm" "d4ABh8JT" "ahBcKt5L")

というところです。前回のRANDOM-CHARを利用してランダムな文字で文字列を作成します。

(defun random-string (&key (length 10) (set :lower-alpha))
  "Returns a random lower-case string."
  (declare (optimize (speed 3)))
  (let ((s (make-string length)))
    (declare (simple-string s))
    (dotimes (i length s)
      (setf (schar s i) (random-char set)))))

いつものごとく長さ分の文字列を作成しておき、RANDOM-CHARから返ってきた文字で埋めてゆくという流れです。

ゲスト



トラックバック - http://cadr.g.hatena.ne.jp/g000001/20100407