Вопрос заключается в следующем:Накопительный Рекурсия заменить символы строки с номерами на схеме
- Использование накопительную рекурсии
- Функция потребляет строку и производит новую строку
- Каждый символ, который появляется последовательно заменяется буквой и числом раз ее последовательных выступлений
- Пример: «hellooo» => «hel2o3»
- Вопрос в университет Уровень На основе
Я попытался следующие:
(define (abbreviate str)
(local [(define str-lst (string->list str))
(define (count-duplicate lst char count)
(cond
[(empty? lst) count]
[(equal? (first lst) char)
(count-duplicate (rest lst)
(first lst)
(add1 count))]
[else (count-duplicate (rest lst)
(first lst)
count)]))
(define (build-string lst)
(cond
[(empty? lst) empty]
[else (cons (first lst)
(cons (string->list (number->string
(count-duplicate (rest lst)
(first lst) 1)))
(build-string (rest lst))))]))]
(build-string str-lst)))
Но я получаю результат:
(список # \ ч (list # \ 4) # \ e (list # \ 4) # \ l (list # \ 4) # \ l (list # \ 3) # \ o (list # \ 3) # \ o (list # \ 2) # \ o (список # \ 1))
Любая помощь?
Так что я задавался вопросом, что именно вы пытаетесь передать, когда говорите, что ваш вопрос - университетский уровень (так как вы также аннотировали свой последний вопрос таким же образом)? Что это действительно просто? Что вы пытаетесь обмануть свое задание? Или что-то другое? Мне действительно интересно. –
В настоящее время я обучаюсь на курсах университетского уровня. Я не ищу прямых ответов, но помогу привести меня к правильному пути.Я указываю, что вопрос является университетским, потому что ответы, которые я получаю, могут реализовывать концепции, которые я еще не изучил в классе. Поскольку я не изучил эти концепции, мне не разрешено использовать их в моих заданиях. –
Я вижу. Может быть, проще сказать, что вы работаете над заданием, и что понятия, которые вы изучали до сих пор: _list concept here_. Различные курсы учат разные концепции в разных темпах, поэтому лучше говорить о том, что вы можете использовать. –