Быстрое чтение чисел из потока - 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).
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д