Buat program kucing, alias program yang mengambil input dan mencetaknya.
... Kecuali, program ini akan secara acak mengambil karakter dari input Anda dan mencetaknya.
Setiap karakter dalam input harus memiliki peluang yang secara umum sama untuk dihapus dengan program, meskipun, karena sulit untuk membuatnya, peluang untuk setiap karakter dapat bervariasi paling banyak 10%.
Program Anda harus mengambil input, lalu menghapus karakter secara acak dari input, lalu mencetak versi itu lagi. (Anda dapat mencetak dengan mengikuti baris baru atau karakter lain jika bahasa Anda harus mencetak baris baru.)
Jika inputnya adalah BOOOWL
, seharusnya tidak menghapus semua Os dengan peluang yang sama: setiap karakter (tidak unik) harus dipertimbangkan, jadi alih-alih setiap O yang digabungkan memiliki peluang 1/5 (misalnya), masing-masing O harus memiliki 1 / 5 kesempatan, jadi, bukannya ada menjadi 1/5 kesempatan BWL
, harus ada 1/5 kesempatan BOWL
, BOOWL
.
Input dibatasi untuk STDIN atau yang setara terdekat.
Setiap karakter harus memiliki minimal 10% dan kesempatan maksimum 30% untuk dihapus.
Peluang setiap karakter harus dihitung secara individual.
Anda dapat menggunakan komponen apa pun dari bahasa Anda yang mendukung tindakan acak, baik itu fungsi atau lainnya.
Output harus melalui STDOUT atau yang setara terdekat. Jika bahasa Anda memiliki STDOUT, jangan output dengan cara lain apa pun. Jika bahasa Anda tidak dapat menampilkan string sebagai teks, gunakan setara terdekat (output array karakter C OK di sini).
Ini kode golf. Kemenangan program terpendek.
BOWL OF SOUP
mungkinkah semuaO
dihapus sekaligus?Output must be through STDOUT, as a text. Do not output a character array.
<- Saya memiliki bahasa yang memungkinkan Anda untuk output array karakter (itu diratakan sebelum output). Apakah itu dilarang? Bagaimana dengan bahasa seperti C, di mana string pada dasarnya adalah array karakter?Jawaban:
Japt
-f
, 2 byteThe
-f
bendera "menjalankan program pada setiap elemen pada input pertama, keluaran array mereka yang mengembalikan nilai truthy."5ö
mengembalikan angka acak antara 0 (inklusif) dan 5 (eksklusif). Seperti JavaScript, 0 salah di Japt.Cobalah
sumber
-f
, pada judul.Python 3 , 63 byte
Cobalah online!
Python 2 ,
6765 byteCobalah online!
Setiap karakter memiliki peluang 20% untuk jatuh.
Pendekatan berbeda, panjangnya sama:
Cobalah online!
sumber
Create a cat program, a.k.a a program that takes an input and prints it.
Arang , 4 byte
Cobalah online! Tautan adalah untuk mengucapkan versi kode. Penjelasan:
Anda dapat menggunakan nomor apapun dari
4
ke10
untuk mendapatkan peluang25%
untuk10%
masing-masing.sumber
Befunge-98 (PyFunge) , 11 byte
Cobalah online!
Setiap karakter memiliki peluang 25% untuk dihapus. Keputusan ini dibuat berdasarkan tiga
?
instruksi.?
mengatur penghitung program ke salah satu dari empat arah, dengan probabilitas yang sama. Dalam hal ini, bungkus atas & bawah kembali ke instruksi yang sama, sehingga kita dapat mengabaikannya sebagai opsi.?
?
?
?
sumber
Oktaf , 23 byte
Menghasilkan array dengan ukuran yang sama dengan input (string dalam Oktaf adalah array karakter), memeriksa setiap angka acak apakah lebih besar dari
0.2
dan kemudian menggunakan pengindeksan logis untuk mengekstraksi karakter pada posisi yang sesuai.Cobalah online!
sumber
Jelly ,
95 byteCobalah online!
Monad yang menggunakan string Jelly sebagai argumennya dan mengembalikan string Jelly yang diproses. Ketika digunakan sebagai program lengkap, secara implisit mencetak hasilnya. Setiap karakter memiliki peluang 20% untuk dihapus.
Penjelasan
sumber
Japt , 3 byte
Setiap karakter memiliki peluang 1 dalam 5 dihapus. The
5
dapat diubah ke apapun antara4
&9
, inklusif, atauA
untuk10
mengubah peluang.Cobalah
sumber
Bahasa Wolfram (Mathematica) , 24 byte
Cobalah online!
Mengambil daftar karakter sebagai input. Setiap karakter memiliki
.2
peluang untuk dihapus.sumber
05AB1E ,
54 byte-1 byte terima kasih kepada @Grimy .
Cobalah online atau jalankan program yang sama 10 kali .
Setiap karakter memiliki perubahan 25% saat dijatuhkan.
Penjelasan:
≠
bisa juga menjadi_
(==0
).sumber
5L
bisa₄
untuk -1 (mengubah peluang dari 20% menjadi 25%, yang masih dapat diterima).MATL , 9 byte
Penjelajahan:
Cobalah online!
sumber
Pyth ,
85 byteCobalah online!
Versi sebelumnya, 8 byte:
Cobalah online!
sumber
Q
akan melempar kesalahan jika inputnya bukan python-esque. Kesalahan misalnya dari[1
ataua/b
.Q
,w
danz
hanya akan bekerja untuk input single-line, jadi opsi terbaik mungkinj.z
Cubix , 20 byte
Cobalah online!
Lebih lama daripada yang saya harapkan karena saya memiliki sejumlah no-op yang sepertinya tidak bisa saya hilangkan. Peluang untuk menjatuhkan karakter adalah 25%. Saya menganggap ini baik-baik saja.
Lihat saja
Penjelasan singkat:
A|A
ini menginisialisasi tumpukan, Masukan semua, pantulkan kembali, Masukan semua (hanya EOI -1);?
pop to of stack, uji untuk EOI (-1)._?@
jika negatif, refleksikan kembali ke tes dan akhiri$D
lompat\
ke setter arah acak.o
output lalu kembali ke loop, satu meleseto
di jalur itu dan langsung ke loop.sumber
APL (dzaima / APL) ,
109 byte SBCSFungsi awalan diam-diam anonim. Setiap karakter memiliki peluang 20% untuk dihapus.
Cobalah online!
5¨
nol untuk setiap karakter?
rentang integer acak 1-5 untuk setiap karakter4≥
Topeng Boolean untuk bilangan bulat yang kurang dari atau sama dengan 4⊢⌿⍨
saring argumen menggunakan topeng itusumber
Retina , 15 byte
Cobalah online! Penjelasan:
Memproses setiap karakter secara individual.
Lakukan penggantian secara acak. Substitusi pertama menghapus karakter, sementara tiga lainnya membiarkannya tidak berubah, sehingga memberikan
25%
kesempatan untuk menghapus karakter. Ini dapat dikurangi seperlunya dengan menambahkan pasangan baris baru.sumber
R ,
3223 byteCobalah online!
Fungsi mengambil vektor karakter sebagai input dan mengembalikan vektor karakter yang diproses. Setiap karakter memiliki peluang 20% untuk dihapus.
Terima kasih kepada @Roland dan @Giueseppe karena membantu menghemat 7 byte, dan @JDL untuk 2 lebih lanjut!
sumber
function(x)x[!rbinom(x,1,0.2)]
function(x)x[rf(x,1,1)>1]
;df(1,1,1)
adalah tentang0.16
yang melakukan trik.rt(x,3)>1
(sekitar 20% kemungkinan)<1
, tapi terima kasih! 2 lainnya disimpan.T-SQL 2012, 83 byte
Looping melalui input dari kanan ke kiri menghapus 0 atau 1 karakter.
Kesempatan 25% untuk setiap karakter dihapus.
Penjelasan:
Cobalah online
sumber
STR
, saya harus ingat itu. Tidak yakin adil untuk membonceng Anda (tidak terhitung)DECLARE
dalam kode (terhitung) Anda; tetapi mengubah itu hanya akan dikenakan biaya 1 byte, karena Anda dapat menghilangkan ekstraSET
denganDECLARE @ INT=len(@i)
J , 10 byte
Cobalah online!
Mirip dengan jawaban APL Adam, meskipun saya benar-benar menulisnya sebelum melihatnya.
6.. $~ #
Ambil panjang input#
dan bentuk$~
angka 6 ke dalam daftar yang panjang.?@
Perlakukan masing-masing enam dalam daftar itu sebagai dadu dan gulung?
.>5
Apakah die kurang dari 5 (nilai yang mungkin adalah 0..5)? Gunakan hasil boolean itu untuk membuat topeng bit.#~
Saring input dengan mask itu.sumber
Perl 5
-p
, 18 byteCobalah online!
Setiap karakter memiliki peluang 20% untuk dijatuhkan.
sumber
Javascript,
464451 byte+7 byte karena persyaratan STDOUT yang ditambahkan
-2 byte terima kasih kepada Birjolaxew
jawaban asli: 44 byte tanpa persyaratan STDOUT
sumber
f=
membuat Anda turun ke 44 byte. Anda juga dapat input / output sebagai array, yang seharusnya menghemat sedikit.join``
artinya Tidak dapat menemukannya di spec (karena saya tidak tahu apa itu)join("")
mdn revelent page
Scala ,
514630 byteCobalah online!
PS. Seperti di banyak solusi lain, probabilitas menjatuhkan char adalah 20%.
Memperbarui:
-5 byte dengan menggunakan String sebagai ganti Option [String] di flatMap
30 byte dengan menggunakan filter
sumber
scala.math.random
kemath.random
dan0.2
ke.2
. Trik yang bagus menggunakan ^ seperti itu.C # (Visual C # Interactive Compiler) , 71 byte
Cobalah online!
sumber
new Random().Next(5)
secara langsung mungkin?new Random().Next(5)
, semua yang akan Anda dapatkan adalah seluruh input atau tidak sama sekali.new Random()
, nilai seed default adalah Environment.TickCount, yang menambah setiap milidetik. Jika mereka semua dibuat dalam centang milidetik yang sama, mereka semua akan memiliki benih yang sama. Jawabannya hanya menggunakan satu contoh Acak, dan ketika itu disebut pembaruan nilai seed internal - jadi setiap kali Next () dipanggil, ia menciptakan nilai output yang berbeda. Net. Namun Core menggunakan RNG singleton untuk menghasilkan benih, sehingga tidak memiliki masalah iniSTDIN
, tetapirestricted to STDIN or closest equivalent
, dan argumen fungsi mungkin setara terdekat, tapi saya tidak akan melakukan ituPHP ,
4342 byteCobalah online!
Setiap karakter memiliki 20% peluang untuk dihapus.
sumber
C (gcc) , 50 byte
Program ini memiliki peluang 20% untuk menjatuhkan surat. Sayangnya generator angka acak tidak diunggulkan sehingga Anda mendapatkan urutan yang sama pada setiap putaran. Pada dasarnya satu-satunya trik adalah membalik karakter input untuk menghentikan loop pada EOF.
Cobalah online!
C (gcc) ,
6459 byteBerkat ceilingcat untuk -5 byte.
Jika Anda ingin RNG diunggulkan di setiap putaran.
Cobalah online!
sumber
main()
untuk pengiriman Code Golf, Anda juga dapat mendefinisikan fungsi arbitrer yang melakukan apa yang diperlukan. Jadi kamu bisa menulisf(c){...}
.Lua ,
6968 byteCobalah online!
Agak langsung, tetapi tampaknya versi terpendek: iterate over stdin char oleh char (dengan
io.lines
... nama itu menyesatkan), kemudian berdasarkan nilai acak baik cetak satu atau string kosong (misalnya tidak ada).sumber
Jawa
Non-terminating: 82 byte
Terminating (TIO): 105 byte
sumber
s->s.filter(c->Math.random()<.2)
itu juga.Input is restricted to STDIN or closest equivalent.
danOutput must be through STDOUT or the closest equivalent. If your language does have STDOUT, do not output in any other way.
Jadi tidak, jawaban itu tidak validZsh ,
5341 byte-12 , terima kasih untuk GammaFunction
41 byte: coba online!
Mengonversi input ke array karakter, lalu mencoba untuk mencetak setiap elemen
c
, kecuali jika dimakan oleh((RANDOM%4))
evaluasi menjadi false!53 byte: coba online!
Iterasi yang lebih mudah, tetapi verbose, melebihi panjang string.
sumber
\c
, saya tidak akan ingat itu! Masih ada beberapa optimasi yang harus dilakukan ...RANDOM
dan konversi arrayZsh , 50 byte
Cobalah online!
Mirip dengan jawaban RobLogic, tetapi mengikuti persyaratan input lebih dekat, dan bekerja untuk input dengan garis miring terbalik.
"$(<&0)"
bukannya"<&0"
atau$(<&0)
karena yang pertama tidak berfungsi dalam pergantian, dan yang kedua makan baris baru. The-nE
bendera diperlukan untuk mencegah backslashes dari yang diuraikan sebagai escape sequence, dan untuk mencegah baris yang dimasukkan.echo -nE
sumber
MathGolf , 5 byte
Cobalah online!
Penjelasan
Setiap karakter akan diulang 0 atau 1 kali, tergantung pada nilai acak. Karena nilai yang diharapkan setelah akar kuadrat digeser, ada kemungkinan 25% bahwa setiap karakter dihapus.
Alternatif 5-byter
Saring karakter dengan angka acak dalam [0, 4]. Karena cara kerja penyaringan, saya harus membuang karakter aktual dalam loop filter, yang menambahkan 1 byte.
sumber
GFortran , 120 byte
Tidak terlalu buruk, jika kita menggunakan
RAN()
fungsi yang sudah tidak digunakan lagi , yaitu pseudo -random, yaitu Anda mendapatkan urutan yang sama setiap kali. Cara yang tepat untuk menghasilkan angka acak di GFortran adalah denganCALL RANDOM_SEED()
danCALL RANDOM_NUMBER(R)
tapi itu banyak byte!Cobalah online!
sumber
Oracle SQL, 133 byte
Ia bekerja dengan asumsi bahwa data input disimpan dalam tabel t (x), misalnya
sumber