Befunge 두뇌 티저


15

소개

Befunge가 정확히 무엇인지 궁금해하는 사람들 에게는 1993 년 Chris Pressy가 만든 2 차원 스택 기반 언어입니다. 나는 Befunge-93 에서 풀어야 할 7 개의 두뇌 티저 를 만들었습니다 . 이것은 상당히 실험적인 도전이지만, 나는 그것이 가치가 있다고 생각했습니다. :). Befunge-93에 사용 된 모든 명령의 전체 목록은 여기 에서 찾을 수 있습니다 .

게임 방법?

임무는 경찰이없는 경찰과 강도와 비슷합니다. 기본적으로 포인트를 얻기 위해 제출물을 크래킹하는 것입니다. 모든 퍼즐에는 물음표가 포함되어 있습니다. 32 - 127공백을 포함 하여 범위 내의 인쇄 가능한 ASCII 문자로 교체해야합니다 . 다음 예를 참조하십시오.

??????@

출력은이어야합니다 hi. 약간의 수수께끼 후, 우리는 해결책이 다음과 같은 것을 알 수 있습니다.

"ih",,@

그러나! 당신 해결책을 주지 않습니다 . 그것은 부정 행위를 방지하기위한 것입니다. 당신은 솔루션을 게시하지 않지만 hash . 해시는 다음 스 니펫으로 생성됩니다.

String.prototype.hashCode = function() { var namevalue = document.getElementById("inputname").value;  var namenumber = 123;for (var character = 0; character < namevalue.length; character++) {namenumber += namevalue.substring(0, 1).charCodeAt(0);}var hash = 123 + namenumber, i, chr, len;if (this.length === 0) {return 0;}for (i = 0, len = this.length; i < len; i++) {chr = this.charCodeAt(i);hash = ((hash << 5) - hash) + chr; hash |= 0; }hash = Math.abs(hash);if ((hash).toString(16).length < 20) {for (var rand = 123; rand < 199; rand++) {hash = hash * rand;if ((hash).toString(16).length >= 20) {  break; }}}return (hash).toString(16).substring(2, 12);};function placeHash() { var pretext = document.getElementById("inputhash").value; var resultinghash = pretext.hashCode(); document.getElementById("resulthash").innerHTML = 'Your hash: <span class="hashtext">' + resultinghash + "</span>";}
p {font-family: monospace;color: black;} .hashtext{color: red;font-weight:bold}
<div class="container"><p>Personal hash generator:<p><textarea id="inputhash" placeholder="Your submission" cols="40" rows="4"></textarea><br><textarea id="inputname" placeholder="Your name" cols="40" rows="1"></textarea><br><button class="hashbutton" onclick="placeHash()">Generate Hash!</button><br><p id="resulthash">Your hash:</p></div><!-- Created by Adnan -->

스 니펫을 사용하는 방법?

  • 먼저 솔루션을 제출 섹션에 붙여 넣습니다.
  • 둘째, 사용자 이름을 입력하십시오.
  • 셋째, Generate Hash! 개인 해시 를 얻습니다 .
  • 해시를 복사하여 제출물에 붙여 넣습니다.

퍼즐

퍼즐 1 (점수 : 3)

 ??
???      ?
??????????
         @

출력 (후행 공백 참고) :

1 2 3 4 5 6 7 8 9 10 

퍼즐 2 (점수 : 3)

 ????    ?
??????????
??       ?
         @

산출:

abcdefghijklmnopqrstuvwxyz

퍼즐 3 (점수 : 5)

  ?????????
    ?????  ???
    ?     ?
    ? ?   ?  ?
          ?
          ?  ?
  ??????  ?  ?
    ?     ?  ?
       ?  ?  @
  ??????? ?
    ?  ?
????  ??
?  ??

산출:

Hello World!

퍼즐 4 (점수 : 2)

??????@

출력 (후행 공백 참고) :

123 

퍼즐 5 (점수 : 5)

    ?
  ?????
???@?????
 ??????
?????????

산출:

Befunge

퍼즐 6 (점수 : 5)

?    ?   ?
     ?
??????????
     ?
     ?
     ????????                         ??????????????
     ?????"floG edoC dna selzzuP gnimmargorP "??????
     @

산출:

###################################
 Programming Puzzles and Code Golf
###################################

퍼즐 7 (점수 : 3)

???? ?????
   ???????
  @???????

산출:

012345678910

  • 이것은 입니다. 포인트가 가장 많은 사람이 이깁니다!
  • 동점 인 경우, 모든 제출물을 먼저 제출 한 사람이 승리합니다.
  • 제출 마지막 날 입니다 년 1 월 세계 협정시 01시 . 그 후에는 해시가 이미 포함 된 전체 솔루션을 게시하는 데 2 ​​일이 걸립니다. 이것들은 검증 될 것입니다 :).

게시하는 방법?

다음 스 니펫을 사용하여 제출물을 게시하십시오.

#N solutions:

Puzzle 1: `[hash 1]`

Puzzle 2: `[hash 2]`

etc.

순서대로 퍼즐을 풀 필요는 없습니다. 모든 프로그램은 여기 에서 테스트 되었습니다 되었으며 검증에 사용됩니다.

