写入后读取 *standard-input* Common Lisp
Writing followed by reading of *standard-input* Common Lisp
这是一个很简单的问题。我正在尝试解决 HackerRank 问题,但不完全理解如何写入 *standard-input* 以便 运行 我计算机上的代码。
它要求对给定数组长度 (N) 后跟数组本身的数组求和,所有这些都在 *standard-input* 上。
Hackerranks 使用 *standard-input* 来给出值,如果我可以将值存储在输入中然后读取它们,那将是最简单的。
我的问题是如何写入*标准输入*?这将使在我的计算机上而不是在云中工作变得容易得多。
(with-input-from-string (s "4 3 2")
(let ((a (read s))
(b (read s))
(c (read s)))
(format t "~a, ~a, ~a~%" a b c)))
您也可以只从文件中读取,但是从字符串中读取对于制作不同的测试用例来说要容易得多。
Pure Common Lisp 不提供流,您可以在其中轻松写入、缓冲输出并读回。 Pure Common Lisp 也不提供可扩展的流。但是有一个名为 gray streams 的扩展(由 David N. Gray 作为 ANSI CL 问题 STREAM-DEFINITION-BY-USER 提出),它允许使用 fifo 缓冲区实现管道流。
管道示例:cl-plumbing
这是一个很简单的问题。我正在尝试解决 HackerRank 问题,但不完全理解如何写入 *standard-input* 以便 运行 我计算机上的代码。
它要求对给定数组长度 (N) 后跟数组本身的数组求和,所有这些都在 *standard-input* 上。
Hackerranks 使用 *standard-input* 来给出值,如果我可以将值存储在输入中然后读取它们,那将是最简单的。
我的问题是如何写入*标准输入*?这将使在我的计算机上而不是在云中工作变得容易得多。
(with-input-from-string (s "4 3 2")
(let ((a (read s))
(b (read s))
(c (read s)))
(format t "~a, ~a, ~a~%" a b c)))
您也可以只从文件中读取,但是从字符串中读取对于制作不同的测试用例来说要容易得多。
Pure Common Lisp 不提供流,您可以在其中轻松写入、缓冲输出并读回。 Pure Common Lisp 也不提供可扩展的流。但是有一个名为 gray streams 的扩展(由 David N. Gray 作为 ANSI CL 问题 STREAM-DEFINITION-BY-USER 提出),它允许使用 fifo 缓冲区实现管道流。
管道示例:cl-plumbing