태그 보관물: decision-problem

decision-problem

리드하거나 따르나요? 필요는 없습니다 . 답변이 유효하려면 네

이 과제에서는 문자열을 입력으로 사용하여 두 가지 가능한 값 중 하나를 출력하는 프로그램이나 함수를 작성해야합니다. 우리는 다음 값 중 하나를 호출합니다 truthyfalsy을 . 실제로 진실 하거나 허위 일 필요는 없습니다 . 답변이 유효하려면 네 가지 추가 기준을 충족해야합니다.

  • 프로그램을 자신에게 전달하면 진실한 가치가 출력 됩니다.

  • 이전 답변에 입력으로 프로그램을 전달하면 (전달중인 프로그램의) 진실한 출력을 출력 해야합니다 .

  • 이전 답변을 입력으로 답변에 전달하면 (프로그램의) 잘못된 출력을 출력 해야합니다 .

  • 챌린지에 대한 모든 답변 (신규 답변 포함)에서 진실한 결과로 평가되는 무한한 문자열이 있어야합니다 .

이것이 할 일은 체인의 다른 프로그램이 체인의 앞뒤에 있는지 여부를 결정할 수있는 응답 체인을 천천히 작성하는 것입니다.

이 과제의 목표는 연속적인 답변에 적용되는 소스 제한 목록을 작성하여 각각을 이전보다 더 어렵게 만드는 것입니다.

체인 (하스켈로 작성)은 다음과 같이 시작할 수 있습니다.

f _ = True

더 오래된 프로그램이 없기 때문에 기준이이 답변에 적용되지 않으므로 가능한 두 값 중 하나만 출력하면됩니다.이 경우 항상 출력 True됩니다.

다음에 답이 될 수 있습니다.

f x=or$zipWith(==)x$tail x

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

문자열의 어딘가에 한 행에 문자가 두 번 있다고 주장합니다. 첫 번째 답변에는이 속성이 없지만 두 번째 답변에는이 속성이 없습니다 ==. 따라서 이것은 유효한 다음 답변입니다.

특별 규칙

  • 원하는 횟수만큼 원하는 언어를 자유롭게 사용할 수 있습니다 (무료로 구현 가능).

  • 마지막으로 답변 한 사람인 경우 새 답변을 게시하기 전에 7 일 이상 기다려야합니다.

  • 프로그램이 자체 소스를 읽지 못할 수 있습니다.

  • 4 번째 규칙은 암호화 기능이 관련되어 있는지 검증하기가 매우 어렵 기 때문에 이러한 기능은 허용되지 않습니다.

득점 기준

답변을 추가 할 때마다 체인의 위치만큼 많은 점수를받습니다. 예를 들어 5 번째 답변은 작가 5 점을 얻습니다. 목표는 가능한 많은 점수를 얻는 것입니다. 마지막 답변은 답변자 -∞ 점을 얻습니다. 도전을 “승리”하기보다는 자신의 점수를 극대화하려고하면 더 재미있을 것입니다. 나는 대답을 받아들이지 않을 것이다.

이것은 이므로 가장 오래된 것으로 정렬 할 수 있습니다



답변

14. X86 어셈블리 (gcc 6.3), 324 바이트

.TITLE "a"#"a" ELTIT.
.data
i:.fill 25,1,0
s:.string "%25[^\n]"
t:.string "->Hi, Retina!"
f:.string "Bye Retina!"
.global main
main:
pushl $i
pushl $s
call scanf
addl $8, %esp
pushl $i
call strlen
addl $4, %esp
sub $21, %eax
jz y
pushl $f
call printf
addl $4, %esp
jmp en
y:
pushl $t
call printf
addl $4, %esp
en:
ret

아이디어로 사용해보십시오!

참고 : 됩니다 종료 코드가 0이 아니기 때문에 런타임 오류를 반환합니다. 이데온 에디터에서 이것을 실행하면 프로그램의 결론에 관계없이 모든 표준 출력이 표시됩니다.

  • 확실한 출력 :"->Hi, Retina!"
  • 잘못된 출력 :"Bye Retina!"

만족합니다 :

  1. 첫 번째 문자는입니다 ..
  2. 이 포함되어 있습니다 e.
  3. 길이는 짝수입니다.
  4. 길이는 완벽한 정사각형입니다.
  5. 이 포함되어 있습니다 a.
  6. >문자 가 포함되어 있습니다 .
  7. 정확한 문자열을 포함합니다 ->.
  8. 정확한 문자열을 포함합니다 Hi, Retina!.
  9. 처음 두 유니 코드 코드 포인트의 합은 5의 배수입니다.
  10. 10 번째 문자는입니다 ".
  11. 비어 있지 않은 마지막 줄에는 중복 문자가 없습니다.
  12. 첫 번째 줄은 길이> 5의 회문입니다.
  13. 첫 번째 줄의 길이는 정확히 21 자입니다 (줄 바꿈 제외).

