我将如何在 Racket 中创建已回答的答案与正确答案函数
How would I create a answered answer vs correct answer function in Racket
clicker-results
使用名为 answers
的 ClickerResponse 列表列表。
该函数根据给定的答案以百分比形式生成答题器等级。 Clicker 等级确定如下。
• 如果学生的答案与正确答案相符,学生将获得 2 分
• 如果学生的答案与正确答案不符,学生将获得 1 分
• 如果学生没有提供“NA”的答案,学生将获得 0 分
到目前为止我有什么。
(define (clicker-results grades)
(lambda (s count)
(+ count
(cond
[(empty? grades) 0]
[(equal? (first (first grades)) (first (rest (first grades)))) 2]
[(not (equal? (first (first grades)) (first (rest (first grades))))) 1]
[else 0]))))
虽然我没有得到输出。
示例:
(clicker-results (list (list 'a 'a))) ⇒ 100
(clicker-results (list (list 'a 'a) (list 'NA 'b)
(list 'c 'b) (list 'd 'e))) ⇒ 50
我看到您仍在为递归而苦苦挣扎 :( lambda
里面没有任何东西,根本与正确答案无关。您是否看过模板,了解如何构建递归解决方案?
你在哪里调用递归?以及如何将答案从分数转换为百分比?
这更像,注意你必须显式处理 'NA
情况,最好有一个单独的辅助程序来计算百分比:
(define clicker-results
(lambda (answers)
(* 100.0 (/ (clicker-points answers) (* 2 (length answers))))))
(define clicker-points
(lambda (answers)
(cond [(empty? answers) 0]
[(equal? (first (first answers)) 'NA)
(clicker-points (rest answers))]
[(equal? (first (first answers)) (first (rest (first answers))))
(+ 2 (clicker-points (rest answers)))]
[else (+ 1 (clicker-points (rest answers)))])))
结果将是:
(clicker-results (list (list 'a 'a)))
=> 100
(clicker-results (list (list 'a 'a) (list 'NA 'b) (list 'c 'b) (list 'd 'e)))
=> 50
clicker-results
使用名为 answers
的 ClickerResponse 列表列表。
该函数根据给定的答案以百分比形式生成答题器等级。 Clicker 等级确定如下。
• 如果学生的答案与正确答案相符,学生将获得 2 分
• 如果学生的答案与正确答案不符,学生将获得 1 分
• 如果学生没有提供“NA”的答案,学生将获得 0 分
到目前为止我有什么。
(define (clicker-results grades)
(lambda (s count)
(+ count
(cond
[(empty? grades) 0]
[(equal? (first (first grades)) (first (rest (first grades)))) 2]
[(not (equal? (first (first grades)) (first (rest (first grades))))) 1]
[else 0]))))
虽然我没有得到输出。
示例:
(clicker-results (list (list 'a 'a))) ⇒ 100
(clicker-results (list (list 'a 'a) (list 'NA 'b)
(list 'c 'b) (list 'd 'e))) ⇒ 50
我看到您仍在为递归而苦苦挣扎 :( lambda
里面没有任何东西,根本与正确答案无关。您是否看过模板,了解如何构建递归解决方案?
你在哪里调用递归?以及如何将答案从分数转换为百分比?
这更像,注意你必须显式处理 'NA
情况,最好有一个单独的辅助程序来计算百分比:
(define clicker-results
(lambda (answers)
(* 100.0 (/ (clicker-points answers) (* 2 (length answers))))))
(define clicker-points
(lambda (answers)
(cond [(empty? answers) 0]
[(equal? (first (first answers)) 'NA)
(clicker-points (rest answers))]
[(equal? (first (first answers)) (first (rest (first answers))))
(+ 2 (clicker-points (rest answers)))]
[else (+ 1 (clicker-points (rest answers)))])))
结果将是:
(clicker-results (list (list 'a 'a)))
=> 100
(clicker-results (list (list 'a 'a) (list 'NA 'b) (list 'c 'b) (list 'd 'e)))
=> 50