1. kedama17

    Posted

    kedama17
Changes in title
+ズンドコキヨシ with Common Lisp
Changes in tags
Changes in body
Source | HTML | Preview
@@ -0,0 +1,61 @@
+# 何の記事?
+最近(?)流行のキヨシチェック、Common Lispはなかったようなのでやってみました。
+
+# ズンドコズンドコ
+
+```cl:zundoko.lisp
+;;;; zundoko problem
+
+;; 初期化
+(defun init-zundoko ()
+ ; ズンドコ状態
+ (defparameter *zundoko-stat* '())
+ ; ズンドコ定義
+ (defvar +zun+ 0)
+ (defvar +doko+ 1)
+ ; キヨシ判定時のズンドコパターン
+ (defvar +zundoko-pat+ (list 0 0 0 0 1)))
+
+;; キヨシチェック関数
+(defun zundoko (out-stream)
+ (setf *zundoko-stat* (append *zundoko-stat* (list (random 2))))
+
+ ;; ズンドコしすぎないようにcdrする
+ (if (> (length *zundoko-stat*) 5)
+ (setf *zundoko-stat* (cdr *zundoko-stat*)))
+
+ (if (equal (length *zundoko-stat*) 5)
+ ;; 要素が5個ならキヨシ判定
+ (progn
+ ;; 現在の状態でズンドコする
+ (mapcar
+ (lambda (x)
+ (if (equal x +zun+)
+ (format out-stream "ズン ")
+ (format out-stream "ドコ ")))
+ *zundoko-stat*)
+
+ ;; パターンにマッチしたら\キヨシ/する
+ (if (reduce (lambda (x y) (and x y)) (mapcar #'equal *zundoko-stat* +zundoko-pat+))
+ (progn
+ (format out-stream "\キヨシ/")
+ t)
+ nil))
+
+ ;; 要素が5個未満ならズンドコチャージ中
+ (progn
+ (format out-stream "ズンドコチャージ中")
+ nil))
+)
+
+;; 初期化
+(init-zundoko)
+```
+```(zundoko t)```するとキヨシチェックしてくれます。
+```(zundoko nil)```すれば画面出力はなくなるので、たとえば初心者の勉強用に、
+「この関数を10,000回実行した際に\キヨシ/する確立を求めよ」みたいな課題にきっとつかえるだろう
+という希望を少なくとも書いてる時点ではもっています。:)
+
+#Lispっぽくない
+ごめんね、一生懸命ズンドコするからゆるして><
+