룬 마법 , 88 바이트
vrlril1-{)?\:',=4*?~r0[
i! '${U [0r/?*7̸0l{$
$ka6 ̹\!$,'/;? = ̹
' ̸
$
온라인으로 사용해보십시오!
그것을 바꾸어보십시오!
입력은 각 값에 대해 공백으로 구분 되며 행에 대해 쉼표로 구분 되며 (줄 바꿈은 선택 사항 임) 문자열과 0이 아닌 숫자를 모두 지원합니다. 공백과 줄 바꿈으로 입력이 자동으로 분리되므로 입력 구문 분석이 쉬워집니다. 예를 들어 입력은 다음과 같습니다.
1 2 3 , 4 5 6 , 7 8 9
중첩 배열 형식으로로 표시됩니다 [[1,2,3],[4,5,6],[7,8,9]]
. 들쭉날쭉 한 배열에 대한 최소한의 지원 (마지막 배열 만 짧을 수 있음)이지만 입력이 직사각형 일 것으로 예상되므로이 요구 사항을 충족합니다.
출력은 동일한 형식으로 표시됩니다 (줄 바꿈을 사용하여 바뀐 버전 출력, 대신 공백을 사용하도록 0 바이트가 다릅니다). 일반 버전에는 후행 공백이 있고, 전치 된 버전에는 후행 쉼표와 줄 바꿈이 있습니다 (인쇄 할 데이터가 더 이상 없는지 확인하기 어렵 기 때문에).
일반 버전에는 이상한 곳에 수정 자 문자가 있습니다 (예 : 7̸0
있지만 소스가 바뀔 때 정상적인 위치에서 명령의 가장 왼쪽 열만 사용해야하기 때문입니다.
설명
전치 된 소스에 대한 설명은 전치되지 않은 형식입니다. 화살표는 다양한 블록의 출입구에서 IP 방향성을 나타냅니다.
→rlril1-{)?\:',≠4*?~r0[ Initial position. Read and parse input.
↓ Input loop exit and direction
입력을 읽고 ,
문자를 찾으면 새 서브 스택이 푸시됩니다. 이를 통해 각 스택은 각 행을 메모리에 별도로 보유 할 수 있습니다. 위에서 다음 섹션으로 들어갑니다.
↓
.. '${̹L [0r/?*7≠0l{̹$ When no more input:
↑ ↓
[0
(왼쪽으로 실행)은 첫 번째 행과 마지막 행 사이의 경계 역할을하는 빈 스택을 설정 한 다음 첫 번째 스택 ( {̹
)으로 회전하고 요소 및 회전 스택 인쇄를 시작합니다. 이 i!
실행되지 않으며 {̹L [0r
한 번만 실행됩니다. 크기가 0 인 스택이 발견되면 루프가 종료됩니다.
↑ ↓
$ka6 \!$,'/;? Row separation formatting
빈 스택이 발견되면 a ,
및 줄 바꿈이 인쇄되고 값 루프가 다시 입력됩니다. 실행 .
되지 않은 명령 인 실행 순서 (가독성을 위해 미러링 됨) : \',$!.6ak$?....../
. 줄 바꿈 대신 공백을 인쇄 ak
하도록 변경 했습니다 '<space>
.
프로그램이 빈 스택에서 쓰려고하면 실행이 중지됩니다. 그렇기 때문에 마지막 행 흔들림 만 제대로 작동 ,
하고 출력에 후행이있는 이유는 무엇입니까? 프로그램이 더 이상 데이터가 없다는 것을 알기 전에 쉼표가 이미 인쇄되었습니다.