상사는 최근에 영어 라는 흥미로운 프로그래밍 언어에 대해 배웠습니다 . 그는이 "혁명적 인"아이디어를 가지고 있으며, 코드 작성 속도를 두 배로 늘리기 위해 코드를 작성하려고합니다! 그는 기술에 정통한 사람이 아니기 때문에 코드를 작성할 수 있도록 컴파일러를 작성하기를 원합니다!
이제, 당신은 사악한 게으른 프로그래머이며,이 엄청나게 복잡한 언어를 컴파일하는 프로그램을 작성하지 않을 것입니다. 대신 상사의 코드에 항상 오류가 있는지 확인하여 실제 컴파일에 도달하지 못하도록하고 코딩 대신 문법 오류를 수정합니다.
문제는 터미널에서 실행할 수있는 프로그램을 작성하고 파일 경로를 인수로 허용하는 것입니다. 이 프로그램은 다음을 수행해야합니다.
- 오타를 도입하여 파일 입력을 수정하십시오.
- 소개 한 오타가 발생하여 컴파일에 실패한 것처럼 가장하십시오.
- 같은 파일의 복사본에서 프로그램을 실행하면 같은 오타가 연속으로 두 번 나오지 않아야합니다.
이 파일에서 프로그램을 실행하여 문제를 설명하려면 다음을 수행하십시오.
Take an array as input.
Sort the array.
Output the array.
라인을 따라 무언가를 출력해야합니다
Error on line 1:
'Take an arqay as input.'
^
arqay is not a valid identifier.
프로그램에 컴파일하도록 지시 한 파일은 이제 다음과 같아야합니다.
Take an arqay as input.
Sort the array.
Output the array.
다음은 프로그램 사양에 대한 자세한 내용입니다.
귀하의 프로그램은 보스가 입력 한 프로그램의 문자를 다른 임의의 문자로 바꾸면 문법 오류가 발생한다고 가정 할 수 있습니다. 프로그램은 보스 코드에서 오류를 생성하기 위해 알파벳이 아닌 문자를 사용해서는 안됩니다. 당신의 상사는 절대 숫자 나 기호를 사용하지 않을 것이고, 뭔가 무언가가 있다는 것을 알게 될 것입니다. 귀하의 프로그램은 상사의 프로그램에있는 단어에만 오류를 가져와야합니다. 문장이나 구두점에서 공백을 바꾸지 마십시오. 당신의 프로그램은 상사가 컴파일하려고하는 프로그램의 경우를 바꾸어서는 안됩니다 arQay
. 이렇게하면 발생하는 take
대신 Take
또는 Array
대신 같은 오류가 발생하지 않습니다 array
. 프로그램은 오류가있는 행을 먼저 지정하여 오류를 출력해야합니다.
Error on line <insert line number here>:
그런 다음 '
기호 안에 오류가있는 줄을 인쇄해야합니다 . 다음 줄 에는 오류가 ^
있는 단어 아래 에 기호가 있어야하며 마지막으로 오류를 설명하는 텍스트가 있어야합니다 (이 부분은 귀하에게 달려 있습니다. 오류를 설명하는 한 원하는 것을 말할 수 있습니다).
입력 파일이 존재하고 비어 있지 않다고 가정 할 수 있습니다. 입력 파일에 문법 오류가없는 것으로 가정 할 수도 있습니다.
보너스 :
코드에서 소개하는 오류가 완전히 임의적이지는 않지만 이 질문 에서와 같이 오타가있는 경우 -60 바이트 입니다.
5 개 이상의 서로 다른 오류 메시지에 대해 -60 바이트, 임의로 교대로 표시합니다.
당신의 프로그램이 보스에게 일부 파괴적인 메시지를 출력 할 확률이 100 분의 1 이하이면 -60 바이트.
편집 : 메시지의 바이트 수는 점수에 포함되지 않습니다. (이 좋은 아이디어에 대해 Martin Büttner에게 감사드립니다)
이것은 코드 골프, 최단 바이트 카운트 승리입니다. 오류 메시지 내용을 골라 내지 마십시오. 상사는 오류 메시지를 이해할 수 없으면 기뻐하지 않으며, 문제 해결을 요청합니다.