Befunge мозкові тизери


15

Вступ

Для тих, хто цікавиться, що саме Befunge , це двовимірна мова на стеці, зроблена в 1993 році Крісом Прессі. Я зробив 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 -->

Як користуватися фрагментом?

  • Спочатку вставте розчин у розділ подання
  • По-друге, введіть своє ім’я користувача (нічого іншого, це фактично буде підтверджено після закінчення строку)
  • По-третє, натисніть Створити хеш! щоб отримати ваш особистий хеш.
  • Скопіюйте та вставте хеш у свою заявку.

Загадки

Головоломка 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.

Розгадувати загадки не потрібно по порядку. Усі програми були протестовані тут і будуть використовуватися для перевірки.

Удачі!


Я гадаю, що це добре, якщо ми видалимо пробіли пробілів (якщо ми замінимо будь-який ?із пробілів пробілами)?
Мартін Ендер

Ви впевнені, що для кожної головоломки є унікальне рішення?
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

"{".  @

По-справжньому просто, просто знайдіть символу з правильним кодом і роздрукуйте як число, з двома вільними пробілами.

Головоломка 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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.