목록

2010-12-05 4 views
2

포맷 I 다음 목록이 있습니다 (X X O NIL NIL O NIL NIL O)목록

내가 그것을 포맷하고 싶습니다 같이하기 : 아마 함께 내가 리스프과에 대해 알고 작은 것과 뭔가를 자갈 수

X | X | O 
--+---+-- 
    | | O 
--+---+-- 
    | | O 

FORMAT,하지만 아마 꽤 심하게 될 것입니다. 모든 포인터 크게 감사하겠습니다.

+3

그냥 해보세요. 효과가있는 버전을 가지고 있으면 총기 수리에 대해 걱정할 필요가 있습니다. –

답변

6
* (format t "~{~A | ~A | ~A~%~^--+---+--~%~}" 
    (mapcar (lambda (x) (or x " ")) '(X O X NIL X X O X NIL))) 
X | O | X 
--+---+-- 
    | X | X 
--+---+-- 
O | X | 
NIL 
1
* (format t "~{~A | ~A | ~A~%~^--+---+--~%~}" 
    (mapcar (lambda (x) (or x " ")) '(X O X NIL X X O X NIL))) 
X | O | X 
--+---+-- 
    | X | X 
--+---+-- 
O | X | 
NIL 

위의 형식 문자열에 대한 약간의 설명. 여기서 중요한 것은 '~ {' '~}'와 '~ ^'입니다. 일치하는 Tilde 중괄호 쌍이 입력 인수로 목록을 가져 와서 반복합니다. 반복되는 목록이 비어 있으면 ~ ^는이 루프에서 초기 이스케이프를 제어합니다. 관련 문서 ~{~^.