Befunge Brain Teasers


15

Giới thiệu

Đối với những người tự hỏi Befunge chính xác là gì, đó là một ngôn ngữ dựa trên ngăn xếp hai chiều được thực hiện vào năm 1993 bởi Chris Pressy. Tôi đã thực hiện 7 lời trêu ghẹo não cần được giải quyết trong Befunge-93 . Đây là một thử thách khá thử nghiệm, nhưng tôi nghĩ nó đáng để thử :). Một danh sách đầy đủ của tất cả các lệnh được sử dụng trong Befunge-93 có thể được tìm thấy ở đây .

Chơi như thế nào?

Nhiệm vụ này hơi giống một cảnh sát và kẻ cướp mà không có cảnh sát. Về cơ bản, nó chỉ cần bẻ khóa để có được điểm. Mỗi câu đố chứa các dấu hỏi. Chúng phải được thay thế bằng bất kỳ ký tự ascii có thể in nào trong phạm vi 32 - 127, bao gồm khoảng trắng. Xem ví dụ sau:

??????@

Cho là đầu ra phải được hi. Sau một số khó hiểu, chúng ta có thể tìm ra giải pháp là:

"ih",,@

Nhưng! Bạn không đưa ra giải pháp. Đó là để ngăn chặn gian lận. Bạn không đăng giải pháp, nhưng băm . Hàm băm được tạo với đoạn mã sau:

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

Làm thế nào để sử dụng đoạn trích?

  • Đầu tiên, dán giải pháp vào phần trình
  • Thứ hai, nhập tên người dùng của bạn (không có gì khác, điều này thực sự sẽ được xác minh sau thời gian giới hạn)
  • Thứ ba, nhấn Tạo Hash! để có được băm cá nhân của bạn .
  • Sao chép và dán băm vào trình của bạn.

Các câu đố

Câu đố 1 (Điểm: 3)

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

Đầu ra (lưu ý khoảng trắng theo sau):

1 2 3 4 5 6 7 8 9 10 

Câu đố 2 (Điểm: 3)

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

Đầu ra:

abcdefghijklmnopqrstuvwxyz

Câu đố 3 (Điểm: 5)

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

Đầu ra:

Hello World!

Câu đố 4 (Điểm: 2)

??????@

Đầu ra (lưu ý khoảng trắng theo sau):

123 

Câu đố 5 (Điểm: 5)

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

Đầu ra:

Befunge

Câu đố 6 (Điểm: 5)

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

Đầu ra:

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

Câu đố 7 (Điểm: 3)

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

Đầu ra:

012345678910

  • Đây là , người có nhiều điểm nhất sẽ thắng!
  • Trong trường hợp hòa, người nộp tất cả các bài nộp trước sẽ thắng.
  • Ngày cuối cùng để nộpngày 10 tháng 1 UTC . Sau đó, bạn có 2 ngày để đăng giải pháp đầy đủ, với các băm đã được bao gồm. Những điều này sẽ được xác minh :).

Làm thế nào để gửi bài?

Sử dụng đoạn mã sau để gửi bài đăng của bạn:

#N solutions:

Puzzle 1: `[hash 1]`

Puzzle 2: `[hash 2]`

etc.

Không cần thiết phải giải các câu đố theo thứ tự. Tất cả các chương trình đã được thử nghiệm ở đây và sẽ được sử dụng để xác minh.

Chúc may mắn!


Tôi cho rằng sẽ ổn nếu chúng ta xóa khoảng trắng ở cuối (trong trường hợp chúng ta thay thế bất kỳ dấu nào ?bằng dấu cách)?
Martin Ender

Bạn có chắc chắn có một giải pháp duy nhất cho mỗi câu đố?
KSFT

@KSFT Có vấn đề gì không nếu các giải pháp là duy nhất?
Martin Ender

@ MartinBüttner Nếu nó không phải là duy nhất và ai đó đưa ra một giải pháp khác, thì hàm băm sẽ không khớp.
KSFT