향후 답변 :

  • 첫 번째 문자는입니다 ..
  • 길이는 완벽한 정사각형입니다.
  • 정확한 순서를 포함합니다 ->.
  • 정확한 문자열을 포함합니다 Hi, Retina!.
  • 두 번째 문자의 유니 코드 코드 포인트 인 mod 5는 4입니다.
  • 10 번째 문자는입니다 ".
  • 비어 있지 않은 마지막 줄에는 중복 문자가 없습니다.
  • 첫 번째 줄은 길이 = 21의 회문

답변

9. 레티 나 , 16 바이트

.->0`Hi, Retina!

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

자체 프로그램을 사용하려면 두 개의 줄 바꿈으로 구분하여 입력 필드에 추가하면됩니다. (프로그램에 두 개의 줄 바꿈이 포함 된 경우 모든 프로그램과 TIO 헤더에서 구분 기호를 변경해야합니다.)

만족합니다 :

  1. 첫 번째 캐릭터는 .
  2. 그것은 포함 e
  3. 길이는 짝수
  4. 길이는 완벽한 광장입니다
  5. 그것은 포함 a
  6. 그것은 >문자를 포함
  7. 정확한 문자열을 포함합니다 ->.
  8. 정확한 문자열을 포함합니다 Hi, Retina!.

죄송 합니다만, 길이 16으로 패딩하도록 강요했습니다.

중복 요구 사항이없는 경우 :

  • 첫 번째 캐릭터는 .
  • 길이는 완벽한 정사각형입니다.
  • 정확한 순서를 포함합니다 ->.
  • 정확한 문자열을 포함합니다 Hi, Retina!.

설명

시작 .은 괜찮습니다. Retina의 암시 적 출력을 억제한다는 것을 의미합니다 (첫 번째 줄에는 구성이 있지만 두 줄 프로그램은 원하지 않습니다). 즉, 명시적인 출력이 필요하지만 옵션은입니다 >. 운이 좋았습니다. 는 -이 아무것도하지 않기 때문에 그것의 앞에 갈 수 있습니다.

이제 우리는 프로그램 자체에 접근 할 수 있습니다. 가장 간단한 방법은 리터럴 문자열을 일치시키는 것입니다. 그것은 우리의 프로그램에 나타나도록 보장되어 있으며, 우리는 그것이 기존 프로그램의 일부가 아닌지 쉽게 확인할 수 있으며 결과적으로 우리에게 숫자를 제공합니다. 그러나 잠재적으로 1보다 큰 수 (두 개 이상의 다른 값)를 반환 할 수 있습니다. 0-limit를 사용하여 이것을 방지합니다. -limit는 첫 번째 일치 만보고 존재하는 경우 계산합니다. 따라서 0출력은 항상 0또는 1입력이 리터럴 문자열을 포함하는지 여부에 따라 달라집니다.

리터럴 문자열에 관해서는 … 글쎄, 우리는 여전히 eand 를 포함 a해야하며 문자열은 11 자 이상이어야하므로 길이 요구 사항 (짝수 자릿수)을 일치시켜야합니다. Hi, Retina!이러한 요구 사항을 충족시키기 위해 발생합니다.


답변

13. Perl 5 , 64 바이트

.1;";1.
\"Hi, Retina!->";$_=<>;chop;print y///c>5&&reverse
eq$_;

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

만족합니다 :

  1. 첫 번째 문자는입니다 ..
  2. 이 포함되어 있습니다 e.
  3. 길이는 짝수입니다.
  4. 길이는 완벽한 정사각형입니다.
  5. 이 포함되어 있습니다 a.
  6. >문자 가 포함되어 있습니다 .
  7. 정확한 문자열을 포함합니다 ->.
  8. 정확한 문자열을 포함합니다 Hi, Retina!.
  9. 처음 두 유니 코드 코드 포인트의 합은 5의 배수입니다.
  10. 10 번째 문자는입니다 ".
  11. 비어 있지 않은 마지막 줄에는 중복 문자가 없습니다.
  12. 첫 번째 줄은 길이> 5의 회문입니다.

향후 답변 요약 :

  • 첫 번째 문자는입니다 ..
  • 길이는 완벽한 정사각형입니다.
  • 정확한 순서를 포함합니다 ->.
  • 정확한 문자열을 포함합니다 Hi, Retina!.
  • 두 번째 문자의 유니 코드 코드 포인트 인 mod 5는 4입니다.
  • 10 번째 문자는입니다 ".
  • 비어 있지 않은 마지막 줄에는 중복 문자가 없습니다.
  • 첫 번째 줄은 길이가 5보다 큰 회문 ( 문자 )입니다.

검증 루비 스크립트


답변

25, 옥타브 , 196 바이트

새로운 요구 사항 : 탭 대 공백 토론을 피하기 위해 탭을 더 이상 들여 쓰기에 사용할 수 없습니다. 각 줄에는 여전히 탭이 필요하지만 줄의 첫 번째 문자는 될 수 없습니다.

.6;%+->?|"	"|?>-+%;6.
f=@(x)1&&cellfun(@(C)any(C=='	')&1&&find(C=='	')>1,strsplit(x,char(10)));
%	
%	
%	
%	
%	
%	
%Henry Jams?Hi, Retina!	
%	
%	
%	
%	
%	
%	
%	
%	
%	
%	
%	
%	
%	
%	
%	
%	
%	
%	
%	~

모든 프로그램을 온라인으로 확인하십시오!

만족합니다 :

  1. 첫 번째 문자는입니다 ..
  2. 이 포함되어 있습니다 e.
  3. 길이는 짝수입니다.
  4. 길이는 완벽한 정사각형입니다.
  5. 이 포함되어 있습니다 a.
  6. >문자 가 포함되어 있습니다 .
  7. 정확한 문자열을 포함합니다 ->.
  8. 정확한 문자열을 포함합니다 Hi, Retina!.
  9. 처음 두 유니 코드 코드 포인트의 합은 5의 배수입니다.
  10. 10 번째 문자는입니다 ".
  11. 비어 있지 않은 마지막 줄에는 중복 문자가 없습니다.
  12. 첫 번째 줄은 길이> 5의 회문입니다.
  13. 첫 번째 줄의 길이는 정확히 21 자입니다 (줄 바꿈 제외).
  14. 포함합니다 ?.
  15. 포함합니다 |.
  16. 을 포함합니다 +.
  17. 길이는 28 줄 이상입니다.
  18. 다음 문자는 총 5 번 사용됩니다 !"#$.[\]. 두 번째 문자의 코드 포인트는 60보다 작습니다.
  19. Henry Jams?연속 하위 문자열로 포함합니다 .
  20. 마지막 문자는 ~입니다.
  21. 그것은 포함 C
  22. 각 줄에는 탭 문자가 포함됩니다.
  23. 아홉 번째 줄에는 줄 바꿈을 제외한 22 자 이상이 포함됩니다.
  24. 탭 문자는 줄의 첫 번째 문자가 될 수 없습니다

향후 답변 :

  • 첫 번째 문자는입니다 .. 그리고 21 번째 문자도 있습니다 (고장 법).
  • 10 번째 문자는 "이므로 12 번째 문자 (고장 법)입니다.
  • 첫 번째 줄은 길이 21의 회문입니다.
  • 두 번째 문자의 유니 코드 코드 포인트 인 mod 5는 4 이고 해당 코드 포인트는 60보다 작습니다 (인쇄 가능 항목 ',1;6및 탭).
  • 마지막 문자는 ~입니다.
  • 길이는 완벽한 정사각형입니다.
  • 길이는 28 줄 이상입니다.
  • 9 번째 줄은 줄 바꿈을 제외하고 22 자 이상이어야합니다.
  • 비어 있지 않은 마지막 줄에는 중복 문자가 없습니다.
  • 정확한 문자열을 포함 ->, Hi, Retina!하고 Henry Jams?.
  • 그것은 포함하고 |, +하고 C.
  • 각 줄에는 적어도 하나의 탭 문자가 포함되지만 줄의 첫 번째 문자는 될 수 없습니다.
  • 각 프로그램은 이제 2 허용 .하고 2 "첫 줄을, 그리고 !Hi, Retina!. 이 문자는을 사용하지 않고 다른 곳에서는 사용할 수 없습니다 #$[\].

설명:

실제로 각 줄마다 많은 바이트가 필요하기 때문에 이것을 196 바이트로 유지하는 것은 약간 어려웠습니다.

첫 번째 줄은 출력되지 않은 스칼라이며 주석이 이어집니다. 두 번째 줄은 문자열 x을 입력으로 사용하여 다음 작업을 수행 하는 익명 함수입니다 .

strsplit(x,char(10))   % Split at newlines. Can't use a literal newline, or [10,''] due to previous rules
cellfun(@(C) ...     ) % Perform the following operation on each line:
  any(C==' ')          % Make sure there is at least one tab character
  1&&find(C==' ')>1    % Make sure the index is higher than 1
1&&cellfun( ... )     % Check that this is true for all lines.

단락 작업 &&이 우선권을 &가지며 1&&find괄호가 필요하지 않은 것이 운이 좋습니다. 그렇지 않으면 나는 이것을 196 바이트로 골프를 칠 수 없습니다.


답변

5. 파이썬 3 , 64 바이트

.012
import sys
print(len(sys . stdin . read()) ** 0.5 % 1 == 0)

온라인으로 사용해보십시오!
입력 길이가 완벽한 정사각형인지 확인합니다.

여러 줄의 입력을 지원하기 위해 18 개의 답변이 제공 될 때 업데이트되었습니다.

업데이트는 체인을 손상시키지 않습니다.


만족합니다 :

  1. 로 시작 .
  2. 포함 e
  3. 짝수 길이
  4. 완벽한 정사각형 길이

답변

11. JavaScript (ES6), 36 바이트

.11&&(s=>"Hi, Retina!->"&&s[9]=='"')

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

만족합니다 :

  1. 첫 번째 문자는입니다 ..
  2. 이 포함되어 있습니다 e.
  3. 길이는 짝수입니다.
  4. 길이는 완벽한 정사각형입니다.
  5. 이 포함되어 있습니다 a.
  6. >문자 가 포함되어 있습니다 .
  7. 정확한 문자열을 포함합니다 ->.
  8. 정확한 문자열을 포함합니다 Hi, Retina!.
  9. 처음 두 유니 코드 코드 포인트의 합은 5의 배수입니다.
  10. 10 번째 문자는입니다 ".

향후 답변 :

  • 첫 번째 문자는입니다 ..
  • 길이는 완벽한 정사각형입니다.
  • 정확한 순서를 포함합니다 ->.
  • 정확한 문자열을 포함합니다 Hi, Retina!.
  • 두 번째 문자의 유니 코드 코드 포인트 인 mod 5는 4입니다.
  • 10 번째 문자는입니다 ".

답변

23, Literate Haskell , 196 바이트

새로운 요구 사항 : 들여 쓰기가 훌륭하므로 각 줄에는 적어도 하나의 탭 문자가 포함되어야합니다.

.1+C->|  "	"  |>-C+1.

>	main = interact test
>	test s = show (check (lines s))
>	check = all (elem tab)
>	tab = toEnum 9






















	Henry Jams?
	Hi, Retina!
	~

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

만족합니다 :

  1. 첫 번째 문자는입니다 ..
  2. 이 포함되어 있습니다 e.
  3. 길이는 짝수입니다.
  4. 길이는 완벽한 정사각형입니다.
  5. 이 포함되어 있습니다 a.
  6. >문자 가 포함되어 있습니다 .
  7. 정확한 문자열을 포함합니다 ->.
  8. 정확한 문자열을 포함합니다 Hi, Retina!.
  9. 처음 두 유니 코드 코드 포인트의 합은 5의 배수입니다.
  10. 10 번째 문자는입니다 ".
  11. 비어 있지 않은 마지막 줄에는 중복 문자가 없습니다.
  12. 첫 번째 줄은 길이> 5의 회문입니다.
  13. 첫 번째 줄의 길이는 정확히 21 자입니다 (줄 바꿈 제외).
  14. 포함합니다 ?.
  15. 포함합니다 |.
  16. 을 포함합니다 +.
  17. 길이는 28 줄 이상입니다.
  18. 다음 문자는 총 5 번 사용됩니다 !"#$.[\]. 두 번째 문자의 코드 포인트는 60보다 작습니다.
  19. Henry Jams?연속 하위 문자열로 포함합니다 .
  20. 마지막 문자는 ~입니다.
  21. 그것은 포함 C
  22. 각 줄에는 탭 문자가 포함됩니다.

향후 답변 :

  • 첫 번째 줄은 길이 21의 회문입니다.
  • 첫 번째 문자는입니다 .. 그리고 21 번째 문자도 있습니다 (고장 법).
  • 10 번째 문자는 "이므로 12 번째 문자 (고장 법)입니다.
  • 두 번째 문자의 유니 코드 코드 포인트 인 mod 5는 4 이고 해당 코드 포인트는 60보다 작습니다 (인쇄 가능 항목 ',1;6및 탭).
  • 마지막 문자는 ~입니다.
  • 길이는 완벽한 정사각형입니다.
  • 길이는 28 줄 이상입니다.
  • 비어 있지 않은 마지막 줄에는 중복 문자가 없습니다.
  • 정확한 순서를 포함합니다 ->.
  • 정확한 문자열 Hi, Retina!과를 포함합니다 Henry Jams?.
  • 그것은 포함하고 |, +하고 C.
  • 각 줄에는 탭 문자가 포함됩니다.
  • 각 프로그램은 이제 2 허용 .하고 2 "첫 줄을, 그리고 !Hi, Retina!. 이 문자는을 사용하지 않고 다른 곳에서는 사용할 수 없습니다 #$[\].