Вступление
Для тех, кто интересуется, что же такое 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.
Не нужно решать головоломки по порядку. Все программы были протестированы здесь и будут использованы для проверки.
Удачи!
?
пробелов)?Ответы:
7 решений, 26 баллов
Я набираю это на своем телефоне, потому что в настоящее время у меня нет доступа к компьютеру. Я действительно должен был решить Головоломку 6 ручкой и бумагой.
Головоломка 1 (Оценка 3 ):
4f52d5b243
Этот довольно прост. Получить
1
в стеке, затем print-increment-Compare-loop, пока не11
будет достигнут.Головоломка 2 (Оценка 3 ):
85226eba20
В основном так же, как и предыдущий, только с символами вместо цифр. Использовал другой IP-маршрут, хотя.
Головоломка 3 (Оценка 5 ):
1ff5bcb1d9
Здесь я немного подешевел. Вставьте строку в стек и напечатайте символы вручную, перемещаясь по пробелам. У меня было много дополнительного места, поэтому я просто оставил большинство вопросительных знаков. Обратите внимание на конечные пробелы в строках с 6 по 8, я не удалял их при вычислении хэша.
Головоломка 4 (Оценка 2 ):
f8b7bdf741
Действительно просто, просто получите символ с правильным кодом и напечатайте как число, с двумя свободными пробелами.
Головоломка 5 (Оценка 5 ):
c4db4b6af9
Это было весело, чтобы получить право. Может работать некорректно на некоторых интерпретаторах из-за переноса строк и переходов, работает на связанном. По сути, код выдвигает строку вывода и затем входит в стандартный цикл печати, оборачиваясь по бокам.
Головоломка 6 (Оценка 5 ):
356e912eec
Теперь это был «шедевр». Я на самом деле взял листок бумаги и потратил некоторое время на это. (На самом деле, я выполнил некоторую дополнительную работу, пропустив пробел в строке при копировании.) Обратите внимание на конечные пробелы в строке 4, я не удалял их при вычислении хэша.
Код работает, сначала нажимая единицу, чтобы войти в основной цикл. Цикл использует
#
вторую строку в качестве счетчика, и печатает и помещает a#
на каждой итерации. После этого новая строка печатается и толкается. Далее данная строка сдвигается. Наконец, код входит в цикл печати, который печатает все в стеке в обратном порядке, что означает строку, затем новую строку и, наконец, оставшиеся#
s.Головоломка 7 (Оценка 3 ):
0881fc2619
Это почти то же самое, что и «Головоломка 2», но с другим маршрутом, другими выходными символами, дополнительным
01
в конце и быстрой переноской, чтобы закончить его.источник
4 решения, 15 баллов
Я надеюсь, что нигде не испортил конечный пробел при генерации хэшей.
Головоломка 1 (Оценка 3 ):
de1de4c4c8
Головоломка 3 (Оценка 5 ):
071cad0879
Головоломка 4 (Оценка 2 ):
531940bc43
Головоломка 5 (Оценка 5 ):
5bafaed8e9
источник