Как преобразовать строку в список целых чисел в схеме? - PullRequest
1 голос
/ 06 апреля 2019

Как я могу преобразовать строку цифр в список целых чисел? Я хочу, чтобы "1234" был преобразован в список 1 2 3 4

1 Ответ

3 голосов
/ 06 апреля 2019

Вы можете преобразовать строку в список символов с помощью string->list. Например.

(string->list "1234") ; ==> (#\1 #\2 #\3 #\4)

Вы можете преобразовать символ в его значение ascii с помощью char->integer. Например.

(char->integer #\1) ; ==> 49

Значения Ascii для #\0 ... #\9 расположены в порядке возрастания, поэтому вы можете вычесть, чтобы получить цифровое значение:

(- (char->integer #\1) 48) ; ==> 1 

Создайте процедуру, в которой вы объедините их с map, и все готово.

(define (number-string->number-list str)
  (map (lambda (ch) 
         <??>)
       (string->list str)))

(number-string->number-list "1234") ; ==> (1 2 3 4)
...