[ create a new paste ] login | about

Link: http://codepad.org/obIkrj4w    [ raw code | fork ]

Scheme, pasted on Mar 1:
;;;** お題: じゃんけんの勝ちの数を調べるもん
(define judge_janken
  (lambda (s)
	(if
		;;じゃんけんされてないもん,バカア!
		(null? s) 0
	  (let (;(kinds '(c p p c p)) ->(0 2 3 2)
			;;(グー チョキ パー 種類)だよーん
			(res (kinds (string->list s) list)))
		(if
			;;勝負なしでしたぁ!!
			(not (= 2 (cadddr res))) 0
		  ;;勝負判定しまぁす
		  (cond
		   ;;グーがあるときでえーす
		   ((not (zero? (car res)))
			(if (zero? (cadr res))
				;;チョキじゃないならパーの数だもん
				(caddr res)
			  ;;チョキならグーの数だもん
			  (car res)))
		   (else
			;;チョキとパーならチョキの数だよぉ
			(cadr res))))))))

;;;補助関数
;;; (kinds s f)
;;; (kinds '(#\c #\p #\c  #\p #\p) list) ->(0 2 3 2)
;;; 返値はg c p k
;;;  g c p ->グーチョキパーの各数
;;;  k->手の種類の数
(define kinds
  (lambda (s col)
	(cond
	 ((null? s) (col 0 0 0 0))
	 ((eq? #\g (car s))
	  (kinds (cdr s)
			 (lambda (g c p k)
			   (col (1+ g) c p
					(if (= g 0) (1+ k) k)))))
	 ((eq? #\c (car s))
	  (kinds (cdr s)
			 (lambda (g c p k)
			   (col g (1+ c)  p
					(if (= c 0) (1+ k) k)))))
	 ((eq? #\p (car s))
	  (kinds (cdr s)
			 (lambda (g c p k)
			   (col g c (1+ p)
					(if (= p 0) (1+ k) k))))))))

;;;実行例
(judge_janken "gpgpgppppg")
6
(judge_janken "ggggggggggggggg")
0
(judge_janken "ccpcpppcccpppcppcpcc")
10
(judge_janken "ggcgcgcggggcpgcggcgcggggcgcgcc")
0


Create a new paste based on this one


Comments: