Дразнить мозг

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

Как использовать фрагмент?

  • Сначала вставьте решение в раздел представления
  • Во-вторых, введите свое имя пользователя (больше ничего, это на самом деле будет проверено после определенного срока)
  • В-третьих, нажмите 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

  • Это , выигрывает человек с наибольшим количеством очков!
  • В случае ничьей побеждает тот, кто первым подал все заявки.
  • Последний день для представления является 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в стеке, затем print-increment-Compare-loop, пока не 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",,

Это почти то же самое, что и «Головоломка 2», но с другим маршрутом, другими выходными символами, дополнительным 01в конце и быстрой переноской, чтобы закончить его.

PurkkaKoodari
источник
Ха-ха, я должен был подумать над загадкой 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
Мартин Эндер
источник