@KSFT Các băm sẽ không khớp, vì tên người dùng là một phần của hàm băm. Mục đích của hàm băm chỉ là để xác minh ai đã tìm ra giải pháp hoạt động trước.
Martin Ender

Câu trả lời:


5

7 giải pháp, 26 điểm

Tôi đang gõ cái này trên điện thoại, vì hiện tại tôi không có quyền truy cập vào máy tính của mình. Tôi thực sự phải làm ra Puzzle 6 bằng bút & giấy.

Câu đố 1 (Điểm 3 ):4f52d5b243

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

Điều này là khá thẳng về phía trước. Nhận một 1ngăn xếp, sau đó in vòng tăng-so sánh-vòng lặp cho đến khi 11được nhấn.

Câu đố 2 (Điểm 3 ):85226eba20

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

Về cơ bản giống như trước đây, chỉ với các ký tự thay vì số. Đã sử dụng một tuyến IP khác nhau mặc dù.

Câu đố 3 (Điểm 5 ):1ff5bcb1d9

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

Ở đây tôi rẻ ra một chút. Đẩy chuỗi vào ngăn xếp và in các ký tự theo cách thủ công, điều hướng qua các khoảng trắng. Tôi có vô số phòng thừa, vì vậy tôi chỉ để lại hầu hết các dấu hỏi. Lưu ý các khoảng trắng ở hàng 6 đến 8, tôi đã không xóa chúng khi tính toán hàm băm.

Câu đố 4 (Điểm 2 ):f8b7bdf741

"{".  @

Thực sự đơn giản, chỉ cần lấy ký tự với mã chính xác và in dưới dạng số, với hai khoảng trống.

Câu đố 5 (Điểm 5 ):c4db4b6af9

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

Đây là một niềm vui để có được đúng. Có thể không hoạt động chính xác trên một số trình thông dịch do chuỗi & nhảy chuỗi, hoạt động trên một trình thông dịch được liên kết. Về cơ bản, mã đẩy chuỗi đầu ra và sau đó đi vào vòng in tiêu chuẩn, gói ở hai bên.

Câu đố 6 (Điểm 5 ):356e912eec

1        v
     #
     v??v_

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

Bây giờ đây là "kiệt tác". Tôi thực sự đã lấy một mảnh giấy và dành thời gian cho việc này. (Trên thực tế, tôi đã thực hiện một số công việc bổ sung bằng cách thiếu khoảng trắng trong chuỗi khi sao chép.) Lưu ý các khoảng trắng ở hàng 4, tôi đã không xóa chúng khi tính toán hàm băm.

Mã này hoạt động bằng cách trước tiên đẩy một cái để vào vòng lặp chính. Vòng lặp sử dụng dòng #trên dòng thứ hai làm bộ đếm và cả in và đẩy a #trên mỗi lần lặp. Sau đó, một dòng mới được in và đẩy. Tiếp theo, chuỗi đã cho được đẩy. Cuối cùng, mã đi vào một vòng lặp in, in mọi thứ trên ngăn xếp theo chiều ngược lại, có nghĩa là chuỗi, sau đó là dòng mới và cuối cùng là #s còn lại .

Câu đố 7 (Điểm 3 ):0881fc2619

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

Điều này gần giống với Câu đố 2, nhưng với một tuyến đường khác, các ký tự đầu ra khác nhau, một bổ sung 01cuối cùng và một gói nhanh để kết thúc nó.


Haha, đáng lẽ tôi nên suy nghĩ lâu hơn một chút cho câu đố 3 và 4. Mọi thứ có vẻ tốt :)
Adnan

3

4 giải pháp, 15 điểm

Tôi hy vọng tôi đã không làm xáo trộn khoảng trắng ở bất cứ đâu khi tạo băm.

Câu đố 1 (Điểm 3 ):de1de4c4c8

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

Câu đố 3 (Điểm 5 ):071cad0879

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

Câu đố 4 (Điểm 2 ):531940bc43

"{".  @

Câu đố 5 (Điểm 5 ):5bafaed8e9

    ^
  v >,,
n"<@,, ,"
 "e"^>,
uge"<^"Bf
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.