ของเล่นพัฒนาสมองของ Befunge


15

บทนำ

สำหรับคนที่สงสัยว่าBefungeคืออะไรมันเป็นภาษาสแต็คสองมิติที่สร้างขึ้นในปี 1993 โดย Chris Pressy ฉันทำ7 ของเล่นพัฒนาสมองที่จะต้องมีการแก้ไขในBefunge-93 นี่เป็นความท้าทายทดสอบ แต่ฉันคิดว่ามันคุ้มค่ากับการยิง :) รายการเต็มรูปแบบของคำสั่งทั้งหมดที่ใช้ใน Befunge-93 สามารถพบได้ที่นี่

วิธีการเล่น?

ภารกิจดังกล่าวเป็นเหมือนตำรวจและโจรโดยไม่ต้องมีตำรวจ มันเป็นเพียงการแตกร้าวส่งเพื่อรับคะแนน ตัวต่อทุกตัวมีเครื่องหมายคำถาม สิ่งเหล่านี้จะต้องถูกแทนที่ด้วยตัวอักษร ASCII ที่พิมพ์ได้ในช่วง32 - 127ที่มีช่องว่าง ดูตัวอย่างต่อไปนี้:

??????@

ป.ร. 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 -->

วิธีใช้ตัวอย่าง

  • ก่อนอื่นให้วางโซลูชันลงในส่วนการส่ง
  • ประการที่สองป้อนชื่อผู้ใช้ของคุณ (ไม่มีสิ่งใดสิ่งนี้จะได้รับการยืนยันจริงหลังจากกำหนดเวลา)
  • ประการที่สามกดสร้าง 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

  • นี่คือผู้ที่มีคะแนนมากที่สุดเป็นผู้ชนะ!
  • ในกรณีที่เสมอกันคนที่ส่งผลงานทั้งหมดก่อนชนะ
  • วันสุดท้ายสำหรับการส่งคือ10 มกราคมเวลา UTC หลังจากนั้นคุณมีเวลา 2 วันในการโพสต์โซลูชั่นแบบเต็มโดยมีแฮชรวมอยู่แล้ว สิ่งเหล่านี้จะได้รับการตรวจสอบ :)

โพสต์อย่างไร

ใช้ตัวอย่างต่อไปนี้เพื่อโพสต์การส่งของคุณ:

#N solutions:

Puzzle 1: `[hash 1]`

Puzzle 2: `[hash 2]`

etc.

ไม่จำเป็นต้องแก้ปริศนาตามลำดับ โปรแกรมทั้งหมดได้รับการทดสอบที่นี่และจะใช้สำหรับการตรวจสอบ

โชคดี!


ฉันคิดว่ามันดีถ้าเราลบช่องว่างต่อท้าย (ในกรณีที่เราแทนที่ส่วนท้าย?ด้วยช่องว่าง)?
Martin Ender

คุณแน่ใจหรือว่ามีวิธีแก้ปัญหาเฉพาะสำหรับแต่ละปริศนา
KSFT

@KSFT มันจะสำคัญไหมถ้าการแก้ปัญหานั้นไม่เหมือนใคร?
Martin Ender

@ MartinBüttnerถ้ามันไม่เหมือนใครและมีใครบางคนให้ทางออกที่แตกต่างแฮชจะไม่ตรงกัน
KSFT

@KSFT แฮชจะไม่ตรงกันเนื่องจากชื่อผู้ใช้เป็นส่วนหนึ่งของแฮช วัตถุประสงค์ของการแฮชนั้นมีไว้เพื่อตรวจสอบว่าใครพบวิธีแก้ปัญหาการทำงานก่อนเท่านั้น
Martin Ender

คำตอบ:


5

7 โซลูชั่น 26 คะแนน

ฉันพิมพ์สิ่งนี้ลงในโทรศัพท์ของฉันเพราะฉันไม่สามารถเข้าถึงคอมพิวเตอร์ได้ในขณะนี้ จริง ๆ แล้วฉันต้องทำงาน Puzzle 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 ฉันไม่ได้ลบออกเมื่อคำนวณแฮช

รหัสทำงานโดยการกดครั้งแรกเพื่อเข้าสู่วงหลัก การวนซ้ำใช้#บนบรรทัดที่สองเป็นตัวนับและทั้งคู่พิมพ์และดัน a #ทุก ๆ การวนซ้ำ หลังจากนั้นบรรทัดใหม่จะถูกพิมพ์และผลักดัน ถัดไปสตริงที่กำหนดถูกผลัก ในที่สุดรหัสจะเข้าสู่ห่วงการพิมพ์ซึ่งพิมพ์ทุกอย่างบนสแต็กในสิ่งที่ตรงกันข้ามซึ่งหมายถึงสตริงจากนั้นขึ้นบรรทัดใหม่และในที่สุดก็เหลือ# s

ปริศนา 7 (คะแนน3 ):0881fc2619

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

นี่เกือบจะเหมือนกับ Puzzle 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.