2 차원 배열을 표준 입력에서 Common Lisp (SBCL)의 데이터 구조로 파싱하려고합니다. I 입력 폼Common Lisp 입력에서 2 차원 배열을 파싱
1 2 3
4 5 6
7 8 9
은 3 개 행이 있는지 될 것으로 예상된다.
지금까지 나는이 왔 :
(defun read-2d-array (rows &rest args)
(values (read-from-string
(concatenate 'string "#2A("
(dotimes (i rows)
(concatenate 'string "("
(apply #'read-line args)
")"))
")"))))
이의 문제는 외부 CONCATENATE가 작동하는 것 같다 동안, 나는 루프 반복을 통해 연결하여 양식을 얻으려고 노력하는 데 문제가 있다는 것입니다 :
#2A((1 2 3)(4 5 6)(7 8 9))
도움이 되겠습니다. 감사!
미리 행과 열의 수를 알면 그 질문에 함축되어 있다고 생각하지 않습니까? – BRFennPocock
@BRPocock 질문의 함수는'rows'를 인자로가집니다. 예제 입력이 정사각형 이었기 때문에 숫자 열이 같거나 (적어도 알 수 있다고 가정하는 것이 안전 할 것이라고 생각했습니다. – jkiiski
OP가 일반 "CSV"리더와 같은 것을 찾고있을 수도 있지만 질문에 명확하게 지정되지 않았을 것이라고 추측합니다. – BRFennPocock