式構成および表形式の使い方
- 式構成:正誤分岐または繰り返し
- 対応づけ(各行毎に1つ選択):正誤分岐または繰り返し
- 対応づけ(各行毎に複数選択可):正誤分岐または繰り返し
- 対応づけ(各行毎に1つ選択):正誤分岐または繰り返し
- 対応づけ(各行に対応する正解を1つ選択):全て正解するまで繰り返し
(OPTIONS nil) (OPTIONS2 nil) (GO nil) (PASS nil) (CORRECT nil) (FB nil) (LIMIT 0) (COUNT 0) (TIME 0) (N 0)
(COMB-1
((*prog
(t ((OPTIONS = ("式=" ("選択肢1" "選択肢2" "選択肢3") "×" ("選択肢A" "選択肢B" "選択肢C") "+定数")) ;ここから
(GO = (ID1 ID2)) ;ここまで(繰り返しの時は、(ID1 self))
(CORRECT = (("選択肢1" "選択肢A") ("選択肢3" "選択肢C")))
(FB = ("正解の時" "不正解の時" "不正解の時2")) )) ;ここまで
((_FROM != self) ((COUNT = 1)))
)
"メッセージ" <BR> ;ここも変更
)
(COMB $OPTIONS)
$GO
((t ((FB-KARI = $FB)(L = (*LEN $FB))(COUNT += 1)(GO-KARI = $GO)(GO = (*LAST $GO))
(OPT-KARI = (*APPLY *LIST $OPTIONS *STRINGP $OPTIONS)) ;STRINGを部分をリストに
(OPT-KARI = (*APPLY *BUTFIRST $OPT-KARI *STRINGP $OPTIONS)) ;STRINGをnilに
(OPT-KARI -<< nil)(OPTIONS = (*MAPPING (1 2) (*NTHS $_SW $OPT-KARI))))) ;選択肢群だけにする
((FB != nil)(OPTIONS {{ $CORRECT) ((FB = (*FIRST $FB-KARI))))
((FB != nil)(OPTIONS !{{ $CORRECT) ((FB = (*LAST $FB-KARI))))
((FB != nil)(OPTIONS !{{ $CORRECT)(COUNT <= $L) ((FB = (*NTHS $COUNT $FB-KARI))))
((FB = nil) ((FB = "")))
((OPTIONS {{ $CORRECT) ((GO = (*FIRST $GO-KARI))(PASS <- $_NOW)))
)
( ((OPTIONS {{ $CORRECT) ("正解です。" <BR> $FB <BR>))
(t ("間違いです。" <BR> $FB <BR>)) )
)
(MAP-1
((*prog
(t ((OPTIONS = ("選択肢1" "選択肢2" "選択肢3")) ;ここから
(OPTIONS2 = ("質問A" "質問B" "質問C"))
(GO = (ID1 ID2)) ;ここまで(繰り返しの時は、(ID1 self))
(CORRECT = ("選択肢1" "選択肢2" "選択肢3"))
(FB = ("正解の時" "不正解の時" "不正解の時2")) )) ;ここまで
((_FROM != self) ((COUNT = 1)))
)
"メッセージ" <BR> ;ここも変更
)
(MAP $OPTIONS $OPTIONS2)
$GO
((t ((FB-KARI = $FB)(L = (*LEN $FB))(COUNT += 1)(GO-KARI = $GO)(GO = (*LAST $GO))
(OPTIONS = (*NTHS $_SW $OPTIONS))))
((FB != nil)(OPTIONS = $CORRECT) ((FB = (*FIRST $FB-KARI))))
((FB != nil)(OPTIONS != $CORRECT) ((FB = (*LAST $FB-KARI))))
((FB != nil)(OPTIONS != $CORRECT)(COUNT <= $L) ((FB = (*NTHS $COUNT $FB-KARI))))
((FB = nil) ((FB = "")))
((OPTIONS = $CORRECT) ((GO = (*FIRST $GO-KARI))(PASS <- $_NOW)))
)
( ((OPTIONS = $CORRECT) ("正解です。" <BR> $FB <BR>))
(t ("間違いです。" <BR> $FB <BR>)) )
)
(MAP-2
((*prog
(t ((OPTIONS = ("選択肢1" "選択肢2" "選択肢3")) ;ここから
(OPTIONS2 = ("質問A" "質問B" "質問C"))
(GO = (ID1 ID2)) ;ここまで(繰り返しの時は、(ID1 self))
(CORRECT = ("選択肢1" "選択肢2" "選択肢3"))
(FB = ("正解の時" "不正解の時" "不正解の時2")) )) ;ここまで
((_FROM != self) ((COUNT = 1)))
)
"メッセージ" <BR> ;ここも変更
)
(VMAP $OPTIONS2 $OPTIONS)
$GO
((t ((FB-KARI = $FB)(L = (*LEN $FB))(COUNT += 1)(GO-KARI = $GO)(GO = (*LAST $GO))
(OPTIONS = (*NTHS $_SW $OPTIONS))))
((FB != nil)(OPTIONS = $CORRECT) ((FB = (*FIRST $FB-KARI))))
((FB != nil)(OPTIONS != $CORRECT) ((FB = (*LAST $FB-KARI))))
((FB != nil)(OPTIONS != $CORRECT)(COUNT <= $L) ((FB = (*NTHS $COUNT $FB-KARI))))
((FB = nil) ((FB = "")))
((OPTIONS = $CORRECT) ((GO = (*FIRST $GO-KARI))(PASS <- $_NOW)))
)
( ((OPTIONS = $CORRECT) ("正解です。" <BR> $FB <BR>))
(t ("間違いです。" <BR> $FB <BR>)) )
)
;別のMAPの使い方
(ID3-2
((*prog
(t ((GO = ID1) ;ここから
(OPTIONS = ("黒が好き" "日曜日が好き" "ステーキが好き" "トカゲが好き" "遊びが好き"))
(COLS = ("あてはまる" "ややあてはまる" "ややあてはまらない" "あてはまらない"))
(POSITIVE = (2 3 5)) )) ;ここまで
)
"作業1です。" <BR> "次の質問に4段階のいずれかで回答してください。"
)
(MAP $COLS $OPTIONS)
$GO
(
(t ((NEGATIVE = (*DELETE-LIST $POSITIVE (*NUMLIST (*LEN $OPTIONS))))
(ANSWER = (*- (*SUM (*NTHS $POSITIVE $_SW)) (*SUM (*NTHS $NEGATIVE $_SW))))
(ANSWER += (** (*LEN $NEGATIVE) (*+ 1 (*LEN $COLS))))
(PASS <- $_NOW) ))
)
( (t ("あなたの▼▼度は、" $ANSWER "点です。")) )
)
(ID3-3
((*prog
(t ((GO = ID1) ;ここから
(OPTIONS = ("average" "sum" "countif" "rank" "index"))
(COLS = ("平均" "合計" "条件別度数" "順位" "配列要素")) ;ここまで
(ANSWER = (*MAPPING (1 2) (*CONC $OPTIONS $COLS)))
;以下の2行は並べ替えのため
(L = (*LEN $OPTIONS)) (OPTIONS = (*NTHS (*RANDOM $L $L) $OPTIONS))
(L = (*LEN $COLS)) (COLS = (*NTHS (*RANDOM $L $L) $COLS)) ))
;上の2行は並べ替えのため
)
"作業2です。" <BR> "行の項目に対応する列の適切な項目を選びなさい。"
)
(MAP $COLS $OPTIONS)
(((N = 0) $GO) (t self))
(
(t ((X = (*NTHS $_SW $COLS)) ;行項目に対して選択された列項目の文字列
(Y = (*MAPPING (1 2) (*CONC $OPTIONS $X))) ;行項目と列項目をつなぐ
(MIX = (*MERGE ($Y $ANSWER))) ;正解と回答の和集合を求める
(N = (*- (*LEN $MIX) (*LEN $OPTIONS))))) ;間違った項目の個数(L)
((N = 0) ((PASS <- $_NOW)))
((N = 0) ((GO = (*FIRST $STATES)) (STATES -< $GO)))
)
( ((N = 0) "正解です。") (t ($N "個の間違いがあります。")) )
)