어제 시작한 프로젝트 '나의 지옥'중 하나는 Befunge 인터프리터였습니다. 나는 가장자리의 경우를 제외하고는 대부분을 위해 일하고있다.들쭉날쭉 한 char [] []을 char [,]로 변환 하시겠습니까?
나는 게으른있어이와 비 펀지 프로그램에서 읽을하기로 결정
char[][] program = File.ReadAllLines(args[0]).Select(x => x.ToCharArray()).ToArray();
내가 나중에 자신을 위해 더 많은 일을 만드는 것을 알고 있었다, 그러나 나는 다른 부분에 도착하고 싶어하고 그것을 떠났다. 이제는 늦었고 program
은 직사각형이 아니란 사실을 고쳐야합니다.
v v <
@
> ^
제 1 회 및 제 3 선은 길이 9 자하지만, 2 라인은 내가 IndexOutOfBoundsException
이전을 얻을 것이다, 단지 내 비 펀지 인터프리터가 설정 한 방식으로 5입니다 :의 난이 비 펀지 프로그램을 가지고 있다고 가정 해 봅시다 프로그램이 끝나면 방향 변경으로 ^
을 해석 한 후 program[1][8]
에 액세스하려고 시도하고 program[1]
은 길이가 5 개인 것이기 때문에 프로그램이 종료됩니다. 예외를 잡아서 주위를 춤추는 대신 을 사용하여 program
을 사용하고 여분의 문자를 공백으로 채우는 방법은 무엇입니까?
나는 가장 긴 라인의 길이, 라인의 수를 결정할 수 있고, 그것들을 가지고 char [,]를 만들고 그것을 복사 할 수 있다는 것을 알고있다. 그러나 나는 조금 더 단순하고 더 우아한 것을 바라고있다. 나는 새로운 접근법이 더 좋다면 위의 라인을 버리는 것에 완전히 동의한다.
난 당신이 거기 당신의 질문에 대답 생각 : 원시 형의 배열은 (당신이 어셈블러 또는 C와 경험을 가지고있는 경우) 작업의 종류에 유용 할 수있는 바이트의 플랫 버퍼로 취급 할 수있다 : "가장 긴 줄의 길이, 줄 수를 결정하고, 그걸로 char [,]를 만들고" – Almo
아, Befunge 인터프리터 만들기를위한 소품 "을 복사하십시오. 그것은 멋진 esolang입니다. 나는 몇 년 전에 Carnage Heart에서와 같이 로봇을 프로그래밍 한 것과 같은 충격파 게임을 만들었습니다. – Almo
하나의 솔루션 만 있으면 최상의 솔루션이되지 못합니다. C#에 대해 더 많은 것을 배울 수 있습니다. –