Kayıp bir RNG yapın


17

Lost , ipin başlangıç ​​konumu ve yönünün tamamen rastgele olduğu 2 boyutlu bir programlama dilidir.

Bu, deterministik Kayıp programların yapılmasını çok zorlaştırır. Ancak bugün deterministik bir program yazmıyoruz, bir RNG yazıyoruz.

Herhangi bir girdi almayan ve tek bir basamak (0,1,2,3,4,5,6,7,8 veya 9) vermeyen bir Kayıp programı yazın; tüm basamaklar eşit çıktı alma olasılığına sahiptir. Lost'un başlangıç ​​konumu ve yönü tek rastgelelik kaynağı olduğundan, bunu yapmanın tek yolu, kaynağınızdaki her konumun her basamağı eşit bir sayı ile 0'dan 9'a kadar farklı bir sayıya çıkarmasıdır.

Her basamağın olasılığını -Qbayrağı kullanarak ve bu python komut dosyasına ekleyerek hesaplayabilirsiniz

import sys
a=sys.stdin.read().split()[:-1]
for x in range(10):print x,':',a.count(`x`)
print[x for x in a if x not in list("1234567890")]

Çevrimiçi deneyin!

Bu bu nedenle cevaplar daha az bayt daha iyi olacak şekilde bayt cinsinden puanlanır.


Lost'a genel bakış

Lost, Klein'ın kalıbından çok şey alan bir örtülü örtülü IO 2D dilidir. İşte kayıp komutların hızlı bir hile sayfası

  • \, /, |Aynalar ip

  • <, ^, >, vBir yönde ip Puan

  • [Doğuya hareket ediyorsa ipi yansıtır; olur ]ip yatay hareket ediyorsa

  • ]Batıya hareket ediyorsa ipi yansıtır; olur [ip yatay hareket ediyorsa

  • ! Bir sonraki işlemi atlar

  • ? Yığının üstünden çıkar ve sıfır değilse atlar

  • : Yığının üstünü çoğaltır

  • $ Yığının ilk iki öğesini değiştirir

  • ( Yığından çıkar ve kapsama doğru iter

  • ) Kapsamdan çıkar ve yığına doğru iter

  • 0- 9n'yi yığının üstüne iter

  • "Bir dize hazır bilgisini başlatır ve bitirir. Bir dize sırasında değişmez komutlar çalıştırılmaz ve karakter değerleri yığına itilir.

  • + İlk iki sayıyı ekler

  • * İlk iki sayıyı çarpar

  • - Üstü -1 ile çarpar

  • % Güvenliği kapatır

  • # Güvenliği açar

  • @ Güvenlik kapalıysa yürütmeyi sonlandırır (açıktır)


Yığından iki değeri değiştirmeye çalışırsanız, ancak yalnızca bir değer varsa veya boş bir yığından çıkmaya çalışırsanız ne olur?
pppery

@ppperry Yığın üstü sıfırlarla doldurulur.
Rock Garf Hunter Post

1
Dil hakkında çok düşük bilgi. Sarıyor mu? 'Güvenlik' ne demektir? Bracets açıklaması yanıltıcı mı? Kapsam nasıl kullanılır?
Dead Possum

@DeadPossum Kısa ve öz tutmaya çalıştım. Sarıyor. Güvenlik soruda zaten açıklanmıştır. Köşeli parantezler hakkında ne demek istediğini bilmiyorum. []kapılar olarak hareket eder, <>yönleri gösterir ve ()kapsamdan saklar ve çağırır. Kapsam değerleri saklamak için kullanılır.
Rock Garf Hunter Post

@WheatWizard Güvenlik sadece şart @mıdır yoksa başka kullanımları mı var? Parantez hakkında, bu bölümü anlamıyorum: becomes ] if the ip is moving horizontally. Doğuya taşınmak da yataydır, değil mi?
Dead Possum

Yanıtlar:


12

81 101 bayt

Bu daha fazla golf olabilir ...

>%(0@>%(1@>%(2@>%(3@>%(4@>%(5@>%(6@>%(7@>%(8@>%(9@
^<<<<^<<<<^<<<<^<<<<^<<<<^<<<<^<<<<^<<<<^<<<<^<<<<

Çevrimiçi deneyin!


1
İlginç bir yaklaşım! Bunu düşünmemiştim
Post Rock Garf Hunter

1
Çift baskıyı sabitleyen 101 bayt . Güvenlik kapatılmadan önce bir yığın pop ekledim, böylece başlangıçtaki sayıya vurursanız, pop yapabilir, tekrar itebilir, sonra ölür. Bunun teknik olarak tek tip rastgele olup olmadığını bilmiyorum ...
Arnold Palmer

1
Kelimenin tam anlamıyla aynı fikirle aynı anda
geldim

1
Çıktınız aynı değil. 07/101 basma şansına sahip ( bloğundan herhangi biri <veya ^altında, artı >ve %simgesi), 1- 810/101 şansı var ve 11/101 şansı 9var. Öyleyse, sonsuza kadar devam etme şansı olabilir gibi görünüyor.
Arnold Palmer

1
Sarmak zorunda, aksi takdirde üst satırda başladığında bu sona erer.
pppery

9

Kayıp , 54 bayt

>%(0@>%(1@
@>%(2@>%(3
5@>%(4@>%(
(7@>%(6@>%
%(9@>%(8@>

Çevrimiçi deneyin!

Sadece pppery'nin cevabından kopyalandı ve rastgele şeyler yap. Kayıp dil ​​hakkında hiçbir şey bilmiyorum. Ve yukarıdaki kodlar için ne olduğunu bile bilmiyorum. Bu iş mi? (Bilmiyorum)


Kodunuzu ppperry en yarısı kadar üretir, sanırım bu nasıl -Qçalışır nedeniyle ? Çıktı normalde yine de dağıtılmış gibi görünüyor. Soruda bağlantılı dilin tam bir spesifikasyonuna sahip olmak güzel olurdu.
Aaron

@Aaron Nasıl -Qçalıştığını açıklamalıydım. Dil rastgele olduğu için, doğrulama tüm olasılıklar çalıştırılarak yapılır. -Qbunu yapar ve tüm sonuçları yazdırır. Program ne kadar kısa olursa, olasılıklar o kadar az olur ve daha az çıktı gelir -Q.
Post Rock Garf Hunter
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.