COMP 105 type inference test results sorted by earnings

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:

The better your tests are at getting other people's solutions to fail, the more francs you earn. Each solution distributes the same number of francs, but the francs go only to tests that make it fail. A test that exposes a fault in a high-quality solution earns lots of francs!

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 AntApeAspAukBatBeeBoaCodCowCubDoeDogEelEftElkEmuEweFoxGnuHenHogOx
Boa (test 1) 180.44 (define f (x) (let ((g (lambda (x) (f x)))) (g f)))       3.03.97.07.01.0  31.5        1.063.063.0        
Fox (test 2) 96.48 (lambda (x) (letrec ((f (lambda (a) (cons (g a) '()))) (g (lambda (b) (cons (f b) '())))) (f x))) 63.05.710.53.0  7.0    1.05.2          1.0          
Fox (test 3) 81.23 (if #t (begin) #f)   5.710.5          1.0    31.5      1.0        31.5
Bee (test 2) 81.23 (begin)   5.710.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.03.9  31.57.01.05.2        21.01.0          
Boa (test 2) 71.94 (define g (x) (let ((a (+ x 1)) (b (and x #t))) x))       3.03.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.53.03.97.0    1.05.2    31.5    1.0          
Eel (test 1) 47.44 (lambda (x) (let ((b (+ x 1))) (and (= b 1) x)))       3.03.9    7.01.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.03.9  31.5  1.05.2          1.0            
Ant (test 1) 40.44 (letrec ((func (lambda (a b num) (if a b (+ 1 num))))) func)     3.03.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.01.0            
Eel (test 3) 26.94 (lambda (x) (begin (+ x 1) (if x 0 1)))         3.9      1.0        21.01.0            
Elk (test 2) 26.44 (define f (x) (if x (car x) (f x)))     10.53.03.97.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.01.05.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.01.05.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.01.05.2          1.0          
Auk (test 3) 23.44 (define newimpossible (f b) (if b (f b) f))     10.53.97.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.01.05.2          1.0            
Elk (test 1) 14.19 (define f (x) (if #t (car x) (f x)))       3.03.9      1.05.2        1.0            
Hen (test 2) 12.98 (letrec ((f (lambda (x) (g))) (g (lambda (x) (f)))) (o g f))   5.7            1.05.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.73.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.01.0            1.0            
Boa (test 3) 9.00 (define h (x) (letrec ((y z) (z (+ y 1))) (and y x)))             7.01.0            1.0            
Asp (test 1) 8.94 (lambda (l) (if (car l) '() '()))     3.03.9      1.0            1.0            
Auk (test 1) 7.25 (val win (lambda (x) (letrec ((b (lambda (y) (+ y 1)))) (b x))))               1.05.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                        
Back to the COMP 105 home page.