무냐의 개발일지
[OSSU] <UBCx HtC1x_How to Code> / 7a_Two One-Of Types (여러가지 경우의 수 생각해서 코드 짜기) 본문
OSSU_CS coursework
[OSSU] <UBCx HtC1x_How to Code> / 7a_Two One-Of Types (여러가지 경우의 수 생각해서 코드 짜기)
무냐코드 2024. 5. 6. 18:31
| Cross Product Table
경우의 수가 4개가 있고, 그에 대해 일일이 테스트해줘야 한다
일단, lsta가 empty인 경우를 하나로 묶을 수 있고
나머지 경우들 (a가 empty가 절대 아닌 경우) 를 다뤄준다!!
둘 다 list였기 때문에, 이 type comment 가 function의 생김새를 규정지어줬다
프로그램 디자이너의 큰 차이점 !!!
코드를 간결하게 만든다
| P2_ Pattern
너 증말 똑똑하구나!? 한 번에 풀었어!
listA의 pattern에 listB가 부합하면 true,
하나라도 틀리거나, listb가 짧으면 false
;;Pattern ListOf1String -> Boolean
;;determine whether ListOf1String matches the types in the pattern
;;if ListOf1String > Pattern, but the first part matches, then True
;;if ListOf1String < Pattern, false
(check-expect (pattern-match? empty empty) true)
(check-expect (pattern-match? empty (list "V")) true)
(check-expect (pattern-match? (list "A") empty) false)
(check-expect (pattern-match? (list "A") (list "V")) true)
(check-expect (pattern-match? (list "N") (list "6")) true)
(check-expect (pattern-match? (list "A" "N" "A") (list "V" "8" "D")) true)
(check-expect (pattern-match? (list "A" "N" "A") (list "V")) false) ;Pattern > ListOf1String
(check-expect (pattern-match? (list "A") (list "V" "8" "D")) true) ;Pattern < ListOf1String (and first part matches)
(check-expect (pattern-match? (list "A" "N" "A") (list "V" "D" "7")) false)
;(define (pattern-match? p lst) false) ;stub
(define (pattern-match? p lst)
(cond [(empty? p) true]
[(empty? lst) false] ;Pattern > ListOf1String
[(string=? "A" (first p)) (if (alphabetic? (first lst))
(pattern-match? (rest p) (rest lst))
false)]
[else
(if (numeric? (first lst))
(pattern-match? (rest p) (rest lst))
false)]))
네 가지 경우의 수로 나눴다
pattern 이 empty면 무조건 true
los가 empty면, 무조건 pattern이 더 길어지므로 false
pattern = A 인 경우, 알파벳일때는 다음걸로 진행, 아니면 false
pattern = N 인 경우, 숫자일때는 다음걸로 진행, 아니면 false
'OSSU_CS coursework' 카테고리의 다른 글
[OSSU] <UBCx HtC1x_How to Code> / 8a_Abstraction (중요!!!) 코드 간결하게 짜기 (0) | 2024.05.09 |
---|---|
[OSSU] <UBCx HtC1x_How to Code> / 7b_Local (encapsulation) (0) | 2024.05.07 |
[OSSU] <UBCx HtC1x_How to Code> / 6b_Mutual Reference (0) | 2024.05.05 |
[OSSU] <UBCx HtC1x_How to Code> / 4a_Self-Reference (Lists, recursion) (0) | 2024.04.30 |
[OSSU] <UBCx HtC1x_How to Code> / 3a_How to Design Worlds (0) | 2024.04.25 |