这是一个非常简单的问题。我正在尝试解决HackerRank问题,但不完全理解如何写入*标准输入*以便在我的计算机上运行代码。
它要求在给定数组长度 (N) 的情况下对数组求和,然后是数组本身,全部在 *标准输入* 上。
黑客行列使用*标准输入*来给出值,如果我可以将值存储在输入中然后读取它们,那将是最简单的。
我的问题是我如何写入*标准输入*?这将使在我的计算机上工作比在云中工作更容易。
使用 with-input-from-string
.
(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 也不提供可扩展的流。但是有一个名为灰色流的扩展(由David N. Gray提出,作为ANSI CL问题STREAM-DEFINITION-BY-USER),它允许使用FIFO缓冲区实现管道流。
管道示例:cl-管道