Befunge Zeka Oyunları


15

Giriş

Befunge'nin tam olarak ne olduğunu merak edenler için, 1993 yılında Chris Pressy tarafından yapılan iki boyutlu yığın tabanlı bir dildir. Befunge-93'te çözülmesi gereken 7 zeka oyunu yaptım . Bu oldukça deneysel bir meydan okuma, ama denemeye değer olduğunu düşündüm :). Befunge-93'te kullanılan tüm komutların tam bir listesini burada bulabilirsiniz .

Nasıl oynanır?

Görev biraz polis olmayan bir polis ve soyguncular gibidir. Sadece puan almak için başvuruları çatlamak. Her bulmaca soru işaretleri içerir. Bunlar, aralıkta 32 - 127boşluk içeren herhangi bir yazdırılabilir ascii karakteri ile değiştirilmelidir . Aşağıdaki örneğe bakın:

??????@

Verilen çıktı olması gerekir hi. Biraz kafa karıştırdıktan sonra, çözümün şu olduğunu öğrenebiliriz:

"ih",,@

Fakat! Sen yok çözümünü verir. Bu hile önlemek için. Çözümü göndermiyorsunuz , ama hash . Karma, aşağıdaki snippet ile oluşturulur:

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

Parçacığı nasıl kullanılır?

  • İlk olarak, çözümü gönderim bölümüne yapıştırın
  • İkinci olarak, kullanıcı adınızı girin (başka hiçbir şey, bu aslında zaman sınırından sonra doğrulanacaktır)
  • Üçüncü olarak, Hash Oluştur! kişisel karma elde etmek için .
  • Karmayı kopyalayıp gönderiminize yapıştırın.

Bulmacalar

Puzzle 1 (Puan: 3)

 ??
???      ?
??????????
         @

Çıktı (sondaki boşluklara dikkat edin):

1 2 3 4 5 6 7 8 9 10 

Puzzle 2 (Puan: 3)

 ????    ?
??????????
??       ?
         @

Çıktı:

abcdefghijklmnopqrstuvwxyz

Bulmaca 3 (Puan: 5)

  ?????????
    ?????  ???
    ?     ?
    ? ?   ?  ?
          ?
          ?  ?
  ??????  ?  ?
    ?     ?  ?
       ?  ?  @
  ??????? ?
    ?  ?
????  ??
?  ??

Çıktı:

Hello World!

Puzzle 4 (Puan: 2)

??????@

Çıktı (sondaki boşluklara dikkat edin):

123 

Bulmaca 5 (Puan: 5)

    ?
  ?????
???@?????
 ??????
?????????

Çıktı:

Befunge

Bulmaca 6 (Puan: 5)

?    ?   ?
     ?
??????????
     ?
     ?
     ????????                         ??????????????
     ?????"floG edoC dna selzzuP gnimmargorP "??????
     @

Çıktı:

###################################
 Programming Puzzles and Code Golf
###################################

Bulmaca 7 (Puan: 3)

???? ?????
   ???????
  @???????

Çıktı:

012345678910

  • Bu , en fazla puanı olan kişi kazanır!
  • Beraberlik durumunda, önce tüm gönderimleri gönderen kişi kazanır.
  • Sunulması için son gün olan 10 Ocak UTC . Bundan sonra, tam çözümü yayınlamak için 2 gününüz var ve karma zaten dahil. Bunlar doğrulanacaktır :).

Nasıl gönderilir?

Gönderinizi göndermek için aşağıdaki snippet'i kullanın:

#N solutions:

Puzzle 1: `[hash 1]`

Puzzle 2: `[hash 2]`

etc.

Bulmacaları sırayla çözmek gerekli değildir. Tüm programlar burada test edilmiştir ve doğrulama için kullanılacaktır.

İyi şanslar!


Sondaki boşlukları kaldırmamızın iyi olacağını düşünüyorum (sondaki boşlukları boşluklarla değiştirirsek ?)?
Martin Ender

Her bulmaca için benzersiz bir çözüm olduğundan emin misiniz?
KSFT

