2016-10-15 3 views
0

Так что я практиковал ракетный язык начинающего, когда я пришел к этому вопросу.В racket, как заменить слово в строке, используя только функцию string-> list или list-> string?

Запишите функцию str-replace, которая потребляет строку, персонаж цели и символ замены . Функция создает новую строку, которая идентична потребляемой строке, причем все вхождения целевого символа (если есть) заменены на заменяющий символ. Например, (string-replace "word" #\o #\y) ⇒ "wyrd".

Примечание: Я не могу использовать какие-либо встроенные строковые функции, кроме string->list и list->string.

Так что я начал с кодом теперь я застрял, как я использую функцию-обертку для этого кода, насколько теперь у меня есть только этот

;; los is list of string  
(define(str-replace los) 
    (+(first los) 
    (first (rest los)) 
    (first (rest (rest los))) 
    (first (rest (rest (rest los)))))) 

ответ

2

Определить функцию преобразования, которая работает в списках:

(define (replace-in-list input-list from-char to-char) 
    (if (null? input-list) 
     ... 
     (cons ... 
      (replace-in-list ... from-char to-char)))) 

(Вы должны заполнить пустые ...)

И называют это от другого:

(define (str-replace input-string from-char to-char) 
    (list->string 
    (replace-in-list 
     (string->list input-string) from-char to-char))) 
+0

Заполнить бланки чем? Я запутался ... И как это будет работать для fuction str-replace, можете ли вы подробно рассказать? – Asha

+0

@ Kiterunner (1) Я переименовал вторую функцию как 'str-replace'. (2) Я не дал вам полного решения, вам нужно подумать о том, что происходит в '...'. Что должна вернуть первая функция в случае, если ей задан пустой список? что должно быть сделано для каждого символа в списке? Вся необходимая информация ждет вас где-нибудь. См. Например https://docs.racket-lang.org/ и https://mitpress.mit.edu/sicp/full-text/book/book.html. – coredump

 Смежные вопросы

  • Нет связанных вопросов^_^