Terinspirasi oleh ini chatting mini-tantangan.
Diberikan string sebagai input (hanya karakter ASCII yang dapat dicetak), output string dengan huruf "hujan" ke bawah. Setiap huruf harus berupa jumlah acak baris ke bawah (acak antara 0
dan panjang string, masing-masing memiliki probabilitas nol), dan hanya satu karakter per kolom. Semua output yang mungkin harus kembali memiliki probabilitas yang tidak nol terjadi.
Itu mungkin sedikit membingungkan, jadi inilah contohnya (diambil dari CMC itu):
Hello World
d
H
o
llo
l
W
e
r
Perhatikan bagaimana H
satu spasi di bawah, d
nol di bawah, dan llo
semuanya terjadi untuk berbaris. Ini r
adalah yang terjauh ke bawah, pada 9
, tetapi masih kurang dari panjang tali dari atas. Ini hanya satu contoh, ada puluhan kemungkinan input lainnya Hello World
.
Contoh lain dapat berupa:
test
t
e
s
t
PP&CG
& G
P
P C
- Input dan output dapat diberikan dengan metode apa pun yang mudah .
- Input dijamin non-kosong (yaitu, Anda tidak akan pernah menerima
""
sebagai input). - Anda dapat mencetaknya ke STDOUT atau mengembalikannya sebagai hasil fungsi.
- Program lengkap atau fungsi dapat diterima.
- Berapapun ruang kosong ekstranus dapat diterima, asalkan karakternya berbaris dengan benar (mis., Merasa bebas untuk mengisi sebagai persegi panjang).
- Celah standar dilarang.
- Ini adalah kode-golf sehingga semua aturan golf biasa berlaku, dan kode terpendek (dalam byte) menang.
Jawaban:
R , 104 byte
Cobalah online!
Input sebagai string; menulis ke stdout.
sumber
scan(,'')
dan menumpuk banyak panggilan tapi jujur saya lebih suka pendekatan fungsi, yang satu ini mengerikan untuk keuntungan minimal. Mungkin akan memunculkan beberapa ide. Cobalah online!sample(l,,T)
sudah cukup alih-alihsample(l,l,T)
(-1 byte).JavaScript (ES6), 72 byte
Mengambil input sebagai daftar karakter. Mengembalikan matriks karakter.
Cobalah online!
sumber
(0|'A') === (0|undefined)
dan surat-surat yang tersisa tidak akan dijamin lagi muncul di baris terakhir. (Jadi, pada dasarnya, ini seperti|!a[y+1]
dihapus sama sekali.)Math.random()
mengembalikan angka dalam [0, 1), jadi tidak bisaMath.random()<.5
menjadiMath.random()>0
?math.random()
implementasi yang memiliki keadaan internal, dan dengan demikian tidak dapat menghasilkan output yang unik.Pyth - 9 byte
Output daftar garis.
Cobalah online .
sumber
J ,
3019 byteCobalah online!
sumber
0|:]{.~"+_1-#?#
untuk 15 byte0|:]{.~"+_2-#?@##
selama 17 byte tanpa mengubah perilaku jawaban Anda.Japt , 8 byte
-1 byte dari @Shaggy
Cobalah online!
sumber
APL (Dyalog Unicode) , 16 byte SBCS
Fungsi awalan diam-diam anonim
≢
panjang tali1+
satu ditambahkan ke itu≢⍴
"panjang" salinan itu∘?
bilangan bulat acak di kisaran 1 ... itu, dan kemudian ...∘-
negasikan, lalu ...⊢↑¨⍨
ambil dari banyak elemen dari masing-masing karakter, padding di sebelah kiri dengan spasi∘↑
campur daftar string ke dalam matriks, padding dengan spasi di sebelah kanan⍉
mengubah urutanCobalah online!
sumber
Japt , 8 byte
Cobalah
sumber
Jelly , 10 byte
Cobalah online!
sumber
0..(length - 1)
? Pertanyaan menentukan antara 0 dan panjang string. Atau apakah saya melewatkan sesuatu?Ruby ,
595755 byteCobalah online!
Input 1D, menghasilkan array karakter 2D.
sumber
PHP , 88 byte
Cobalah online!
Atau 94 byte menggunakan fungsi integer acak kriptografis PHP .
Cobalah online!
Masukan dari
STDIN
, keluaran keSTDOUT
. Jalankan sebagai:-1 byte (string kosong sebagai ganti spasi) dan +1 byte (err di sisi aturan) thx ke @ ASCII-only!
sumber
<?php
yang?>
ditutup. juga sepertinya tidak apa-apa jika$o
string kosongrand
fungsi PHP , karena Anda dapat memiliki teks input yang memerlukan lebih banyak acak daripada ukuran internal. menggunakan seed rand, jadi secara teknis jawaban Anda gagal memenuhi kondisi ini dalam semua situasirand
tidak berguna banyak, namun semua versi PHP yang didukung / produksi (7.1+) menggunakan Mersenne Twister RND (mt_rand
) secara internal untuk pembuatan angka acak. Apakah kekhawatiran Anda bahwa ini tidak cukup acak untuk tantangan ini?mt_rand
juga menggunakan sistem bilangan acak semu secara internal, dan juga memiliki keterbatasan. Dengan asumsi bahwa PHP dikompilasi dengan angka 64 bit (dan bahwa seed, digunakan untukrand
ataumt_rand
menerima rentang penuh ini) akan menghasilkan output unik untuk kata-kata hingga panjang 13 karakter atau lebih pendek. Cukup membatasi jika Anda bertanya kepada sayaArang ,
109 byteCobalah online! Tautan adalah untuk mengucapkan versi kode. Sunting: Disimpan 1 byte berkat hanya @ ASCII. Penjelasan:
Seperti yang ditunjukkan oleh ASCII saja, Anda dapat memindahkan huruf secara acak ke atas alih-alih ke bawah untuk efek yang sama (kecuali bahwa mungkin ada ruang putih ekstra di bagian bawah daripada bagian atas). Mencetak array karakter ke atas sama dengan mencetak string secara normal, jadi padding kemudian mengimbangi setiap karakter secara vertikal dengan jumlah acak.
sumber
05AB1E (warisan) , 9 byte
Masukan sebagai string atau daftar karakter (baik-baik saja).
Cobalah online.
Alternatif 9-byte yang lebih lambat:
Masukan sebagai daftar karakter.
Cobalah online.
Keduanya menggunakan versi lawas 05AB1E, karena versi baru memerlukan eksplisit
€S
sebelumζ
..Penjelasan:
sumber
gD¸s∍ÝδΩ
itu tetapi lebih lama ... dan ooo ... ini bahkan tidak berhasil di 05AB1E baru;).C (gcc) , 131 byte
Cobalah online!
sumber
R[j=i%l]?32:s[j]));
alih-alihR[j]?32:s[j]))j=i%l;
Julia, 69 byte
Ini mendefinisikan fungsi
f
yang menerima aString
danVector{Char}
dan mengembalikan aMatrix{Char}
.Tidak Disatukan:
Contoh:
Ini pasti bisa lebih baik; keterampilan golf saya cukup berkarat.
Cobalah online!
sumber
Perl 5
-F
,5049 byte-1 oleh @DomHastings
Cobalah online!
sumber
map$_||$",@$_
juga!PowerShell ,
10810298 byte-4 byte berkat mazzy
Cobalah online!
Pada dasarnya iterasi
1..length
string dua kali, sekali untuk mendapatkan lokasi garis acak untuk setiap karakter, dan kedua kalinya untuk benar-benar membangun setiap baris menggunakan indeks tersebut. Mencari tahu bagaimana melakukannya dalam satu sapuan adalah tempat penghematan byte besar.sumber
SmileBASIC 3, 62 byte
sumber
Merah , 84 byte
Cobalah online!
sumber
Python - 92 byte
sumber
import random
from random import*
sebagai gantinya.map(None,...
tidak bekerja di Python 3, jadi Anda harus menentukan Python 2 di judul Anda.K (oK) , 20 byte
Larutan:
Cobalah online!
Penjelasan:
sumber
Python 3 ,
140131 byteCobalah online!
sumber
Python 3, 208 byte
Membuat daftar pilihan acak, lalu membuat daftar kolom dengan ruang kosong di mana-mana kecuali pada indeks yang ditentukan oleh setiap pilihan acak. Kolom ditransformasikan ke dalam baris dan dicetak dengan baris baru di antara mereka.
Cobalah online!
sumber