Befunge Łamigłówki

15

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

Adnan
źródło
Przypuszczam, że jest w porządku, jeśli usuniemy końcowe białe znaki (w przypadku, gdy zastąpimy dowolne końcowe ?spacje)?
Martin Ender
Czy na pewno masz unikalne rozwiązanie dla każdej układanki?
KSFT
@KSFT Czy to ważne, czy rozwiązania są unikalne?
Martin Ender
@ MartinBüttner Jeśli nie jest wyjątkowy i ktoś daje inne rozwiązanie, skrót nie pasuje.
KSFT
@KSFT Skróty i tak nie będą pasować, ponieważ nazwa użytkownika jest częścią skrótu. Celem skrótu jest tylko sprawdzenie, kto pierwszy znalazł działające rozwiązanie.
Martin Ender

Odpowiedzi:

5

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

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

Ten jest dość prosty. Zdobądź 1stos, a następnie drukuj pętlę przyrostowo-porównawczą, aż 11trafi.

Układanka 2 (Ocena 3 ):85226eba20

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

Zasadniczo taki sam jak poprzedni, tylko ze znakami zamiast cyfr. Użyłem innej trasy IP.

Łamigłówka 3 (Ocena 5 ):1ff5bcb1d9

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

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

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

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

1        v
     #
     v??v_

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

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

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

To prawie tak samo, jak Puzzle 2, ale z inną trasą, różnymi postaciami wyjściowymi, dodatkowym 01na końcu i szybkim zawijaniem, aby go zakończyć.

PurkkaKoodari
źródło
Haha, powinienem pomyśleć nieco dłużej nad układanką 3 i 4. Wszystko wygląda dobrze :)
Adnan
3

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

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

Łamigłówka 3 (Ocena 5 ):071cad0879

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

Puzzle 4 (wynik 2 ):531940bc43

"{".  @

Układanka 5 (Ocena 5 ):5bafaed8e9

    ^
  v >,,
n"<@,, ,"
 "e"^>,
uge"<^"Bf
Martin Ender
źródło