게시판 인덱스

 
 FAQFAQ   검색검색   멤버리스트멤버리스트   사용자 그룹사용자 그룹   사용자 등록하기사용자 등록하기 
 개인 정보개인 정보   비공개 메시지를 확인하려면 로그인하십시오비공개 메시지를 확인하려면 로그인하십시오   로그인로그인 

지난 테스트셋으로 Challenge 2 셀프그레이더를 만들어보았습니다.

 
글 쓰기   답변 달기     게시판 인덱스 -> 4190.210 Principles of Programming (Fall 2014)
이전 주제 보기 :: 다음 주제 보기  
글쓴이 메시지
이수현



가입: 2014년 9월 22일
올린 글: 4

올리기올려짐: 2014년11월22일 2:53    주제: 지난 테스트셋으로 Challenge 2 셀프그레이더를 만들어보았습니다. 인용과 함께 답변

다른 분들께서 올려주신 아래 링크의 테스트셋을 자동으로 채점해주는 그레이더입니다.
https://ropas.snu.ac.kr/phpbb/viewtopic.php?t=2382
눈으로 직접 확인하려니 귀찮아서 만들어봤어요.

아래 코드를 복사해서 실행하시면 됩니다.
위 링크의 테스트셋 중 일부는 이번 챌린지에 맞게 정렬이 되어있지 않아서, 정렬도 한 번 돌렸습니다.

*참고: 기존 그레이더에서는 (A . (1 2)) 이런식으로 나타내는데 (equal? (A . (1 2)) (A 1 2)) 는 #t입니다(모양만 다르지 동일합니다).

코드:

#lang racket

(require "common-grade.rkt")
(require "hw6-8-library.rkt")
(require "hw6-8.rkt")

