(clear)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Ãëîáàëüíûå ïåðåìåííûå;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defglobal ?*all-in-all-questions* = 10)
(defglobal ?*right-answered-questions* = 0)
(defglobal ?*remained-questions* = 10)
(defglobal ?*mark-coefficient* = 0)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::;;;;;;;Ôóíêöèÿ îïðîñà;;;;;;;;;:::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(deffunction ask (?question $?allowed)
(printout t ?question ?allowed)
(bind ?answer (read))
?answer
)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;Ôóíêöèÿ âûáîðà èç ïðåäîïðåäåëåííûõ çíà÷åíèé;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(deffunction ask-allowed (?question $?allowed)
(bind ?answer (ask ?question))
(while (not (member ?answer $?allowed) )
do
(printout t "Ïîâòîðèòå ââîä, ïîæàëóéñòà:" crlf)
(bind ?answer (ask ?question))
)
?answer
)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Ïðèíÿòèå ðåøåíèÿ î ïðåæäåâðåìåííîì çàâåðøåíèè;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(deffunction need-early-ending()
(bind ?*remained-questions* (- ?*remained-questions* 1))
(
if (>= (/ ?*right-answered-questions* ?*all-in-all-questions*) ?*mark-coefficient*)
then
(assert(early-success))
else
(
if (< (/ (+ ?*right-answered-questions* ?*remained-questions*) ?*all-in-all-questions*) ?*mark-coefficient*)
then
(assert(early-failure))
else
(return FALSE)
)
)
(return TRUE)
)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Âûáðàòü îöåíêó;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defrule AskMark
(initial-fact)
=>
(
switch
(ask-allowed
(str-cat
(format nil "%s%n" "Íà êàêóþ îöåíêó âû ïðåòåíäóåòå?")
(format nil "%s%n" "1 - Îòëè÷íî")
(format nil "%s%n" "2 - Õîðîøî")
(format nil "%s%n" "3 - Óäîâëåòâîðèòåëüíî")
(format nil "%s%n" "4 - Íåóäîâëåòâîðèòåëüíî")
)
1 2 3 4)
(case 1 then (assert(need-test)) (bind ?*mark-coefficient* 0.85))
(case 2 then (assert(need-test)) (bind ?*mark-coefficient* 0.70))
(case 3 then (assert(need-test)) (bind ?*mark-coefficient* 0.55))
(case 4 then (assert(early-success)))
(default none)
)
)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defrule EarlyFailure
(early-failure)
=>
(printout t "Ðàííåå çàâåðøåíèå òåñòèðîâàíèÿ. Âû íå ïîäòâåðäèëè ñâîé óðîâåíü çíàíèé" crlf)
(halt)
)
(defrule EarlySuccess
(early-success)
=>
(printout t "Ðàííåå çàâåðøåíèå òåñòèðîâàíèÿ. Âû ïîäòâåðäèëè ñâîé óðîâåíü çíàíèé" crlf)
(halt)
)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defrule FirstQuestion
(need-test)
=>
(
if (eq
(ask-allowed
(str-cat
(format nil "%s%n" "1. Ñêîëüêî øàðèêîâ äëÿ ãîëüôà ïîìåñòèòñÿ â øêîëüíûé àâòîáóñ?")
(format nil "%s%n" "1 - Ìèëëèîí")
(format nil "%s%n" "2 - Ïÿòñîò òûñÿ÷")
(format nil "%s%n" "3 - Ñòî òûñÿ÷")
)
1 2 3)
2)
then
(bind ?*right-answered-questions* (+ ?*right-answered-questions* 1))
)
(
if(not (need-early-ending))
then
(assert(first-question-done))
)
)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defrule SecondQuestion
(first-question-done)
=>
(
if (eq
(ask-allowed
(str-cat
(format nil "%s%n" "2. Çà êàêóþ ñóììó äåíåã âû ïîìîåòå âñå îêíà â Ñèýòëå?")
(format nil "%s%n" "1 - Íå áóäó ìûòü")
(format nil "%s%n" "2 - 10$ çà îêíî")
(format nil "%s%n" "3 - Çà ìèëëèîí äîëëàðîâ")
)
1 2 3)
2)
then
(bind ?*right-answered-questions* (+ ?*right-answered-questions* 1))
)
(
if(not (need-early-ending))
then
(assert(second-question-done))
)
)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defrule ThridQuestion
(second-question-done)
=>
(
if (eq
(ask-allowed
(str-cat
(format nil "%s%n" "3. Ñêîëüêî íàñòðîéùèêîâ ïèàíèíî âî âñåì ìèðå?")
(format nil "%s%n" "1 - Íå çíàþ")
(format nil "%s%n" "2 - Îäèí äëÿ êàæäûõ 40 ïèàíèíî")
(format nil "%s%n" "3 - Ñêîëüêî ïèàíèíî, ñòîëüêî è íàñòðîéùèêîâ")
)
1 2 3)
2)
then
(bind ?*right-answered-questions* (+ ?*right-answered-questions* 1))
)
(
if(not (need-early-ending))
then
(assert(third-question-done))
)
)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defrule FourthQuestion
(third-question-done)
=>
(
if (eq
(ask-allowed
(str-cat
(format nil "%s%n" "4. Ïî÷åìó êðûøêà ëþêà êðóãëàÿ?")
(format nil "%s%n" "1 - Ìåíüøå ðàñõîäóåòñÿ ìàòåðèàëà")
(format nil "%s%n" "2 - ×òîáû îíà íå ìîãëà óïàñòü âíóòðü ëþêà ïðè åå ìîíòàæå èëè äåìîíòàæå")
(format nil "%s%n" "3 - Ñëîæíî ïîðàíèòüñÿ îá íåå ïðè òðàíñïîðòèðîâêå")
)
1 2 3)
2)
then
(bind ?*right-answered-questions* (+ ?*right-answered-questions* 1))
)
(
if(not (need-early-ending))
then
(assert(fourth-question-done))
)
)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defrule FifthQuestion
(fourth-question-done)
=>
(
if (eq
(ask-allowed
(str-cat
(format nil "%s%n" "5. Ñêîëüêî ðàç çà ñóòêè ñòðåëêè ÷àñîâ ñîâïàäàþò â îäíîì ïîëîæåíèè?")
(format nil "%s%n" "1 - 24 ðàçà")
(format nil "%s%n" "2 - 22 ðàçà")
(format nil "%s%n" "3 - 20 ðàç")
)
1 2 3)
2)
then
(bind ?*right-answered-questions* (+ ?*right-answered-questions* 1))
)
(
if(not (need-early-ending))
then
(assert(fifth-question-done))
)
)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defrule SixthQuestion
(fifth-question-done)
=>
(
if (eq
(ask-allowed
(str-cat
(format nil "%s%n" "6. Ñêîëüêî êîðîâ â Êàíàäå?")
(format nil "%s%n" "1 - Íå çíàþ")
(format nil "%s%n" "2 - Ïðèìåðíî ñòîëüêî æå, ñêîëüêî è â ÑØÀ")
(format nil "%s%n" "3 - Áîëüøå, ÷åì â Ðîññèè")
(format nil "%s%n" "4 - Â Êàíàäå íåò êîðîâ")
)
1 2 3 4)
2)
then
(bind ?*right-answered-questions* (+ ?*right-answered-questions* 1))
)
(
if(not (need-early-ending))
then
(assert(sixth-question-done))
)
)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defrule SeventhQuestion
(sixth-question-done)
=>
(
if (eq
(ask-allowed
(str-cat
(format nil "%s%n" "7. Çà÷åì íóæåí âèðòóàëüíûé äåñòðóêòîð?")
(format nil "%s%n" "1 - Îí íå íóæåí, ïî áîëüøîìó ñ÷åòó")
(format nil "%s%n" "2 - Ïîïðîáóé îáîéòèñü áåç íåãî")
(format nil "%s%n" "3 - Âèðòóàëüíûõ äåñòðóêòîðîâ íå ñóùåñòâóåò")
)
1 2 3)
2)
then
(bind ?*right-answered-questions* (+ ?*right-answered-questions* 1))
)
(
if(not (need-early-ending))
then
(assert(seventh-question-done))
)
)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defrule EighthQuestion
(seventh-question-done)
=>
(
if (eq
(ask-allowed
(str-cat
(format nil "%s%n" "8. Îáúÿñíèòå çíà÷åíèå âûðàæåíèÿ Dead Beef")
(format nil "%s%n" "1 - Ìåðòâîå ìÿñî")
(format nil "%s%n" "2 - DEADBEEF - çíà÷åíèå, èñïîëüçîâàâøååñÿ äëÿ äåáàããèíãà âî âðåìåíà áîëüøèõ ìåéíôðåéìîâ")
)
1 2)
2)
then
(bind ?*right-answered-questions* (+ ?*right-answered-questions* 1))
)
(
if(not (need-early-ending))
then
(assert(eighth-question-done))
)
)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defrule NinthQuestion
(eighth-question-done)
=>
(
if (eq
(ask-allowed
(str-cat
(format nil "%s%n" "9. Êàê áû âû ñïðàâèëèñü ñ ãîëîäîì è íèùåòîé â ìèðå?")
(format nil "%s%n" "1 - Íè÷åãî áû íå äåëàë")
(format nil "%s%n" "2 - Íàêîðìèë áû ãîëîäíûõ áåäíûìè (çà áèîòîïëèâîì áóäóùåå)")
(format nil "%s%n" "3 - Ðàçäàë áû êàæäîìó ïî $100000")
)
1 2 3)
2)
then
(bind ?*right-answered-questions* (+ ?*right-answered-questions* 1))
)
(
if(not (need-early-ending))
then
(assert(ninth-question-done))
)
)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defrule TenthQuestion
(ninth-question-done)
=>
(
if (eq
(ask-allowed
(str-cat
(format nil "%s%n" "10. Êàê áû âû çàñóíóëè ñëîíà â õîëîäèëüíèê?")
(format nil "%s%n" "1 - ß íå ñòàë áû ýòîãî äåëàòü")
(format nil "%s%n" "2 - Ïî ÷àñòÿì")
(format nil "%s%n" "3 - Êóïèë áû áîëüøîé õîëîäèëüíèê")
)
1 2 3)
2)
then
(bind ?*right-answered-questions* (+ ?*right-answered-questions* 1))
)
(assert(all-questions-done))
)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defrule AllQuestionsDone
(all-questions-done)
=>
(
if (>= (/ ?*right-answered-questions* ?*all-in-all-questions*) ?*mark-coefficient*)
then
(printout t "Âû ïîäòâåðäèëè ñâîé óðîâåíü çíàíèé" crlf)
else
(printout t "Âû íå ïîäòâåðäèëè ñâîé óðîâåíü çíàíèé" crlf)
)
(halt)
)