Быстрое чтение чисел из потока - 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.

  1. Сначала вызывается функция Create-fill-matrix с аргументом 4, которая создает матрицу размером 4x4.
  2. Затем в матрицу записываются числа 1, 2, 3 и 4.
  3. Результат сохраняется в переменной с названием NIL (номер 2A).
  4. После этого числа 1, 2, 3 и 4 записываются в каждую строку матрицы.
  5. Результат сохраняется в переменной с названием NIL (номер 2A).
  6. Затем числа 1, 2, 3 и 4 записываются в каждый столбец матрицы.
  7. Результат сохраняется в переменной с названием NIL (номер 2A).
  8. В конце кода выводится содержимое переменной NIL (номер 2A).

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 4 из 5
Похожие ответы