게시판 인덱스

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

5-1번, 허프만 코드만큼의 비트수인지 확인해주는 테스터입니다.

 
이 게시판은 잠겼으므로 글을 올리거나, 답변을 하거나 수정을 할 수 없습니다   이 주제는 잠겼으므로 답변을 하거나 수정을 할 수 없습니다     게시판 인덱스 -> 4190.210 Principles of Programming (Fall 2011)
이전 주제 보기 :: 다음 주제 보기  
글쓴이 메시지
방정호



가입: 2011년 9월 19일
올린 글: 40

올리기올려짐: 2011년10월28일 5:50    주제: 5-1번, 허프만 코드만큼의 비트수인지 확인해주는 테스터입니다. 인용과 함께 답변

input 넣고, 이 input에 있는 빈도와 결과로 나온 코드 개수를 곱하고 전부 다 더해서
총 필요한 비트수를 비교하는 프로그램입니다.
테스트셋을 돌려보고, 허프만 코드만큼의 비트수만큼인지 확인합니다.
(사실 밑에 테스트셋에 optTotalCodeLen 으로 넣은 값들은 제 프로그램으로 나온 값입니다. ㅎㅎ;;;;
"허프만 코드만큼 효율적입니다." 라는 멘트 뒤에 음수가 나온다면,
더 적은 비트수로 인코딩 하실 수 있으시다는 건데, 그럼 제 프로그램이 잘못된 거네요 ㅎ;;
혹시 음수가 뜨신 분들은 알려주시면 감사하겠습니다. ^^;; )

코드:
 ; Tester
(define (test input optTotalCodeLen)
  (define (getLen str output)
    (if (equal? str (car (car output))) (- (length (car output)) 1) (getLen str (cdr output))))
  (define (getTotal ip op)
    (if (null? ip) 0 (+ (* (cdr (car ip)) (getLen (car (car ip)) op)) (getTotal (cdr ip) op))))
  (define sorted (sort input (lambda (x y) (< (cdr x) (cdr y)))))
  (define totalCodeLen (getTotal sorted (vlencode sorted)))
 
  (if (<= totalCodeLen optTotalCodeLen)
      (begin (display "허프만 코드만큼 효율적입니다. ")
             (display (- totalCodeLen optTotalCodeLen))
             (newline)
             )
      (begin (display "허프만 코드보다 ")
             (display (- totalCodeLen optTotalCodeLen))
             (display " 만큼 더 많은 코드가 필요하네요.")
             (newline)
             (display sorted)
             (newline)
             (display (vlencode sorted))
             (newline)
             )
      )
  )


코드:
(test (list (cons "w1" 61) (cons "w2" 44) (cons "w3" 93) (cons "w4" 36) (cons "w5" 38)) 618)

(test (list (cons "w1" 11) (cons "w2" 99) (cons "w3" 10) (cons "w4" 100) (cons "w5" 81) (cons "w6" 70) (cons "w7" 42) (cons "w8" 62) (cons "w9" 15) (cons "w10" 41)) 1627)

(test (list (cons "w1" 71) (cons "w2" 88) (cons "w3" 21) (cons "w4" 84) (cons "w5" 92) (cons "w6" 44) (cons "w7" 75) (cons "w8" 31) (cons "w9" 11) (cons "w10" 18) (cons "w11" 49) (cons "w12" 82) (cons "w13" 16) (cons "w14" 36) (cons "w15" 74) (cons "w16" 5) (cons "w17" 3) (cons "w18" 2) (cons "w19" 42) (cons "w20" 91)) 3724)

(test (list (cons "w1" 18) (cons "w2" 8) (cons "w3" 56) (cons "w4" 89) (cons "w5" 42) (cons "w6" 27) (cons "w7" 55) (cons "w8" 63) (cons "w9" 69) (cons "w10" 20) (cons "w11" 42) (cons "w12" 89) (cons "w13" 16) (cons "w14" 83) (cons "w15" 1) (cons "w16" 69) (cons "w17" 65) (cons "w18" 90) (cons "w19" 38) (cons "w20" 40) (cons "w21" 8) (cons "w22" 49) (cons "w23" 87) (cons "w24" 93) (cons "w25" 13) (cons "w26" 82) (cons "w27" 67) (cons "w28" 57) (cons "w29" 83) (cons "w30" 10)) 7119)

