이제 나쁜 코드를 작성하는 능력을 과시 할 때입니다. 나는 언더 핸드 C 콘테스트와 비슷한 새로운 종류의 프로그래밍 퍼즐을 시도하고 있습니다. 가장 큰 차이점은 이것이 거의 사악하지 않다는 것입니다. 그것은 단지 아주 좋은 재미입니다. 퍼즐의 목표는 가능한 많은 버그를 프로그램에 넣는 것입니다. 이 콘테스트의 우승자는 캐릭터 당 버그가 가장 많은 프로그램을 작성하는 사람입니다.
설명을 요구하는 많은 주석이 발생하지 않도록 지금 당장 버그로 간주되는 것을 정의해야합니다.
첫째, 버그는 오류가 아닙니다 . 인터프리터가 오류 (예 : 불일치 한 델리 미터, 형식이 잘못된 구문, 널 (null) 오브젝트의 특성 초과 등)로 감지 할 수있는 문제점이거나 프로그램의 실행 또는 계속을 방해하는 경우에는 그렇지 않습니다. 버그. 그렇지 않으면, 네 개의 문자를 입력 할 수 있고 인터프리터는 8 개의 구문 오류를 나열하고 2의 버그 문자 비율을 주장 할 수 있습니다.
둘째, 버그는 분명히 잘못이 아니어야 하고 버그가 부활절 달걀하지 않습니다 . 이것은 분명 주관적인 기준이지만, 나는 이런 종류의 경쟁에 필수적이라고 생각합니다. 이는 명백한 방식으로 코드를 구체적으로 조작하는 조건부 코드를 가질 수 없음을 의미합니다. (읽기 : 아무도 차이를 알지 못하므로 튜링 피트 언어를 사용하십시오).
셋째, 버그는 그럴듯해야합니다 . 이것은 위와 같은 주관적이지만 버그는 꼼꼼하지 않거나 무지한 사람이나 실수를 한 사람이 작성한 것일 수 있습니다. 예를 들어, 유효하고 올바르게 보이지만 바람직하지 않은 동작 (예 : 괄호 대신 대괄호 사용)을 유발하는 개별 오류 또는 구문이 포함됩니다.
이 버그는 예외적 인 경우를 위해 원치 않는 출력을 포함하여 원치 않는 동작을 프로그램에 발생시킬 수 있습니다. 예를 들어 현재 시간이 종료되었는지 여부에 따라 출력이 다르게 표시됩니다 홀수 또는 짝수 초), 메모리 누수, 데이터 손실 등이 있습니다.
문제 예 :
모든 ASCII 문자를 숫자 값의 오름차순으로 표시하는 프로그램을 만드십시오.
답변 예 :
Brainf ***, 5 문자, 1 버그, 0.2 버그 문자 비율
+[+.]
버그 : 1의 ASCII 문자를 표시하지 않습니다 .+[.+]
. 로 변경하여 수정할 수 있습니다 .
좋아, 나는 지금까지 대부분 그것을 얻었어야한다고 생각한다.
시저 암호 해독 및 알파벳순으로 단어 정렬
시저 암호는 일련의 문자를 취하고 알파벳에서 n 문자 위로 이동하여 생성됩니다 . 알파벳의 처음이나 끝까지 가면 A는 Z 다음에, Z는 A 앞에옵니다. 예를 들면 다음과 같습니다.
Mannequin
Nboofrvjo //Shifted over 1 or -25
Wkxxoaesx //Shifted over 10 -16
Ftggxjnbg //Shifted over -7 or 19
두 가지 입력이 제공됩니다 (이유 내에서 가장 편리한 입력을 얻을 수 있습니다). 첫 번째 입력은 단어이고 두 번째 입력은 이동 된 값입니다. 당신의 임무는 디코딩 된 단어를 출력 한 다음 알파벳순으로 정렬 된 후 디코딩 된 단어를 출력하는 것입니다.
예 (나쁜 남자에게 불쾌하지 않으며 단지 예일뿐입니다) :
첫 번째 입력 : gtdx wjbfwiji. ljy Gfi hfssty
두 번째 입력 : 5
첫 번째 결과 : 소년들은 보상을 받았다. 나쁜 것을 얻을 수 없다
두 번째 결과 : 나쁜 소년은 보상을받을 수 없습니다.
행운을 빕니다!