You can view the same data sorted by test case.
A test case earns "failure francs" for each submitted solution that does not handle that test case correctly. Here is the algorithm for distributing failure francs:
In every case, the total payout per solution is equal to the total number of tests.
To avoid revealing any private information, each student is identified by a number chosen at random. You should have received your number by email.
The table below shows the number of "failure francs" earned by each test case (a row) from each solution (a column). An empty entry means the solution handled the test case correctly. A dash means that the type checker and the test case came from the same student—and you can't earn francs by making your own code fail.
Test | Earned | Test | Ant | Ape | Asp | Auk | Bat | Bee | Boa | Cod | Cow | Cub | Doe | Dog | Eel | Eft | Elk | Emu | Ewe | Fox | Gnu | Hen | Hog | Ox |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Boa (test 1) | 180.44 | (define f (x) (let ((g (lambda (x) (f x)))) (g f))) | 3.0 | 3.9 | 7.0 | — | 7.0 | 1.0 | 31.5 | 1.0 | 63.0 | 63.0 | ||||||||||||
Fox (test 2) | 96.48 | (lambda (x) (letrec ((f (lambda (a) (cons (g a) '()))) (g (lambda (b) (cons (f b) '())))) (f x))) | 63.0 | 5.7 | 10.5 | 3.0 | 7.0 | 1.0 | 5.2 | 1.0 | — | |||||||||||||
Fox (test 3) | 81.23 | (if #t (begin) #f) | 5.7 | 10.5 | 1.0 | 31.5 | 1.0 | — | 31.5 | |||||||||||||||
Bee (test 2) | 81.23 | (begin) | 5.7 | 10.5 | — | 1.0 | 31.5 | 1.0 | 31.5 | |||||||||||||||
Hen (test 1) | 79.41 | (letrec ((f (lambda (x) (+ x 1))) (g (lambda (y) (letrec ((z (lambda () (f y)))) (z))))) (o g f)) | 5.7 | 3.0 | 3.9 | 31.5 | 7.0 | 1.0 | 5.2 | 21.0 | 1.0 | — | ||||||||||||
Boa (test 2) | 71.94 | (define g (x) (let ((a (+ x 1)) (b (and x #t))) x)) | 3.0 | 3.9 | — | 1.0 | 1.0 | 63.0 | ||||||||||||||||
Hog (test 1) | 63.19 | (lambda (x xprime y z f) (if x (f y) (let ((app z) (foo x)) (lambda (any) (if any (app foo) (app xprime)))))) | 10.5 | 3.0 | 3.9 | 7.0 | 1.0 | 5.2 | 31.5 | 1.0 | — | |||||||||||||
Eel (test 1) | 47.44 | (lambda (x) (let ((b (+ x 1))) (and (= b 1) x))) | 3.0 | 3.9 | 7.0 | 1.0 | 31.5 | — | 1.0 | |||||||||||||||
Ape (test 1) | 45.69 | (val-rec test1 (lambda (y) (letrec ((z (lambda (a) (if (= 0 a) 0 (+ a ((o z test1) (- a 1))))))) (z y)))) | — | 3.0 | 3.9 | 31.5 | 1.0 | 5.2 | 1.0 | |||||||||||||||
Ant (test 1) | 40.44 | (letrec ((func (lambda (a b num) (if a b (+ 1 num))))) func) | — | 3.0 | 3.9 | 1.0 | 31.5 | 1.0 | ||||||||||||||||
Bee (test 1) | 26.94 | (lambda (x y z) (begin (if x y 1) (if x #f y))) | 3.9 | — | 1.0 | 21.0 | 1.0 | |||||||||||||||||
Eel (test 3) | 26.94 | (lambda (x) (begin (+ x 1) (if x 0 1))) | 3.9 | 1.0 | — | 21.0 | 1.0 | |||||||||||||||||
Elk (test 2) | 26.44 | (define f (x) (if x (car x) (f x))) | 10.5 | 3.0 | 3.9 | 7.0 | 1.0 | — | 1.0 | |||||||||||||||
Dog (test 1) | 23.91 | (define foobar (x) (letrec ((y (lambda (a) (z a))) (z (lambda (b) (+ 1 b)))) y)) | 5.7 | 3.9 | 7.0 | 1.0 | 5.2 | — | 1.0 | |||||||||||||||
Hog (test 2) | 23.91 | (letrec ((+ (lambda (x y) (and x y))) (foo (lambda (x y) (+ x y)))) (foo 1 2)) | 5.7 | 3.9 | 7.0 | 1.0 | 5.2 | 1.0 | — | |||||||||||||||
Ox (test 3) | 23.91 | (define id (x) (letrec ((y (lambda (w) (z w))) (z (lambda (q) q))) y)) | 5.7 | 3.9 | 7.0 | 1.0 | 5.2 | 1.0 | — | |||||||||||||||
Auk (test 3) | 23.44 | (define newimpossible (f b) (if b (f b) f)) | 10.5 | — | 3.9 | 7.0 | 1.0 | 1.0 | ||||||||||||||||
Bat (test 1) | 19.98 | (letrec ((x (lambda (y) y))(z (lambda (y) (x y)))) (z 3)) | 5.7 | — | 7.0 | 1.0 | 5.2 | 1.0 | ||||||||||||||||
Elk (test 1) | 14.19 | (define f (x) (if #t (car x) (f x))) | 3.0 | 3.9 | 1.0 | 5.2 | — | 1.0 | ||||||||||||||||
Hen (test 2) | 12.98 | (letrec ((f (lambda (x) (g))) (g (lambda (x) (f)))) (o g f)) | 5.7 | 1.0 | 5.2 | 1.0 | — | |||||||||||||||||
Gnu (test 3) | 12.00 | (letrec ((f (lambda (l) (cons f l)))) (f '())) | 3.0 | 7.0 | 1.0 | 1.0 | — | |||||||||||||||||
Doe (test 1) | 12.00 | (lambda (f) (f f)) | 3.0 | 7.0 | 1.0 | — | 1.0 | |||||||||||||||||
Cow (test 1) | 11.00 | (val-rec f (lambda (g) (g f))) | 3.0 | 7.0 | — | 1.0 | ||||||||||||||||||
Asp (test 2) | 10.73 | (letrec ((f (lambda (x) (+ 1 x))) (g (lambda (x) (f (not x))))) g) | 5.7 | — | 3.0 | 1.0 | 1.0 | |||||||||||||||||
Ewe (test 1) | 10.73 | (val bad1 (letrec ((o (lambda (n) (= n #t))) (p (lambda (n) (o (+ n 1))))) p)) | 5.7 | 3.0 | 1.0 | 1.0 | — | |||||||||||||||||
Ape (test 3) | 9.00 | (define test3 (x) (if (= 0 x) 0 (+ x (test3 o test3) (- x 1)))) | — | 7.0 | 1.0 | 1.0 | ||||||||||||||||||
Asp (test 3) | 9.00 | (let ((symnil (cdr (list1 'a))) (x 1)) (begin (cons x symnil))) | — | 7.0 | 1.0 | 1.0 | ||||||||||||||||||
Boa (test 3) | 9.00 | (define h (x) (letrec ((y z) (z (+ y 1))) (and y x))) | — | 7.0 | 1.0 | 1.0 | ||||||||||||||||||
Asp (test 1) | 8.94 | (lambda (l) (if (car l) '() '())) | — | 3.0 | 3.9 | 1.0 | 1.0 | |||||||||||||||||
Auk (test 1) | 7.25 | (val win (lambda (x) (letrec ((b (lambda (y) (+ y 1)))) (b x)))) | — | 1.0 | 5.2 | 1.0 | ||||||||||||||||||
Cow (test 2) | 6.25 | (cons (+ 1 2) '()) | — | 5.2 | 1.0 | |||||||||||||||||||
Cod (test 2) | 5.00 | (lambda (p) ((lambda (x y) (pair x y)) (fst p) (snd p))) | 3.0 | — | 1.0 | 1.0 | ||||||||||||||||||
Ewe (test 2) | 5.00 | (val bad2 (lambda (x y) (cons (fst y) x))) | 3.0 | 1.0 | 1.0 | — | ||||||||||||||||||
Bee (test 3) | 5.00 | (define f (x) (letrec ((foo (lambda (vs) (if (null? vs) (+ x 1) (foo vs))))) (if x (foo '(1 2 3)) (foo '(4 5 6))))) | 3.0 | — | 1.0 | 1.0 | ||||||||||||||||||
Ape (test 2) | 5.00 | (val-rec test2 (lambda (y) (letrec ((z (lambda (a) (if (= 0 a) 0 (+ a ((z o test2) (- a 1))))))) (z y)))) | — | 3.0 | 1.0 | 1.0 | ||||||||||||||||||
Cow (test 3) | 4.00 | (lambda (x y z) (cons (cons x y) z)) | 3.0 | — | 1.0 | |||||||||||||||||||
Fox (test 1) | 2.00 | (cons 5 '()) | 1.0 | 1.0 | — | |||||||||||||||||||
Ewe (test 3) | 2.00 | (val bad3 (lambda (x) (pair (snd x) (fst x)))) | 1.0 | 1.0 | — | |||||||||||||||||||
Gnu (test 1) | 2.00 | ((() ()) (() (1) ())) | 1.0 | 1.0 | — | |||||||||||||||||||
Gnu (test 2) | 2.00 | (cons (lambda () #t) (lambda () #t)) | 1.0 | 1.0 | — | |||||||||||||||||||
Ant (test 2) | 2.00 | (letrec ((func (lambda (a b num) (if a #t (+ 1 num))))) func) | — | 1.0 | 1.0 | |||||||||||||||||||
Hog (test 3) | 2.00 | (val a (lambda (a) (pair (cons a '(#t)) (cons a '(1))))) | 1.0 | 1.0 | — | |||||||||||||||||||
Ant (test 3) | 2.00 | (takewhile ((curry all?) 1) '(1 #t)) | — | 1.0 | 1.0 | |||||||||||||||||||
Ox (test 1) | 2.00 | (schfifty 5) | 1.0 | 1.0 | — | |||||||||||||||||||
Hen (test 3) | 2.00 | (letrec ((f (lambda (x y z) z)) (g (lambda (q r s) (q (f r))))) (g f '() #t)) | 1.0 | 1.0 | — | |||||||||||||||||||
Bat (test 2) | 2.00 | (let ((x 5)(weird (lambda (l y z) (cons x y)))) 9) | — | 1.0 | 1.0 | |||||||||||||||||||
Eft (test 2) | 2.00 | (define qsort (p?) (lambda (l) (letrec ( (sort (lambda (sorted unsorted) ; sorted is the sorted list (if (null? unsorted) ; unsorted is the unsorted list sorted (sort (cons (car unsorted) (sort sorted (filter ((curry p?) (car unsorted)) (cdr unsorted)))) (filter (o not ((uncurry p?) (car unsorted))) (cdr unsorted))))))) (sort '() l)))) | 1.0 | — | 1.0 | |||||||||||||||||||
Doe (test 3) | 2.00 | (() ((42))) | 1.0 | — | 1.0 | |||||||||||||||||||
Cub (test 3) | 2.00 | (begin (if (= 4 5) #t #f )) | 1.0 | — | 1.0 | |||||||||||||||||||
Doe (test 2) | 2.00 | (curry filter null?) | 1.0 | — | 1.0 | |||||||||||||||||||
Ox (test 2) | 2.00 | (cons '() 9001) | 1.0 | 1.0 | — | |||||||||||||||||||
Cub (test 2) | 2.00 | (val x (lambda (a b) (letrec ((b 3) (a #t)) (+ a b)))) | 1.0 | — | 1.0 | |||||||||||||||||||
Cod (test 3) | 2.00 | (lambda (p) ((lambda (x y) (pair (x y))) (fst p) (snd p))) | — | 1.0 | 1.0 | |||||||||||||||||||
Cub (test 1) | 2.00 | (fst '(2 4)) | 1.0 | — | 1.0 | |||||||||||||||||||
Cod (test 1) | 2.00 | (car 3) | — | 1.0 | 1.0 | |||||||||||||||||||
Dog (test 2) | 2.00 | (cons 1 #f) | 1.0 | — | 1.0 | |||||||||||||||||||
Auk (test 2) | 2.00 | (define foo (a b) (letrec ((d (+ a 4))(e (if b 2 a))) (d e))) | — | 1.0 | 1.0 | |||||||||||||||||||
Dog (test 3) | 2.00 | (5 five) | 1.0 | — | 1.0 | |||||||||||||||||||
Elk (test 3) | 2.00 | ((1) () (#t)) | 1.0 | — | 1.0 | |||||||||||||||||||
Bat (test 3) | 2.00 | (letrec ((x (lambda (y) (+ y y)))) (x #f)) | — | 1.0 | 1.0 | |||||||||||||||||||
Eft (test 3) | 2.00 | (define qsort (p?) (lambda (l) (letrec ( (sort (lambda (sorted unsorted) ; sorted is the sorted list (if (null? unsorted) ; unsorted is the unsorted list sorted (sort (cons (car unsorted) (sort sorted (filter ((curry p?) (car unsorted)) (cdr unsorted)))) (filter (o not ((curry p?) (car unsorted))) (cdr unsorted))))))) (sort '() l)))) | 1.0 | — | 1.0 | |||||||||||||||||||
Eft (test 1) | 2.00 | (if (< 1 2) 1 'fail) | 1.0 | — | 1.0 | |||||||||||||||||||
Eel (test 2) | 2.00 | (val qsort (lambda (lt) (letrec ((sort (lambda (xs tail) ; return elements of xs (sorted) followed by tail (if (null? xs) tail (let* ((pivot (car xs)) (rest (cdr xs)) (right? ((curry lt) pivot)) (left? (o not right?))) (sort (filter left? rest) (cons pivot (sort (filter right? rest) tail)))))))) (lambda (xs) (sort xs '()))))) | 1.0 | — | 1.0 | |||||||||||||||||||
Emu (test 2) | 1.00 | (+ #t #t) | 1.0 | — | ||||||||||||||||||||
Emu (test 1) | 1.00 | (val test (lambda (x) (lambda (y)))) | 1.0 | — | ||||||||||||||||||||
Emu (test 3) | 1.00 | (cons (lambda (x)) (lambda (y))) | 1.0 | — |