행운을 빕니다!


후행 공백을 제거하면 괜찮습니다 (후행을 공백으로 대체하는 경우 ?)?
Martin Ender

각 퍼즐마다 고유 한 솔루션이 있습니까?
KSFT

@KSFT 솔루션이 고유 한가?
마틴 엔더

@ MartinBüttner 고유하지 않고 누군가 다른 솔루션을 제공하면 해시가 일치하지 않습니다.
KSFT

@KSFT 사용자 이름이 해시의 일부이므로 해시는 일치하지 않습니다. 해시의 목적은 누가 먼저 솔루션을 찾은 사람을 확인하는 것입니다.
Martin Ender

답변:


5

7 개 솔루션, 26 포인트

현재 컴퓨터에 액세스 할 수 없으므로 휴대 전화에서이 정보를 입력하고 있습니다. 실제로 펜과 종이로 퍼즐 6을 풀어야했습니다.

퍼즐 1 (점수 3 ) :4f52d5b243

 1v
v:<      <
>.1+:56+-|
         @

이것은 매우 간단합니다. 도착1 인쇄-증가-비교 루프를 때까지, 스택에 11명중한다.

퍼즐 2 (점수 3 ) :85226eba20

 "`"     v
v"z":,:+1<
>-       |
         @

기본적으로 이전 숫자와 동일하지만 숫자 대신 문자가 있습니다. 그래도 다른 IP 경로를 사용했습니다.

퍼즐 3 (점수 5 ) :1ff5bcb1d9

  "!dlroW"v
    >,,,,  ,,v
    ,     "
    , ?      ,
          o
          l   
  ??,???  l   
    ,     e   
       ?  "  @
  ??^,"H" <
    ?  ?
????  ??
?  ??

여기에서 나는 조금 싸졌다. 문자열을 스택으로 밀고 문자를 수동으로 인쇄하여 공백을 탐색합니다. 추가 공간이 많이 생겨서 대부분의 물음표를 남겼습니다. 6 행에서 8 행의 후행 공백에 유의하십시오. 해시를 계산할 때 제거하지 않았습니다.

퍼즐 4 (점수 2 ) :f8b7bdf741

"{".  @

정말 간단합니다. 올바른 코드로 문자를 가져 와서 두 개의 여유 공간이있는 숫자로 인쇄하십시오.

퍼즐 5 (점수 5 ) :c4db4b6af9

    v
  ??"??
#,_@e">>:
 <"B"<^
ung"<^"ef

이것은 재미있는 재미있는 일이었습니다. 줄 바꿈 및 점프로 인해 일부 인터프리터에서 올바르게 작동하지 않을 수 있으며 연결된 인터프리터에서 작동합니다. 기본적으로 코드는 출력 문자열을 푸시 한 다음 표준 인쇄 루프를 시작하여 측면을 감 쌉니다.

퍼즐 6 (점수 5 ) :356e912eec

1        v
     #
     v??v_

     5
      75<^                              p15:-1g15,:*
     >5+:,"floG edoC dna selzzuP gnimmargorP ">:#,_@
     @

이제 이것은 "명작"이었습니다. 나는 실제로 종이 한 장 을 가지고 이것에 시간을 보냈다. (실제로, 복사 할 때 문자열에서 공백을 누락하여 추가 작업을 수행했습니다.) 4 행의 후행 공백에 유의하십시오. 해시를 계산할 때 공백을 제거하지 않았습니다.

코드는 먼저 하나를 눌러 메인 루프로 들어갑니다. 루프는 #두 번째 줄의 카운터를 카운터로 사용하며, #모든 반복마다 인쇄하고 푸시합니다 . 그 후 줄 바꿈이 인쇄되어 푸시됩니다. 다음으로 주어진 문자열이 푸시됩니다. 마지막으로 코드는 인쇄 루프를 시작하여 스택의 모든 내용을 역순으로 인쇄합니다. 즉, 문자열, 줄 바꿈 및 나머지를 의미합니다.# s를 의미합니다.

퍼즐 7 (점수 3 ) :0881fc2619

"0"> :,1+v
   |-":":<
  @>"10",,

이것은 퍼즐 2와 거의 동일하지만 다른 경로, 다른 출력 문자, 01끝에 추가 및 빠른 마무리가 있습니다.


하하, 나는 퍼즐 3과 4에 대해 조금 더 오래 생각했을 것이다. 모든 것이 좋아 보인다 :)
Adnan

3

4 가지 솔루션, 15 점

해시를 생성 할 때 후행 공백을 엉망으로 만들지 않기를 바랍니다.

퍼즐 1 (점수 3 ) :de1de4c4c8

 v
v<       >
>1+:.:9`!|
         @

퍼즐 3 (점수 5 ) :071cad0879

  "!dlroW"v
    >,,,,  ,,v
    ,     "
    ,        ,
          o
          l
    ,     l
    ,     e
          "  @
    ^,"H" <

퍼즐 4 (점수 2 ) :531940bc43

"{".  @

퍼즐 5 (점수 5 ) :5bafaed8e9

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