불결하고 독특한


26

이 질문에서 나는 프로그램을 문자열로 말할 것입니다. 이것은 문자가 아닌 바이트의 문자열입니다. 결과 프로그램이 렌더링되거나 표시되는 방식은이 문제에 중요하지 않으며 메모리에 나타나는 방식 만 중요합니다.

자연 그대로의 프로그램은 프로그램이 실행이되지 오류를 수행 할 때, 그러나 그 때마다 연속 크기의 문자열 오류가 발생하지 않는다고 N , 1 N < | S | 가 제거되었습니다.에스1<|에스|

더러운 프로그램은이 프로그램이 반대 인 그 실행이 수행 오류 단마다 연속 스트링의 크기 N을 , 여기서 1 N < | S | 오류가 발생하지 않습니다.에스1<|에스|

이 문제의 경우 오류는 STDERR에 비어 있지 않은 출력입니다.

가능한 많은 고유 바이트를 사용하는 더러운 프로그램을 작성해야합니다. 즉, 코드에 표시되는 고유 한 바이트마다 점수가 높을수록 1 점을 얻습니다. 따라서 최대 점수는 256입니다.


대괄호 / 괄호가 포함 된 언어로도 대답 할 수 있습니까? 대괄호가 일치하지 않도록 코드에서 일부 하위 문자열을 제거 할 수 있습니다.
JungHwan Min

@JungHwanMin 언어가 균형 괄호를 적용하면 불가능할 것으로 생각됩니다.
밀 마법사

@CatWizard 문자의 연속 하위 문자열 (예 : 연속 바이트 세트가 아닌 )을 제거 할 때 더러운 프로그램에서 오류가 발생하지 않습니다 . 맞습니까?
JungHwan Min

@JungHwanMin 죄송합니다. 아닐 수도 있습니다. 우리는 연속 현에만 관심이 있습니다.
밀 마법사

답변:


18

단항 , 14 바이트

123456789ABCDE

이것은 [대괄호로 인해 오류가 발생 하는 brainfuck 프로그램을 인코딩합니다 .

제거 바이트에서 발생합니다 >, <, +, -, ., ,또는 유효 브레인 퍽 프로그램입니다 빈 프로그램.


더 이상 해결책이 용액에 감소시킬 수 있기 때문에 이것은 최적의 솔루션 인 오류
조 왕

이것은 또한 유일한 솔루션입니다.
user202729

13

R , 3 바이트

qrt

온라인으로 사용해보십시오!

객체의 이름은 R에서 유효한 프로그램입니다.

qrt 이름이 아니므로 오류를 반환합니다.

q 종료 기능입니다

qr QR 분해 기능

rt t 분포 샘플링 함수입니다

qt t 분포 역 CDF입니다

t 조옮김 함수입니다


2
@pajonk이지만 "r"은 연속 하위 문자열입니다. 그 제거 "qt"
Orphevs

3
길이 3의 R에는 정확히 하나의 더러운 프로그램이 있습니다. (단 하나의 문자 유효한 프로그램은 0-9cqtCDFIT어떤 프로그램 때문에 시작해야합니다, cm, qf, qr, qt, ts또는 Im. 세 가지 가능성이 있습니다 길이 qrf, qrm, qrt, qtstsd이들 중 하나는 더러운 (다른 사람이 중 하나를 확장 할 수 없습니다 그들을 더러운를 만들기 위해 아무 기능이없는 등 rm*, rf*, ts*, sd*)
JDL

@Orphevs 내 나쁜 도전을 잘못 읽습니다.
pajonk

10

젤리 , 4 5 6 7 8 10 11 바이트

“a”;⁽PFð+µU

온라인으로 사용해보십시오!

그것을 확인하십시오.

정수로 문자열을 추가하려고합니다.

가능한 서브 프로그램 중 일부 :

“a” 문자열 리터럴입니다.

“a 동일한 문자열 리터럴입니다.

빈 문자열입니다.

“a”; "a"를 자체와 연결합니다.

... 너무 많은 사람들이 그들을 모두 열거 할 수는 없습니다.


1
다행히 Jelly는 여전히 오류를 허용합니다.
user202729

6

폴리 글롯, 3 바이트

1 2

다음에서 작동합니다.

  • 자바 스크립트
  • 루비
  • 아르 자형
  • 옥타브
  • GHCi
  • 줄리아

JavaScript에서 SyntaxError : 예기치 않은 토큰 : 숫자 리터럴 또는 유사한 오류가 발생합니다.

다른 모든 문자열은 유효한 숫자 리터럴 ( 1 , 2 또는 12 )입니다.


GHCi에서는

<interactive>:1:1: error:
     Non type-variable argument in the constraint: Num (t1 -> t2)
      (Use FlexibleContexts to permit this)
     When checking the inferred type
        it :: forall t1 t2. (Num t1, Num (t1 -> t2)) => t2

그것을 적용하려고하기 때문입니다 12함수로, 그러나 그것은 할 수 없습니다. 이 부분이 제거되면 단순히 숫자 리터럴이됩니다.


폴리 글롯 : R, Octave, Ruby,
Pythons

1
@ngm GHCi, 그러나 파이썬에서`2` 오류.
밀 마법사

나는 그것이 매우 일반적인 것이라고 의심했다. 나는 이것을 커뮤니티 위키로 바 꾸었으므로 이것이 작동하는 모든 언어로 자유롭게 편집하십시오!
Arnauld


5

파이썬 2/3 , 3 바이트

4\f2

또는

4\x0c2

온라인으로 사용해보십시오!

파이썬에서 "\ f"는 "\ x0c"와 동일하며 폼 피드 문자입니다. 이는 프린터가 다음 줄로 이동 함을 나타냅니다.

파이썬 표현식이로 시작하거나 끝나는 경우 \f기본적으로 무시되므로 \f2유효한 표현식입니다.

42숫자 0-9가 될 수 있습니다. 그러나 첫 번째 바이트가 합법적으로 선언 된 0것처럼 Python 2.7.15에서만 유효합니다 .022

따라서 공백으로 구분 된 두 개의 숫자가 있으므로 표현식 자체는 구문 오류와 함께 실패합니다. 그러나 모든 단축 \f은 시작 또는 끝, 중요하지 않은 위치에 놓거나 42유효한 것을 만듭니다 .

(IDLE에서이 파일은 "42"처럼 보입니다.)

양식 피드 설명 소스 : https://stackoverflow.com/a/26184126


3
를 사용하지 않고 소스에서 실제 코드를 사용한 경우 이해하기가 더 쉽습니다 \f. 다음 은 사전 형식화 된 답변을 얻을 수있는 온라인 시험판 링크입니다.
밀 마법사

1
설명을 위해 변형으로 추가했습니다. 또한 링크를 제안 해 주셔서 감사합니다.
Matt

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.