(test (list (cons "w1" 39) (cons "w2" 86) (cons "w3" 91) (cons "w4" 53) (cons "w5" 99) (cons "w6" 66) (cons "w7" 89) (cons "w8" 78) (cons "w9" 18) (cons "w10" 99) (cons "w11" 5) (cons "w12" 87) (cons "w13" 41) (cons "w14" 82) (cons "w15" 88) (cons "w16" 42) (cons "w17" 5) (cons "w18" 68) (cons "w19" 19) (cons "w20" 100) (cons "w21" 95) (cons "w22" 36) (cons "w23" 58) (cons "w24" 72) (cons "w25" 42) (cons "w26" 19) (cons "w27" 76) (cons "w28" 78) (cons "w29" 23) (cons "w30" 94) (cons "w31" 30) (cons "w32" 38) (cons "w33" 33) (cons "w34" 92) (cons "w35" 34) (cons "w36" 39) (cons "w37" 31) (cons "w38" 83) (cons "w39" 34) (cons "w40" 71) (cons "w41" 59) (cons "w42" 85) (cons "w43" 74) (cons "w44" 39) (cons "w45" 86) (cons "w46" 45) (cons "w47" 82) (cons "w48" 5) (cons "w49" 15) (cons "w50" 66)) 15773)

(test (list (cons "w1" 114) (cons "w2" 5) (cons "w3" 197) (cons "w4" 46) (cons "w5" 145) (cons "w6" 1) (cons "w7" 3) (cons "w8" 83) (cons "w9" 69) (cons "w10" 166) (cons "w11" 8) (cons "w12" 150) (cons "w13" 81) (cons "w14" 11) (cons "w15" 129) (cons "w16" 184) (cons "w17" 169) (cons "w18" 41) (cons "w19" 66) (cons "w20" 141) (cons "w21" 8) (cons "w22" 168) (cons "w23" 69) (cons "w24" 94) (cons "w25" 31) (cons "w26" 22) (cons "w27" 178) (cons "w28" 3) (cons "w29" 109) (cons "w30" 174) (cons "w31" 32) (cons "w32" 48) (cons "w33" 119) (cons "w34" 93) (cons "w35" 1) (cons "w36" 78) (cons "w37" 167) (cons "w38" 26) (cons "w39" 138) (cons "w40" 30) (cons "w41" 120) (cons "w42" 38) (cons "w43" 167) (cons "w44" 183) (cons "w45" 150) (cons "w46" 92) (cons "w47" 143) (cons "w48" 149) (cons "w49" 67) (cons "w50" 49)) 24045)


방정호 가 2011년10월28일 20:56에 수정함, 총 3 번 수정됨
위로
사용자 정보 보기 비밀 메시지 보내기
shwlinux



가입: 2011년 9월 26일
올린 글: 39

올리기올려짐: 2011년10월28일 19:06    주제: 음수가 나왔네요..^^;; 인용과 함께 답변

허프만 코드만큼 효율적입니다. -346
허프만 코드만큼 효율적입니다. -1096
허프만 코드만큼 효율적입니다. -2789
허프만 코드만큼 효율적입니다. -5590
허프만 코드만큼 효율적입니다. -12884
허프만 코드만큼 효율적입니다. -19490


테스트 결과 이렇게 나왔습니다.

테스트셋 제공해 주셔서 감사합니다!
위로
사용자 정보 보기 비밀 메시지 보내기
김태훈10



가입: 2011년 10월 15일
올린 글: 21

올리기올려짐: 2011년10월28일 19:09    주제: 오오 감사합니다! 인용과 함께 답변

감사합니다!! 잘만드셧네요 ㅋㅋ
위로
사용자 정보 보기 비밀 메시지 보내기
shwlinux



가입: 2011년 9월 26일
올린 글: 39

올리기올려짐: 2011년10월28일 20:20    주제: 으어... 인용과 함께 답변

위에 음수 나왔다고 했는데

알고보니 출력형식 때문에 문제가 생긴거였네요

허프만 코드보다 25 만큼 더 많은 코드가 필요하네요.

허프만 코드보다 352 만큼 더 많은 코드가 필요하네요.

허프만 코드보다 2466 만큼 더 많은 코드가 필요하네요.

허프만 코드보다 9076 만큼 더 많은 코드가 필요하네요.

허프만 코드보다 37401 만큼 더 많은 코드가 필요하네요.


ㅠㅠㅠㅠㅠㅠ
위로
사용자 정보 보기 비밀 메시지 보내기
kernys



가입: 2011년 10월 26일
올린 글: 10

올리기올려짐: 2011년10월29일 15:37    주제: 인용과 함께 답변

허프만 코드만큼 효율적입니다. 0
허프만 코드만큼 효율적입니다. 0
허프만 코드만큼 효율적입니다. 0
허프만 코드만큼 효율적입니다. 0
허프만 코드만큼 효율적입니다. 0
허프만 코드만큼 효율적입니다. 0

하프만 코드 이론을 그대로 따르면 위와 같이 나오네요...
위로
사용자 정보 보기 비밀 메시지 보내기
이전 글 표시:   
이 게시판은 잠겼으므로 글을 올리거나, 답변을 하거나 수정을 할 수 없습니다   이 주제는 잠겼으므로 답변을 하거나 수정을 할 수 없습니다     게시판 인덱스 -> 4190.210 Principles of Programming (Fall 2011) 시간대: GMT + 9 시간(한국)
페이지 11

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


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