Befunge Brain Teasers


15

前書き

Befungeとは一体何なのか疑問に思う人にとっては、1993年にChris Pressyによって作成された2次元スタックベースの言語です。Befunge-93で解決する必要がある7つの頭の体操を作りました。これは非常に実験的な挑戦ですが、一見の価値があると思いました:)。Befunge-93で使用されるすべてのコマンドの完全なリストは、ここにあります

遊び方?

タスクは、警官のいない警官と強盗のようなものです。基本的にポイントを獲得するために提出物をクラックしているだけです。すべてのパズルには疑問符が含まれています。これら32 - 127は、空白を含む範囲内の印刷可能なASCII文字に置き換える必要があります。次の例を参照してください。

??????@

出力はでなければならないということhiです。いくつかの不可解な後、解決策があったことがわかります。

"ih",,@

だが!あなた解決策を与えません。それは不正行為の防止のためです。ソリューションを投稿するのではなく、ハッシュを投稿します。ハッシュは次のスニペットで生成されます:

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 -->

スニペットの使用方法は?

  • まず、提出セクションにソリューションを貼り付けます
  • 次に、ユーザー名を入力します(他には何もありません。これは実際に制限時間後に確認されます)
  • 第三に、ハッシュの生成を押してください個人のハッシュを取得します。
  • ハッシュをコピーして提出物に貼り付けます。

パズル

パズル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月10日UTCです。その後、ハッシュがすでに含まれている状態で、完全なソリューションを投稿するのに2日かかります。これらは検証されます:)。

投稿方法

次のスニペットを使用して、投稿を投稿します。

#N solutions:

Puzzle 1: `[hash 1]`

Puzzle 2: `[hash 2]`

etc.

パズルを順番に解く必要はありません。すべてのプログラムはここテストされており、検証に使用されます。

幸運を!


末尾の空白を削除しても大丈夫だと思います(末尾のいずれか?をスペースに置き換えた場合)?
マーティンエンダー

パズルごとにユニークな解決策がありますか?
KSFT

@KSFTソリューションが一意であるかどうかは重要ですか?
マーティンエンダー

@MartinBüttner一意ではなく、誰かが別のソリューションを提供すると、ハッシュは一致しません。
KSFT

@KSFTユーザー名はハッシュの一部であるため、ハッシュはとにかく一致しません。ハッシュの目的は、誰が最初に有効なソリューションを見つけたかを確認することだけです。
マーティンエンダー

回答:


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

"{".  @

本当に簡単です。正しいコードを使用してキャラクターを取得し、2つの空きスペースがある数字として印刷します。

パズル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の末尾のスペースに注意してください。ハッシュの計算時に削除しませんでした。

コードは、最初に1をプッシュしてメインループに入ることで機能します。ループは#2行目のをカウンターとして使用し、#繰り返しごとにa を出力およびプッシュします。その後、改行が印刷されてプッシュされます。次に、指定された文字列がプッシュされます。最後に、コードは印刷ループに入り、スタック上のすべてを逆に印刷します。つまり、文字列、改行、最後に残り#のs を印刷します。

パズル7(スコア3):0881fc2619

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

これはパズル2とほとんど同じですが、ルートが異なり、出力文字が異なり01、最後に追加され、簡単にラップして終了します。


ハハ、私はパズル3と4についてもう少し考えるべきだった。すべてがよさそうだ:)
アドナン

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.