(단어 주파수 "안녕하세요 사람 안녕하세요") 내가이 오류가문자열의 단어 빈도를 반환하는 함수를 작성하십시오. 내 코드의 경우 문자열의 단어 빈도를 반환하는 함수를 작성해야합니다.
: 나는 그것을 같은 입력을 줄 때
(define (num-occurs sym lst)
(define (counter sym lst count)
(cond ((null? lst) count)
((equal? (car lst) sym) (counter sym (cdr lst) (+ 1 count)))
(else (counter sym (cdr lst) count))))
(counter sym lst 0))
(define (remove-all elem lst)
(if (null? lst)
'()
(if (equal? elem (car lst))
(remove-all elem (cdr lst))
(cons (car lst) (remove-all elem (cdr lst))))))
(define (word-frequencies str)
(let ((lst (string->list str)))
(if (null? lst)
'()
(append (list (cons (car lst) (num-occurs (car lst) lst)))
(word-frequencies (remove-all (car lst) (cdr lst)))))))
: 지금까지 나는 다음과 같은 코드가 있습니다. 문자열 -> 목록 : 계약 위반 예상 됨 : 문자열? 주어진 : (공간 \ # 공간 # \ e # \ r # \ e # \ 공간 # \ p # \ e # \ r # \ s # \ o # \ n # \ 공간 # \ i)
도움이 될만한 이유는 무엇입니까? 최종 출력물이 보이길 원합니다.
((안녕하세요. 2) (가. 1) (사람. 1))
문자의 목록을 반환 list' 현악기와>'주의하십시오
우리는 또한 단어 및 주파수의 쌍을 구축하는 기능을 사용할 수있다 기호가 아닙니다. 따라서'(string-> list "hi")'는'(# \ h # \ i)'를 반환합니다. – PieOhPah
문자열에서 목록으로 직접 변환하는 방법을 알고 계십니까? 그래서 그것은 단지 '(hi person hi)가됩니다. –
문자열을 분리하고'string-> symbol'을 결과 문자열 목록, 즉에 매핑 할 수 있습니다. '(map string-> symbol (문자열 분리 "hi there person hi"))'. – assefamaru