Wprowadzenie
Dla tych, którzy zastanawiają się, czym dokładnie jest Befunge , jest to dwuwymiarowy język oparty na stosach, stworzony w 1993 roku przez Chrisa Pressya. Zrobiłem 7 łamigłówek, które należy rozwiązać w Befunge-93 . To dość eksperymentalne wyzwanie, ale pomyślałem, że warto spróbować :). Pełna lista wszystkich poleceń używanych w Befunge-93 znajduje się tutaj .
Jak grać?
Zadanie jest trochę jak gliniarze i rabusie bez gliniarzy. To po prostu łamanie zgłoszeń, aby zdobyć punkty. Każda łamigłówka zawiera znaki zapytania. Muszą one zostać zastąpione dowolnym drukowanym znakiem ascii z zakresu 32 - 127
, w tym spacją. Zobacz następujący przykład:
??????@
Biorąc pod uwagę, że wynik musi być hi
. Po kilku zagadkach możemy dowiedzieć się, że rozwiązaniem było:
"ih",,@
Ale! Ty nie dać rozwiązanie. To jest zapobieganie oszustwom. Nie publikujesz rozwiązania, ale skrót . Skrót jest generowany za pomocą następującego fragmentu:
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 -->
Jak korzystać z fragmentu?
- Najpierw wklej rozwiązanie do sekcji przesyłania
- Po drugie, wprowadź swoją nazwę użytkownika (nic więcej, zostanie ona zweryfikowana po upływie terminu)
- Po trzecie, naciśnij Wygeneruj skrót! aby uzyskać swój osobisty skrót.
- Skopiuj i wklej skrót do swojego zgłoszenia.
Łamigłówki
Puzzle 1 (Ocena: 3)
??
??? ?
??????????
@
Dane wyjściowe (zwróć uwagę na końcowe białe znaki):
1 2 3 4 5 6 7 8 9 10
Puzzle 2 (Ocena: 3)
???? ?
??????????
?? ?
@
Wynik:
abcdefghijklmnopqrstuvwxyz
Puzzle 3 (Ocena: 5)
?????????
????? ???
? ?
? ? ? ?
?
? ?
?????? ? ?
? ? ?
? ? @
??????? ?
? ?
???? ??
? ??
Wynik:
Hello World!
Puzzle 4 (Ocena: 2)
??????@
Dane wyjściowe (zwróć uwagę na końcowe białe znaki):
123
Puzzle 5 (Ocena: 5)
?
?????
???@?????
??????
?????????
Wynik:
Befunge
Puzzle 6 (Ocena: 5)
? ? ?
?
??????????
?
?
???????? ??????????????
?????"floG edoC dna selzzuP gnimmargorP "??????
@
Wynik:
###################################
Programming Puzzles and Code Golf
###################################
Puzzle 7 (Ocena: 3)
???? ?????
???????
@???????
Wynik:
012345678910
- To jest wyzwanie kodowe , osoba z największą ilością punktów wygrywa!
- W przypadku remisu wygrywa osoba, która jako pierwsza przesłała wszystkie zgłoszenia.
- Ostatni dzień składania wniosków jest 10 stycznia UTC . Następnie masz 2 dni na opublikowanie pełnego rozwiązania, z hasłami już zawartymi. Zostaną one zweryfikowane :).
Jak publikować?
Użyj następującego fragmentu kodu, aby opublikować swoje zgłoszenie:
#N solutions:
Puzzle 1: `[hash 1]`
Puzzle 2: `[hash 2]`
etc.
Układanie puzzli nie jest konieczne. Wszystkie programy zostały przetestowane tutaj i zostaną wykorzystane do weryfikacji.
Powodzenia!
?
spacje)?Odpowiedzi:
7 rozwiązań, 26 punktów
Piszę to na swoim telefonie, ponieważ obecnie nie mam dostępu do mojego komputera. Właściwie musiałem opracować Puzzle 6 za pomocą pióra i papieru.
Puzzle 1 (wynik 3 ):
4f52d5b243
Ten jest dość prosty. Zdobądź
1
stos, a następnie drukuj pętlę przyrostowo-porównawczą, aż11
trafi.Układanka 2 (Ocena 3 ):
85226eba20
Zasadniczo taki sam jak poprzedni, tylko ze znakami zamiast cyfr. Użyłem innej trasy IP.
Łamigłówka 3 (Ocena 5 ):
1ff5bcb1d9
Tutaj trochę taniej. Wepchnij ciąg do stosu i ręcznie drukuj znaki, nawigując między spacjami. Miałem mnóstwo dodatkowego miejsca, więc zostawiłem większość znaków zapytania. Zwróć uwagę na końcowe spacje w rzędach od 6 do 8, nie usunąłem ich podczas obliczania wartości skrótu.
Puzzle 4 (wynik 2 ):
f8b7bdf741
Naprawdę proste, wystarczy uzyskać znak z poprawnym kodem i wydrukować jako liczbę, z dwoma wolnymi spacjami.
Układanka 5 (Ocena 5 ):
c4db4b6af9
To była dobra zabawa. Może nie działać poprawnie na niektórych interpretatorach z powodu zawijania ciągów i skoków, działa na połączonym. Zasadniczo kod popycha ciąg wyjściowy, a następnie wchodzi do standardowej pętli drukarskiej, owijając się po bokach.
Układanka 6 (Ocena 5 ):
356e912eec
To było „arcydzieło”. I rzeczywiście wziął kartkę papieru i spędził trochę czasu na to. (Właściwie wykonałem dodatkową pracę, tracąc spację w ciągu podczas kopiowania.) Zwróć uwagę na końcowe spacje w rzędzie 4, nie usunąłem ich podczas obliczania skrótu.
Kod działa najpierw poprzez naciśnięcie jednego, aby wejść do głównej pętli. Pętla używa
#
drugiej linii jako licznika, a zarówno drukuje, jak i wypycha a#
przy każdej iteracji. Następnie nowa linia jest drukowana i wypychana. Następnie podany ciąg jest wypychany. Na koniec kod wchodzi w pętlę drukującą, która drukuje wszystko na stosie w odwrotnej kolejności, co oznacza łańcuch, następnie nową linię i na końcu pozostałe#
s.Puzzle 7 (wynik 3 ):
0881fc2619
To prawie tak samo, jak Puzzle 2, ale z inną trasą, różnymi postaciami wyjściowymi, dodatkowym
01
na końcu i szybkim zawijaniem, aby go zakończyć.źródło
4 rozwiązania, 15 punktów
Mam nadzieję, że nie zepsułem końcowych białych znaków podczas generowania skrótów.
Puzzle 1 (wynik 3 ):
de1de4c4c8
Łamigłówka 3 (Ocena 5 ):
071cad0879
Puzzle 4 (wynik 2 ):
531940bc43
Układanka 5 (Ocena 5 ):
5bafaed8e9
źródło