(define condA
  (mustAnd (mustItems '(1 2))
           (mustHaveCommon (mustBeTheSame 'B)
                           (mustBeTheSame 'C))))

(define condB
  (mustHaveCommon (mustBeTheSame 'C)
                  (mustItems '(2 3))))

(define condC
  (mustAnd (mustItems '(1))
           (mustHaveExceptFor (mustBeTheSame 'A)
                              '(3))))

(output
 (lambda ()
   (equal? (shoppingList
            (list (cons 'A condA) (cons 'B condB) (cons 'C condC)))
           '((A . (1 2)) (B . (2)) (C . (1 2))))))


(output
 (lambda ()
   (equal? (shoppingList (list (cons 'A (mustBeTheSame 'B))
                    (cons 'B (mustBeTheSame 'A))
                    (cons 'C (mustBeTheSame 'B))))
           '((A) (B) (C)))))
   
(output
 (lambda ()
   (equal? (shoppingList (list (cons 'A (mustHaveExceptFor (mustBeTheSame 'B) (list 0)))
                    (cons 'B (mustHaveExceptFor (mustBeTheSame 'A) (list 1)))
                    (cons 'C (mustHaveExceptFor (mustBeTheSame 'B) (list 2)))))
           '((A) (B) (C)))))

(output
 (lambda ()
   (equal? (shoppingList (list (cons 'A (mustAnd (mustBeTheSame 'B) (mustBeTheSame 'C)))
                    (cons 'B (mustAnd (mustBeTheSame 'A) (mustBeTheSame 'C)))
                    (cons 'C (mustAnd (mustBeTheSame 'A) (mustBeTheSame 'B)))))
           '((A) (B) (C)))))

(output
 (lambda ()
   (equal? (shoppingList (list (cons 'A (mustItems (list 100)))
                    (cons 'B (mustItems (list 200)))
                    (cons 'C (mustItems (list 300)))))
           '((A 100) (B 200) (C 300)))))

(output
 (lambda ()
   (equal? (shoppingList (list (cons 'A (mustAnd (mustItems (list 1 2))
                                      (mustHaveCommon (mustBeTheSame 'B) (mustBeTheSame 'C))))
                    (cons 'B (mustHaveCommon (mustBeTheSame 'C) (mustItems (list 3 2))))
                    (cons 'C (mustAnd (mustItems (list 1))
                                      (mustHaveExceptFor (mustBeTheSame 'A) (list 3))))))
           '((A 1 2) (B 2) (C 1 2)))))

(output
 (lambda ()
   (equal? (shoppingList (list (cons 'Haley (mustBeTheSame 'Luke))
                    (cons 'Alex (mustItems (list 2 0 1)))
                    (cons 'Luke (mustBeTheSame 'Alex))))
           '((Alex 0 1 2) (Haley 0 1 2) (Luke 0 1 2)))))

(output
 (lambda ()
   (equal? (shoppingList (list (cons 'A (mustAnd
                              (mustHaveExceptFor (mustHaveCommon (mustBeTheSame 'B)
                                                                (mustBeTheSame 'C))
                                                (list 4))
                              (mustItems (list 1 2 3))))
                    (cons 'B (mustAnd
                              (mustHaveExceptFor (mustHaveCommon (mustBeTheSame 'C)
                                                                (mustBeTheSame 'D))
                                                (list 5))
                              (mustItems (list 2 3 4))))
                    (cons 'C (mustAnd
                              (mustHaveExceptFor (mustHaveCommon (mustBeTheSame 'A)
                                                                (mustBeTheSame 'E))
                                                (list 1))
                              (mustItems (list 3 4 5))))
                    (cons 'D (mustAnd
                              (mustHaveExceptFor (mustHaveCommon (mustBeTheSame 'E)
                                                                (mustBeTheSame 'B))
                                                (list 3))
                              (mustItems (list 1 4 5))))
                    (cons 'E (mustAnd
                              (mustHaveExceptFor (mustHaveCommon (mustBeTheSame 'B)
                                                                (mustBeTheSame 'A))
                                                (list 2 4))
                              (mustItems (list 1 3 5))))))
           '((A 1 2 3) (B 2 3 4) (C 3 4 5) (D 1 4 5) (E 1 3 5)))))

(output
 (lambda ()
   (equal? (shoppingList (list (cons 'X (mustAnd (mustItems (list 0 4 1))
                                      (mustHaveExceptFor (mustBeTheSame 'Z) (list 3 0 2))))
                    (cons 'Y (mustHaveExceptFor (mustItems (list 0 4 2 3)) (list 4 2 0)))
                    (cons 'Z (mustItems (list 0 2)))))
           '((X 0 1 4) (Y 3) (Z 0 2)))))

(output
 (lambda ()
   (equal? (shoppingList (list
               (cons 'A (mustBeTheSame 'G))
               (cons 'B (mustBeTheSame 'D))
               (cons 'C (mustItems (list 0 3 4 7 1 2)))
               (cons 'D (mustHaveExceptFor (mustBeTheSame 'C) (list 3 6 2 7 4 0 5)))
               (cons 'E (mustHaveCommon (mustBeTheSame 'A)
                                        (mustAnd (mustHaveExceptFor (mustItems (list 7 4 2 0 5)) (list 3 2 0 5 7 4))
                                                 (mustBeTheSame 'A))))
               (cons 'F (mustBeTheSame 'B))
               (cons 'G (mustHaveExceptFor (mustAnd (mustAnd (mustBeTheSame 'B)
                                                             (mustAnd (mustAnd (mustBeTheSame 'E) (mustBeTheSame 'E))
                                                                      (mustBeTheSame 'B)))
                                                    (mustBeTheSame 'H))
                                           (list 1 7 3 4 0 2)))
               (cons 'H (mustBeTheSame 'G))))
           '((A) (B 1) (C 0 1 2 3 4 7) (D 1) (E) (F 1) (G) (H)))))

(define v1
  (list
   (cons 'A (mustBeTheSame 'G))
   (cons 'B (mustAnd (mustBeTheSame 'D) (mustItems '(0 2 4 7 3 6))))
   (cons 'C (mustAnd (mustHaveCommon (mustBeTheSame 'A) (mustAnd (mustHaveExceptFor (mustHaveExceptFor (mustAnd (mustHaveCommon (mustAnd (mustAnd (mustItems '(3 4 8 5 2 7 6)) (mustHaveCommon (mustBeTheSame 'G) (mustItems '(0 1 3 6 8 7)))) (mustAnd (mustAnd (mustHaveCommon (mustHaveExceptFor (mustHaveCommon (mustAnd (mustBeTheSame 'E) (mustBeTheSame 'D)) (mustAnd (mustItems '(1 7 2 0 5 6 8)) (mustItems '(2 6 3 5 1)))) '(0 1 6 7 2 5 3)) (mustAnd (mustHaveCommon (mustBeTheSame 'D) (mustHaveExceptFor (mustItems '(8 1 5 0 7 4)) '(6 4 5 3 0 8))) (mustAnd (mustItems '(7 0 1 8 4)) (mustItems '(1 4 8 3 2 5 0))))) (mustItems '(0 8 7 2))) (mustBeTheSame 'H))) (mustItems '(0 1 5 6 3 2))) (mustBeTheSame 'A)) '(4 8 7 1 0 3)) '(8 7 6 1)) (mustBeTheSame 'F))) (mustAnd (mustBeTheSame 'A) (mustItems '(7 3 5 8 4 0)))))
   (cons 'D (mustItems '(2 6 0 5 3 1)))
   (cons 'E (mustAnd (mustItems '(2 1 7 5 8)) (mustHaveExceptFor (mustHaveExceptFor (mustAnd (mustAnd (mustAnd (mustAnd (mustHaveCommon (mustAnd (mustItems '(8 1 3 6 2 5 0)) (mustBeTheSame 'C)) (mustAnd (mustBeTheSame 'A) (mustBeTheSame 'D))) (mustHaveExceptFor (mustBeTheSame 'C) '(6 2 4 8 0 1 3))) (mustBeTheSame 'B)) (mustItems '(3 0 8 6 7 4 1))) (mustItems '(3 0 6 4 7 1))) '(2 7 6 4 5)) '(5 8 6 3 7 1))))
   (cons 'F (mustBeTheSame 'H))
   (cons 'G (mustItems '(6 1 8 5 0 3)))
   (cons 'H (mustBeTheSame 'G))))

(define v2
  (list
   (cons 'A (mustHaveExceptFor (mustBeTheSame 'O) '(5 1 3 4 6)))
   (cons 'B (mustHaveCommon (mustAnd (mustItems '(1 6 2)) (mustHaveCommon (mustItems '(2 5 1 6 3)) (mustAnd (mustHaveCommon (mustAnd (mustHaveExceptFor (mustBeTheSame 'L) '(4 2 1)) (mustItems '(1 4 5 3))) (mustHaveExceptFor (mustItems '(5 6 2 1 4)) '(5 6 3))) (mustBeTheSame 'G)))) (mustItems '(5 0 6 3))))
   (cons 'C (mustItems '(3 1 2 0)))
   (cons 'D (mustItems '(4 6 0 5)))
   (cons 'E (mustAnd (mustAnd (mustBeTheSame 'C) (mustBeTheSame 'B)) (mustAnd (mustItems '(4 3 0 2)) (mustBeTheSame 'I))))
   (cons 'F (mustBeTheSame 'D))
   (cons 'G (mustHaveCommon (mustAnd (mustHaveCommon (mustBeTheSame 'O) (mustAnd (mustAnd (mustItems '(0 5 3 2 4 6)) (mustItems '(3 4 2 6 0))) (mustBeTheSame 'O))) (mustItems '(6 4 0 1 2))) (mustAnd (mustBeTheSame 'I) (mustBeTheSame 'B))))
   (cons 'H (mustHaveExceptFor (mustBeTheSame 'C) '(5 4 3 0)))
   (cons 'I (mustItems '(4 1 0 2 3)))
   (cons 'J (mustBeTheSame 'H))
   (cons 'K (mustAnd (mustHaveCommon (mustBeTheSame 'F) (mustBeTheSame 'H)) (mustHaveCommon (mustBeTheSame 'J) (mustBeTheSame 'J))))
   (cons 'L (mustAnd (mustBeTheSame 'D) (mustHaveCommon (mustBeTheSame 'M) (mustAnd (mustAnd (mustAnd (mustAnd (mustItems '(4 6 2 1)) (mustBeTheSame 'G)) (mustAnd (mustAnd (mustItems '(6 4 1 0)) (mustHaveCommon (mustItems '(1 6 3 2 4 5)) (mustBeTheSame 'J))) (mustItems '(4 5 2 6)))) (mustAnd (mustAnd (mustHaveExceptFor (mustItems '(1 6 4 5)) '(0 3 2 5)) (mustBeTheSame 'A)) (mustBeTheSame 'N))) (mustAnd (mustItems '(4 3 1 5 2)) (mustHaveExceptFor (mustHaveExceptFor (mustHaveExceptFor (mustHaveExceptFor (mustAnd (mustAnd (mustHaveExceptFor (mustBeTheSame 'L) '(1 3 0 5 4)) (mustItems '(4 6 3 2))) (mustBeTheSame 'G)) '(4 0 3 1 6)) '(6 1 4 5 2)) '(0 1 2 6 4)) '(4 2 0 5)))))))
   (cons 'M (mustBeTheSame 'K))
   (cons 'N (mustBeTheSame 'N))
   (cons 'O (mustItems '(1 3 2 6 5)))
   (cons 'P (mustBeTheSame 'C))))

(define v3
  (list
   (cons 'A (mustAnd (mustAnd (mustBeTheSame 'H) (mustBeTheSame 'P)) (mustItems '(2 4 3 6))))
   (cons 'B (mustHaveCommon (mustBeTheSame 'B) (mustAnd (mustItems '(2 1 5 0 4)) (mustItems '(6 4 5 2 1)))))
   (cons 'C (mustItems '(1 4 5 6 2 0)))
   (cons 'D (mustBeTheSame 'J))
   (cons 'E (mustItems '(2 6 3 5)))
   (cons 'F (mustItems '(4 6 3 2 1 5)))
   (cons 'G (mustAnd (mustItems '(1 4 6 0)) (mustItems '(4 5 2 1 3 6))))
   (cons 'H (mustAnd (mustHaveCommon (mustHaveCommon (mustAnd (mustAnd (mustBeTheSame 'L) (mustAnd (mustAnd (mustBeTheSame 'K) (mustBeTheSame 'K)) (mustItems '(4 5 3 0)))) (mustHaveCommon (mustItems '(5 2 3 1)) (mustItems '(4 3 2 1)))) (mustAnd (mustAnd (mustHaveCommon (mustHaveCommon (mustItems '(4 3 0 6 1)) (mustHaveCommon (mustItems '(3 4 1 0 6)) (mustItems '(4 3 5 2 0 1)))) (mustBeTheSame 'E)) (mustBeTheSame 'D)) (mustItems '(5 1 2 3)))) (mustAnd (mustAnd (mustAnd (mustHaveCommon (mustAnd (mustItems '(2 0 3 4)) (mustItems '(6 2 5 1))) (mustBeTheSame 'J)) (mustAnd (mustHaveCommon (mustBeTheSame 'K) (mustBeTheSame 'A)) (mustHaveExceptFor (mustItems '(3 6 1 0)) '(5 1 3 0 2)))) (mustAnd (mustHaveCommon (mustBeTheSame 'F) (mustHaveExceptFor (mustHaveExceptFor (mustBeTheSame 'L) '(6 4 2 0 1)) '(4 3 6 0))) (mustAnd (mustHaveCommon (mustBeTheSame 'I) (mustAnd (mustItems '(2 4 6 1)) (mustHaveExceptFor (mustHaveExceptFor (mustAnd (mustHaveExceptFor (mustItems '(4 2 0 5 1)) '(3 5 4 1 0)) (mustAnd (mustHaveCommon (mustAnd (mustBeTheSame 'O) (mustHaveExceptFor (mustAnd (mustHaveExceptFor (mustHaveExceptFor (mustAnd (mustHaveExceptFor (mustAnd (mustItems '(6 3 5 2)) (mustBeTheSame 'P)) '(5 3 4 1 6)) (mustAnd (mustBeTheSame 'B) (mustHaveExceptFor (mustBeTheSame 'M) '(1 3 2 4 5)))) '(1 0 5 6 2)) '(6 2 3 1 4 5)) (mustItems '(6 2 4 3 1))) '(4 2 0 1 6))) (mustItems '(0 5 2 4))) (mustBeTheSame 'B))) '(2 4 5 6)) '(3 2 6 5)))) (mustItems '(2 1 0 4 6))))) (mustItems '(2 0 4 3)))) (mustAnd (mustItems '(0 6 5 1)) (mustItems '(2 5 4 3 0)))))
   (cons 'I (mustAnd (mustAnd (mustAnd (mustBeTheSame 'F) (mustItems '(3 5 0 6 4))) (mustHaveExceptFor (mustHaveCommon (mustBeTheSame 'O) (mustAnd (mustItems '(2 3 4 6 1)) (mustItems '(3 5 0 6)))) '(2 5 6 0 3 4))) (mustHaveExceptFor (mustItems '(4 3 1 2)) '(2 6 4 3 0))))
   (cons 'J (mustBeTheSame 'N))
   (cons 'K (mustHaveCommon (mustAnd (mustItems '(5 0 3 1)) (mustAnd (mustItems '(3 1 0)) (mustHaveExceptFor (mustItems '(1 4 3 2 6)) '(3 1 0 4)))) (mustAnd (mustBeTheSame 'B) (mustAnd (mustAnd (mustAnd (mustItems '(5 0 2 6)) (mustItems '(3 1 0 4))) (mustBeTheSame 'E)) (mustAnd (mustItems '(1 6 2 0 5)) (mustItems '(4 5 0 2 6)))))))
   (cons 'L (mustAnd (mustBeTheSame 'G) (mustHaveCommon (mustHaveCommon (mustItems '(1 2 5 3)) (mustBeTheSame 'G)) (mustAnd (mustBeTheSame 'A) (mustAnd (mustHaveCommon (mustAnd (mustAnd (mustBeTheSame 'A) (mustAnd (mustBeTheSame 'M) (mustItems '(4 0 1 5 6)))) (mustItems '(5 3 0 6 4))) (mustHaveExceptFor (mustHaveCommon (mustItems '(1 2 6 0 3 5)) (mustHaveExceptFor (mustItems '(3 4 2 1 6)) '(4 6 0 2 1))) '(5 2 1 4 6))) (mustBeTheSame 'L))))))
   (cons 'M (mustItems '(3 6 2 0)))
   (cons 'N (mustBeTheSame 'H))
   (cons 'O (mustItems '(0 5 1 4 6)))
   (cons 'P (mustAnd (mustItems '(2 1 4)) (mustHaveExceptFor (mustBeTheSame 'O) '(3 1 2 0))))))

(output
 (lambda ()
   (equal? (shoppingList v1)
           '((A 0 1 3 5 6 8)
             (B 0 1 2 3 4 5 6 7)
             (C 0 1 3 4 5 6 7 8)
             (D 0 1 2 3 5 6)
             (E 0 1 2 5 7 8)
             (F 0 1 3 5 6 8)
             (G 0 1 3 5 6 8)
             (H 0 1 3 5 6 8))
           )))

(output
 (lambda ()
   (equal? (shoppingList v2)
           '((A 2)
             (B 3 6)
             (C 0 1 2 3)
             (D 0 4 5 6)
             (E 0 1 2 3 4 6)
             (F 0 4 5 6)
             (G 0 1 2 3 4 6)
             (H 1 2)
             (I 0 1 2 3 4)
             (J 1 2)
             (K 1 2)
             (L 0 1 2 4 5 6)
             (M 1 2)
             (N)
             (O 1 2 3 5 6)
             (P 0 1 2 3))
           )))

(output
 (lambda ()
   (equal? (shoppingList v3)
           '((A 0 1 2 3 4 5 6)
             (B)
             (C 0 1 2 4 5 6)
             (D 0 1 2 3 4 5 6)
             (E 2 3 5 6)
             (F 1 2 3 4 5 6)
             (G 0 1 2 3 4 5 6)
             (H 0 1 2 3 4 5 6)
             (I 0 1 2 3 4 5 6)
             (J 0 1 2 3 4 5 6)
             (K 0 1 2 3 5 6)
             (L 0 1 2 3 4 5 6)
             (M 0 2 3 6)
             (N 0 1 2 3 4 5 6)
             (O 0 1 4 5 6)
             (P 1 2 4 5 6))
           )))
위로
사용자 정보 보기 비밀 메시지 보내기
송원욱



가입: 2014년 10월 3일
올린 글: 6

올리기올려짐: 2014년11월22일 18:47    주제: 감사합니다. 인용과 함께 답변

감사합니다.
모두 O 나오네요.
위로
사용자 정보 보기 비밀 메시지 보내기
이전 글 표시:   
글 쓰기   답변 달기     게시판 인덱스 -> 4190.210 Principles of Programming (Fall 2014) 시간대: GMT + 9 시간(한국)
페이지 11

 
건너뛰기:  
새로운 주제를 올릴 수 없습니다
답글을 올릴 수 없습니다
주제를 수정할 수 없습니다
올린 글을 삭제할 수 없습니다
투표를 할 수 없습니다


Powered by phpBB 2.0.21-7 (Debian) © 2001, 2005 phpBB Group
Translated by kss & drssay