Befunge脑筋急转弯


15

介绍

对于那些想知道Befunge到底是什么的人,它是Chris Pressy在1993年提出的一种基于二维堆栈的语言。我在Befunge-93中做了7个需要解决的难题。这是一个实验性的挑战,但我认为值得一试:)。在Befunge-93中使用的所有命令的完整列表可以在此处找到。

怎么玩?

这项任务有点像没有警察的强盗。基本上是为了获得分数而破解提交内容。每个难题都包含问号。必须将其替换为range 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月10日。之后,您将有2天的时间发布完整的解决方案,其中已包含哈希值。这些将被验证:)。

如何发布?

使用以下代码段发布您的提交:

#N solutions:

Puzzle 1: `[hash 1]`

Puzzle 2: `[hash 2]`

etc.

不必按顺序解决难题。所有程序均已在此处经过测试,并将用于验证。

祝好运!


我想如果我们删除尾随空格就可以了(如果我们?用空格替换了尾随空格)?
Martin Ender'1

您确定每个拼图都有独特的解决方案吗?
KSFT,2013年

@KSFT解决方案是否唯一有关系吗?
马丁·恩德

@MartinBüttner如果它不是唯一的,并且有人提供了不同的解决方案,则哈希将不匹配。
KSFT,2016年

@KSFT哈希将始终不匹配,因为用户名是哈希的一部分。哈希的目的只是为了验证谁首先找到了可行的解决方案。
马丁·恩德

Answers:


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

这几乎与《 Puzzle 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
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.