@KSFT Çözümlerin benzersiz olup olmadığı önemli mi?
Martin Ender

@ MartinBüttner Benzersiz değilse ve birisi farklı bir çözüm sunuyorsa, karma eşleşmez.
KSFT

@KSFT Karma her durumda eşleşmez, çünkü kullanıcı adı karma öğenin bir parçasıdır. Karma işleminin amacı, ilk önce çalışan bir çözümü kimin bulduğunu doğrulamaktır.
Martin Ender

Yanıtlar:


5

7 çözüm, 26 puan

Bunu telefonuma yazıyorum çünkü şu anda bilgisayarıma erişimim yok. Aslında Puzzle 6 kalem ve kağıt ile çalışmak zorunda kaldı.

Yapboz 1 (Puan 3 ):4f52d5b243

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

Bu oldukça basittir. 1Yığında bir tane alın , ardından 11isabet edilene kadar print-increment-Compare-loop .

Yapboz 2 (Puan 3 ):85226eba20

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

Temelde öncekiyle aynı, sadece sayılar yerine karakterlerle. Yine de farklı bir IP yolu kullanıldı.

Bulmaca 3 (Puan 5 ):1ff5bcb1d9

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

Burada biraz ucuzladım. Dizeyi yığına itin ve boşluklarda gezinerek karakterleri manuel olarak yazdırın. Ben fazladan oda bir sürü vardı, bu yüzden soru işaretlerinin çoğunu bıraktım. 6 ila 8 arasındaki satırlardaki boşlukları not edin, hash hesaplarken bunları kaldırmadım.

Bulmaca 4 (Puan 2 ):f8b7bdf741

"{".  @

Gerçekten basit, sadece doğru kodla karakteri alın ve iki boş alan ile bir sayı olarak yazdırın.

Bulmaca 5 (Puan 5 ):c4db4b6af9

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

Bu doğru almak için eğlenceli biriydi. Bazı yorumlayıcılarda dizeler ve atlamalardan dolayı düzgün çalışmayabilir, bağlantılı olan üzerinde çalışır. Temel olarak, kod çıkış dizesini iter ve sonra yanlara sarılarak standart yazdırma döngüsüne girer.

Bulmaca 6 (Puan 5 ):356e912eec

1        v
     #
     v??v_

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

Şimdi bu "şaheser" idi. Aslında bir parça kağıt aldım ve bunun için biraz zaman geçirdim. (Aslında, kopyalama sırasında dizede boşluk eksik bazı ekstra iş yaptım.) 4. satırda sondaki boşlukları not edin, hash hesaplarken bunları kaldırmadım.

Kod, önce ana döngüye girmek için bir tane iterek çalışır. Döngü #, ikinci satırdaki sayacı bir sayaç olarak kullanır ve #her yinelemeye hem yazdırır hem de a iter . Bundan sonra yeni satır yazdırılır ve itilir. Ardından, verilen dize itilir. Son olarak kod, yığındaki her şeyi tersine yazdıran bir yazdırma döngüsüne girer, bu da dize, daha sonra satırsonu ve son olarak kalan #s anlamına gelir .

Puzzle 7 (Puan 3 ):0881fc2619

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

Bu neredeyse Puzzle 2 ile aynıdır, ancak farklı bir rota, farklı çıkış karakterleri, 01sonunda bir ek ve bitirmek için hızlı bir sargı ile.


Haha, yapboz 3 ve 4 için biraz daha uzun düşünmeliydim. Her şey güzel görünüyor :)
Adnan

3

4 çözüm, 15 puan

Umarım hashleri ​​oluştururken hiçbir yerde boşluk bırakmazdım.

Yapboz 1 (Puan 3 ):de1de4c4c8

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

Bulmaca 3 (Puan 5 ):071cad0879

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

Puzzle 4 (Puan 2 ):531940bc43

"{".  @

Bulmaca 5 (Puan 5 ):5bafaed8e9

    ^
  v >,,
n"<@,, ,"
 "e"^>,
uge"<^"Bf
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.