Быстрое чтение чисел из потока - Lisp
Формулировка задачи:
Помогите написать функцию быстрого чтения целых чисел из потока. Уже есть чтение натуральных.
Просто не знаю от чего оттолкнуться
Листинг программы
- (defun get-integer (&optional (stream *standard-input*))
- (declare (optimize (speed 3) (safety 0) (space 0) (debug 0)))
- (let ((digit (read-char stream nil))
- (number 0))
- (declare (type fixnum number))
- (if digit
- (loop
- (setf number (the fixnum (+ (the fixnum (* 10 number))
- (the fixnum (- (char-code digit) (char-code #\0)))))
- digit (read-char stream nil))
- (unless (and digit (digit-char-p digit))
- (return (values number digit))))
- (values nil nil))))
Решение задачи: «Быстрое чтение чисел из потока»
textual
Листинг программы
- span class="sy0"> * (Create-fill-matrix 4)
- 1 2 3 4
- 1 2 3 4
- 1 2 3 4
- #2A((NIL NIL NIL NIL) (1 2 3 4) (1 2 3 4) (1 2 3 4))
Объяснение кода листинга программы
В данном коде создается матрица размером 4x4, заполненная числами 1, 2, 3 и 4.
- Сначала вызывается функция
Create-fill-matrix
с аргументом 4, которая создает матрицу размером 4x4. - Затем в матрицу записываются числа 1, 2, 3 и 4.
- Результат сохраняется в переменной с названием
NIL
(номер 2A). - После этого числа 1, 2, 3 и 4 записываются в каждую строку матрицы.
- Результат сохраняется в переменной с названием
NIL
(номер 2A). - Затем числа 1, 2, 3 и 4 записываются в каждый столбец матрицы.
- Результат сохраняется в переменной с названием
NIL
(номер 2A). - В конце кода выводится содержимое переменной
NIL
(номер 2A).
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д