またつまら(ry

擬音語自動生成ツールが忍び寄る機能主義によって便利になりました。コマンドに出力する擬音の数を指定することができます。

$ ./gion.scm
ほぇほぇ
$ ./gion.scm 5
むゎむゎ
びがびが
ひきひき
ぶぬぶぬ
びきびき

ふと思いついて、何の意味もなくプロセスをまたいだ再帰にしてみた。つまり、プロセスあたり1回の実行で1回しか擬音が出力できないということであり、これによって忍び寄る機能主義を華麗にスルーしている、というわけである。ちなみに、./gion.scm 1000 とかやると大変なことになるのは仕様です。

#!/usr/bin/env gosh
;; -*- coding: utf-8; -*-

(use srfi-27)
(use srfi-14)
(use gauche.process)

(define (main args)
  (random-source-randomize! default-random-source)
  (print (make-gion))
  (let1 command (car args)
    (if (null? (cdr args))
	0
	(let1 times (x->integer (cadr args))
	  (if (<= times 1)
	      0
	      (run-process command (- times 1) :wait #t)))))
  0)

(define (make-seed . args)
  (apply append '() (map char-set->list args)))

(define (random-pick ls)
  (ref ls (random-integer (length ls))))

(define (make-gion)
  (let* ((fst-seed (make-seed #[ぱ-ぽ] #[ば-ぼ] #[は-ほ] #[ま-も]))
	 (snd-seed (make-seed #[あ-ん]))
	 (fst (random-pick fst-seed))
	 (snd (random-pick snd-seed)))
    (list->string (list fst snd fst snd))))