Buat RNG yang hilang


17

Lost adalah bahasa pemrograman 2-D di mana posisi awal dan arah ip sepenuhnya acak.

Ini membuatnya sangat sulit untuk membuat program Lost yang deterministik. Namun hari ini kami tidak menulis program deterministik, kami menulis RNG.

Tulis program yang Hilang yang tidak mengambil input dan output satu digit (0,1,2,3,4,5,6,7,8, atau 9), dengan semua digit memiliki probabilitas yang sama untuk menjadi output. Karena lokasi awal dan arah Lost adalah satu-satunya sumber keacakan, satu-satunya cara untuk melakukan ini adalah memiliki setiap lokasi di sumber Anda menghasilkan angka yang berbeda dari 0 hingga 9 dengan angka yang sama menghasilkan setiap digit.

Anda dapat menghitung probabilitas setiap digit dengan menggunakan -Qflag dan memipakannya ke skrip python ini

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")]

Cobalah online!

Ini adalah sehingga jawaban akan dinilai dalam byte dengan lebih sedikit byte lebih baik.


Ikhtisar Kehilangan

Lost adalah IO 2D pembungkus implisit yang mengambil banyak hal dari cetakan Klein. Berikut ini adalah lembar contekan cepat dari apa yang dilakukan oleh perintah yang hilang

  • \, /, |Mirrors ip

  • <, ^, >, vHai ip dalam arah

  • [Merefleksikan ip jika bergerak ke timur; menjadi ]jika ip bergerak secara horizontal

  • ]Merefleksikan ip jika bergerak ke barat; menjadi [jika ip bergerak secara horizontal

  • ! Melompati operasi selanjutnya

  • ? Muncul dari atas tumpukan dan melompat jika tidak nol

  • : Gandakan bagian atas tumpukan

  • $ Tukar dua item teratas dari tumpukan

  • ( Muncul dari tumpukan dan mendorong ke ruang lingkup

  • ) Muncul dari cakupan dan mendorong ke tumpukan

  • 0- 9mendorong n ke atas tumpukan

  • "Mulai dan akhiri string literal. Selama string, perintah literal tidak dijalankan dan alih-alih nilai karakternya didorong ke stack.

  • + Menambahkan dua angka teratas

  • * Mengalikan dua angka teratas

  • - Kalikan bagian atas dengan -1

  • % Mematikan keamanan

  • # Hidupkan keamanan

  • @ Mengakhiri eksekusi jika keamanan tidak aktif (mulai aktif)


Apa yang terjadi jika Anda mencoba menukar dua nilai dari tumpukan tetapi hanya ada satu nilai atau mencoba muncul dari tumpukan kosong?
pppery

@ppperry Tumpukan diisi dengan nol implisit.
Posting Rock Garf Hunter

1
Informasi tentang bahasa terlalu rendah. Apakah itu membungkus? Apa artinya 'keamanan'? Deskripsi Bracets menyesatkan? Bagaimana ruang lingkup digunakan?
Dead Possum

@DeadPossum saya mencoba untuk membuatnya singkat. Itu membungkus. Keamanan sudah dijelaskan dalam pertanyaan. Saya tidak tahu apa maksud Anda tentang kurung. []bertindak sebagai pintu, <>arahkan ke arah dan ()simpan dan ingat dari ruang lingkup. Lingkup digunakan untuk menyimpan nilai.
Posting Rock Garf Hunter

@WheatWizard Jadi keamanan hanya syarat untuk @atau apakah ada usecases lain? Tentang kurung, saya tidak mengerti bagian ini: becomes ] if the ip is moving horizontally. Bergerak ke timur juga secara horizontal, bukan?
Dead Possum

Jawaban:


12

81 101 byte

Ini mungkin golf lebih lanjut ...

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

Cobalah online!


1
Pendekatan yang menarik! Saya tidak memikirkan itu
Post Rock Garf Hunter

1
101 byte yang memperbaiki cetakan ganda. Baru saja menambahkan tumpukan pop sebelum keselamatan dimatikan jadi jika Anda menekan nomor di awal, itu bisa pop itu, dorong lagi, lalu mati. Saya tidak tahu apakah ini masih secara teknis seragam acak ...
Arnold Palmer

1
Saya benar-benar datang dengan ide yang sama pada saat yang sama ...
pppery

1
Output Anda tidak seragam. 0memiliki peluang 7/101 untuk dicetak (salah satu dari< atau di ^bawah bloknya, ditambah simbol >dan %), 1- 8memiliki peluang 10/101, dan 9memiliki peluang 11/101. Maka sepertinya ada kemungkinan itu hanya berlangsung selamanya.
Arnold Palmer

1
Itu harus membungkus, atau kalau tidak ini akan berakhir ketika mulai pada baris atas naik.
pppery

9

Hilang , 54 byte

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

Cobalah online!

Hanya disalin dari jawaban pppery dan melakukan beberapa hal acak. Saya tidak tahu apa-apa tentang bahasa yang hilang. Dan saya bahkan tidak tahu apa yang terjadi untuk kode di atas. Apakah ini berhasil? (Saya tidak tahu)


Kode Anda menghasilkan output setengah dari jumlah ppperry, saya kira itu karena cara -Qkerjanya? Outputnya sepertinya didistribusikan secara normal. Pasti menyenangkan memiliki spesifikasi lengkap dari bahasa yang ditautkan dalam pertanyaan.
Aaron

@ Harun saya seharusnya menjelaskan cara -Qkerjanya. Karena bahasa ini acak, verifikasi dilakukan dengan menjalankan semua kemungkinan. -Qmelakukan ini dan mencetak semua hasil. Semakin pendek program semakin sedikit kemungkinan yang ada dan semakin sedikit keluaran yang berasal -Q.
Post Rock Garf Hunter
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.