Posting blog ini tentang menghasilkan kode warna CSS acak dalam JavaScript memiliki beberapa solusi untuk menghasilkan warna acak dalam JavaScript. Yang terpendek yang dapat saya temukan adalah ini:
'#'+(Math.random()*0xffffff).toString(16).slice(-6)
Jika Anda tidak terbiasa dengan kode warna CSS, baca dokumentasi di sini.
Bisakah kita berbuat lebih baik? Bagaimana dengan bahasa lain?
+
setelah'#'
#'+(Math.random()*0xffffff|0).toString(16)
Math.random().toString(16)
dapat menghasilkan representasi dengan kurang dari 6 digit hex setelah titik desimal (hexa), dalam hal ini fungsi akan terputus. Misalnya, 0,1658172607421875 menjadi 0,2A73 dalam hex.Jawaban:
PHP 23 byte
Di mana
ÿ
karakter 255. Bitwise dan akan memotong string yang dikembalikan darimd5
, yang sudah dalam format heksadesimal.sumber
Tiga kode karakter juga valid, jadi saya dapat menyimpan beberapa karakter (
4095 == 0xfff
):Ruby,
24232218Jika saya harus menggunakan yang 6-char, maka:
Ruby,
2827262420Memotong satu karakter karena
8**8-1 == 0xffffff
Berkat chron untuk string format, menghemat 4 karakter!
Menyontek (dengan mengingat xkcd ini ):
Ruby / JS / Python / Perl / banyak lagi, 6 (atau 5)
Saya yakinkan Anda, saya membuatnya secara acak!
Versi yang lebih meriah:
sumber
to_s
pada4095
jika saya menghilangkan mereka.'#%06x'%rand(8**8-1)
Javascript
Hanya sedikit lebih pendek di 42.
Tampilkan cuplikan kode
sumber
#'+Math.random().toString(16).slice(-6)
Ikan 79
Bukan solusi terpendek di dunia, tetapi menyenangkan untuk kode :)
Ini juga bukan distribusi yang seragam, tetapi semua output memiliki probabilitas non-nol 7 dan F kemungkinan besar adalah digit.
Output:
sumber
APL (17)
Penjelasan:
6?16
: 6 angka acak dari 1 hingga 16⎕D,⎕A
: digit (0..9
) diikuti oleh alfabet (A..Z
) (tetapi hanya 16 nilai pertama yang digunakan, yaitu0..F
)'#',
: tambahkan a#
ke depansumber
6?16
adalah 6 nilai acak yang tidak berulang , yang mempersempit ruang warna sedikit ...Bash (51)
sumber
Python 3 , 53 byte
Cobalah online!
sumber