Baru saja melakukan pembicaraan 'bersemangat' dengan rekan kerja tentang ringkasnya pernyataan BASIC berikut:
10 PRINT CHR$(205.5+RND(1)); : GOTO 10
Ini adalah judul buku ini , dan hanya akan mencetak urutan /
dan \
karakter, bergantian antara keduanya secara acak, menghasilkan pola yang mirip dengan ini:
(Gambar dipinjam dari http://www.flickr.com/photos/rndmcnlly/5058442151/sizes/o/in/in/photostream/ )
Menjadi sebuah kecenderungan PHP, kami bertanya-tanya seperti apa cara paling ringkas menulis hal yang sama di PHP, dan muncul dengan ini:
while(1) { echo chr(47 + 45 * rand(0,1)); }
chr(47)
adalah /
karakter, dan chr (92) adalah a \
. Jadi pernyataan echo chr(47 + 45 * rand(0,1));
itu secara acak akan menjadi alternatif di antara keduanya, ad nauseum.
Dalam bahasa yang Anda pilih, tulislah program atau fungsi terpendek untuk menghasilkan urutan acak \
dan /
karakter yang tak terbatas , di mana setiap karakter memiliki probabilitas yang sama untuk dipilih.
{}
kawat gigi, tapi itu se-ringkas mungkin.Jawaban:
The
goto
Operator telah ditambahkan ke PHP dari versi 5.3.0 sehingga Anda bisa menggunakan metode yang sama seperti yang Anda lakukan di BASIC:sumber
Karena ini telah dimigrasikan ke codegolf ...
PHP 30 byte
The
Ð
karakter 208, dan£
karakter 163.Penggunaan sampel (pada kotak Windows):
Menghasilkan sesuatu yang mirip dengan:
Ini berfungsi paling baik dengan font monospace yang persis persegi (di sini saya telah memilih font sistem standar 8x8). Untuk kembali ke warna default Anda, Anda dapat mengetik
color
lagi tanpa parameter apa pun.sumber
rand()%2
(tidak ada yang menyatakan betapa pseudo-acak itu) - Juga tidak bekerja pada terminal Unicode (seperti OSX)rand()%2
akan bergantian antara nol dan satu.mt_rand()%2
akan bekerja, namun.Mathematica 157 byte
Karena tidak memiliki PETSCII, saya menggulirkan "\" dan "/" saya sendiri.
Tidak ada cerutu untuk singkatnya di sini.
sumber
Brainfuck - 534
Prng saya (dari sini ) besar dan sangat lambat. Mungkin LFSR yang lebih sederhana atau sejenisnya sudah cukup, tetapi ini berfungsi:
sumber
C, 39 karakter (38 pada MSVC)
Lihat berlari.
Pada MSVC, kita bisa mengganti
putchar()
dengan_putch()
dan menyimpan byte, tetapi tidak berfungsi di IDEOne.sumber
Common Lisp, 33
sumber
print
memiliki nilai pengembalian 1, jadi jika Anda menggunakannya, Anda dapat membungkus seluruh ekspresi dalamwhile
:while(print chr(47 + 45 * rand(0,1));
Anda mungkin bisa bermain golf lebih jauh juga.
sumber
ruby,
2723 karakter$><<
is 'print to stdout'.sumber
"/\\"
dengan'\/'
. Ruby 1.8 mengharuskan[rand(2),1]
untuk menghasilkan karakter, bukan kode ascii.C ++, 45 Chars
Tidak akan memenangkan penghargaan karena kekurangan, tetapi saya sudah menulis ini ketika saya mendengar tentang buku yang disebutkan, jadi saya hanya bermain golf.
Trik putchar juga berfungsi di C ++, membuat Anda turun ke 43, tetapi Anda tidak bisa menghindari mendeklarasikan tipe pengembalian di main.
sumber
Saya mencoba membuat menggunakan gaya css, dan itu berhasil
kode php ini:
sumber
font-family: courier; line-height: 0.75em; letter-spacing: -0.25em;
Menggunakan-0.25em
spasi huruf sepertinya lebih cocok daripada-3px
, yang memiliki artefak karena tidak eksakpt
denganpx
konversi.Gangguan Umum - 68
sumber
do
.05AB1E , 7 byte
Cobalah online!
sumber
Befunge-98 (PyFunge) , 7 byte
Cobalah online!
yang
?
mengirimkan IP baik kiri atau kanan, sehingga baik/
atau\
didorong sebelum mencetak dengan,
. Ketika menjalankan'/
atau\'
dalam urutan yang salah setelah mencetak, itu hanya melakukan hal-hal ke tumpukan (membagi atau menukar), dan kemudian mendorong karakter yang tidak relevan sebelum mengulangi.sumber
Befunge,
12987 BytesSunting: James Holderness menemukan solusi gila yang menggunakan tiga kutipan sebagai gantinya.
Melimpahkan tumpukan dengan banyak karakter berlebih untuk setiap simbol, tetapi siapa yang peduli kapan Anda bisa melakukan golf 1 byte itu?
Versi lama
(Perhatikan trailing space)Trailing space tampaknya tidak diperlukan (terima kasih Mistah Figgins)Cobalah secara Online
Ini mulai mengisi tumpukan, dengan satu simbol tambahan untuk setiap simbol yang dicetak.
sumber
#
ada di akhir baris. Ini bukan perilaku yang konsisten, tetapi penerjemah yang Anda gunakan memungkinkannya: tio.run/##S0pNK81LT/3/X0k/RsneTkf5/38A"
, tetapi upaya saya sia-sia. Karena Anda memerlukan satu/
di sisi"
, Anda harus membagi separuh waktu.<
setelah#
untuk membuatnya bekerja.'
sebagai gantinya. Cobalah online!?\","/"
Satunya downside itu akan meluap tumpukan lebih cepat saya pikir.Tidak jauh lebih baik. Membutuhkan php 5.5+ untuk fitur array dereferencing.
sumber
while(1)echo'/\\'[rand(0,1)];
.Python, 68
Dalam kategori "bahasa saya payah di ini", kami punya Python!
Terima kasih kepada Ivo untuk beberapa karakter pada impor dan
choice
.sumber
> <> , 14 byte
Saya berharap saya bisa membatasi ke 3 * 3 persegi tetapi tidak berhasil.
Anda bisa mencobanya di sini .
sumber
Cubix , 12 byte
Lihat di penerjemah online!
Ini memetakan ke jaring kubus berikut:
Penjelasan
Mendirikan:
IP mulai menuju ke timur pada awalnya
!
. Ini adalah perintah 'lewati jika benar', yang salah ketika tidak ada apa pun di stack, jadi tidak ada perintah yang dilewati."/\"
memasuki stringmode dan menambahkan dua kode karakter ini ke stack.B!o
sebagian besar no-op di sini, hanya membalikkan tumpukan.IP sekarang berputar kembali ke yang pertama
!
. Namun, sekarang ada bilangan bulat positif pada tumpukan, jadi yang pertama"
dilewati. Ini berarti/
bukan lagi karakter, tetapi cermin, mengirim IP utara ke loop utama.Loop Utama:
Itu
D
perintah adalah satu-satunya sumber keacakan di Cubix. Ini mengirim IP dalam arah acak. Dengan memblokir Selatan dan Timur dengan panah, kami memastikan IP memiliki peluang 50% untuk menuju Utara, dan 50% peluang untuk menuju Barat.Jika mengarah ke Barat, tumpukan terbalik. Jika mengarah Utara, karakter teratas dicetak.
Ini menciptakan urutan tebasan acak, seperti yang diinginkan.
sumber
PHP,
2631 bytedelapantiga byte lebih pendek dari milik Anda (tanpa spasi atau kawat gigi),.dua byte lebih pendek dari solusi primo (tanpa tag)
PHP 5.4.9 adalah versi saat ini pada bulan Desember 1012, jadi ...
membutuhkan PHP 5.5 atau lebih baru untuk pengindeksan string literal.Jalankan dengan
-r
atau coba online .sumber
rand()&1
membangun PHP untuk Windows. Anda mungkin akan terkejut.SmileBASIC, 20 byte
sumber
PowerShell ,
108908654533736 byteCobalah online!
sumber
for
juga membuatwhile
sedikit lebih pendekJava 8,
60595453 byte-1 byte berkat @BenjaminUrquhart dengan mengganti
print
denganwrite
, sehingga'/'
dapat47
.Penjelasan:
Cobalah online (waktu habis setelah 60 detik).
sumber
c->{for(;;)System.out.print(Math.random()<.5?'/':92);}
( 54 byte ) Atau maksud Anda Java 7 lebih panjang dari Java 8? Dalam hal ini Anda memang benar.System.out.write
dan mengganti'/'
dengan47
JavaScript (Node.js) ,
595554 byteJawaban Asli
-4 byte berkat manatwork
-1 byte terima kasih kepada Conor O'Brien
sumber
while(1)process.stdout.write(Math.random()<.5?"/":"\\")
.for(;;)
alih-alihwhile(1)
Saya kira Anda bisa menggunakan rekursi.
Saya kira Anda bisa menggunakan rekursi.
sumber
memotong satu karakter:
kemudian lepaskan kurung kurawal:
trik lain, dengan panjang yang sama:
sumber
rand()%2
akan menghasilkan pergantian0
s dan1
s. Tidak terlalu acak. Anda harus menggunakanrand(0,1)
ataumt_rand()%2
sebagai gantinya.Perl
Yang ini terlihat lucu bagi saya:
(Maaf keluar dari topik di sini. Saya tahu ini bukan PHP)
sumber
Powershell, 37 byte
sayangnya sepertinya tidak ada alias lebih pendek untuk Write-Host yang tidak menyebabkan baris baru setelah setiap karakter.
sumber
Kode rakitan x86 16-bit, 10 byte
Saya tidak ingat apakah ini berakhir di buku.
sumber
Fisi , 12 byte
Cobalah online!
sumber
Perl 6 , 23 byte
loop
loop selamanya.<\ />
adalah daftar string\
dan/
..pick
mengambil salah satu dari dua string secara acak..print
mencetak string acak itu.sumber
xx*