Warna asli (24-bit) di Wikipedia dijelaskan sebagai bagian yang terkait
24 bit hampir selalu menggunakan 8 bit dari masing-masing R, G, B. Pada 2018, kedalaman warna 24-bit digunakan oleh hampir setiap komputer dan tampilan telepon dan sebagian besar format penyimpanan gambar. Hampir semua kasus di mana ada 32 bit per piksel berarti 24 digunakan untuk warna, dan 8 sisanya adalah saluran alfa atau tidak digunakan.
2 24 menghasilkan 16.777.216 variasi warna. Mata manusia dapat membedakan hingga sepuluh juta warna [10] dan karena gamut layar lebih kecil dari kisaran penglihatan manusia, ini berarti ini harus mencakup kisaran itu dengan lebih detail daripada yang dapat dirasakan. ...
...
Sistem Macintosh menyebut warna 24-bit sebagai "jutaan warna". Istilah "True color" kadang-kadang digunakan untuk arti apa yang disebut artikel ini "warna langsung". [13] Ia juga sering digunakan untuk merujuk pada semua kedalaman warna yang lebih besar atau sama dengan 24.
Semua 16.777.216 warna
Tugas
Tulis sebuah program yang menghasilkan dan mengembalikan semua 16.777.216 variasi warna dalam sebuah array sebagai string dalam rgb()
fungsi CSS
5.1. Fungsi RGB:
rgb()
danrgba()
The
rgb()
Fungsi mendefinisikan warna RGB dengan menentukan saluran merah, hijau, dan biru secara langsung. Sintaksnya adalah:rgb() = rgb( <percentage>{3} [ / <alpha-value> ]? ) | rgb( <number>{3} [ / <alpha-value> ]? ) <alpha-value> = <number> | <percentage>
Tiga argumen pertama menentukan saluran merah, hijau, dan biru warna, masing-masing.
0%
mewakili nilai minimum untuk saluran warna dalam gamut sRGB, dan100%
mewakili nilai maksimum. A<number>
sama dengan a<percentage>
, tetapi dengan rentang yang berbeda:0
sekali lagi mewakili nilai minimum untuk saluran warna, tetapi255
mewakili maksimum. Nilai-nilai ini berasal dari fakta bahwa banyak mesin grafis menyimpan saluran warna secara internal sebagai satu byte, yang dapat menyimpan bilangan bulat antara 0 dan 255. Implementasi harus menghormati ketepatan saluran sebagaimana ditulis atau dihitung sedapat mungkin. Jika ini tidak memungkinkan, saluran harus dibulatkan ke nilai terdekat pada presisi tertinggi yang digunakan, mengumpulkan jika dua nilai sama-sama dekat.Argumen terakhir, the
<alpha-value>
, menentukan alfa warna. Jika diberikan sebagai a<number>
, kisaran nilai yang berguna adalah0
(mewakili warna yang sepenuhnya transparan) hingga1
(mewakili warna yang sepenuhnya buram). Jika diberikan sebagai,0%
mewakili warna sepenuhnya transparan, sementara100%
mewakili warna sepenuhnya buram. Jika dihilangkan, defaultnya adalah100%
.Nilai di luar rentang ini tidak valid, tetapi dijepit ke rentang yang ditentukan di sini pada waktu nilai-dihitung.
Untuk alasan sebelumnya,
rgb()
juga mendukung sintaks alternatif yang memisahkan semua argumennya dengan koma:rgb() = rgb( <percentage>#{3} , <alpha-value>? ) | rgb( <number>#{3} , <alpha-value>? )
Juga karena alasan warisan, suatu
rgba()
fungsi juga ada, dengan tata bahasa dan perilaku yang identik dengannyargb()
.
atau #RRGGBB
format notasi heksadesimal RGB
5.2. Notasi heksadesimal RGB:
#RRGGBB
Notasi warna heks CSS memungkinkan warna ditentukan dengan memberikan saluran sebagai angka heksadesimal, yang mirip dengan bagaimana warna sering ditulis langsung dalam kode komputer. Ini juga lebih pendek daripada menulis warna yang sama dalam
rgb()
notasi.Sintaks dari a
<hex-color>
adalah<hash-token>
token yang nilainya terdiri dari 3, 4, 6, atau 8 digit heksadesimal. Dengan kata lain, warna heksa ditulis sebagai karakter hash, "#", diikuti oleh beberapa angka 0-9 atau huruf af (huruf huruf tidak masalah -#00ff00
identik dengan#00FF00
).Jumlah digit hex yang diberikan menentukan cara mendekode notasi hex menjadi warna RGB:
6 digit
Pasangan digit pertama, ditafsirkan sebagai angka heksadesimal, menentukan saluran merah warna, di mana
00
merupakan nilai minimum danff
(255 dalam desimal) mewakili maksimum. Pasangan digit berikutnya, ditafsirkan dengan cara yang sama, menentukan saluran hijau, dan pasangan terakhir menentukan biru. Saluran alfa warna sepenuhnya buram.CONTOH 2
Dengan kata lain,#00ff00
mewakili warna yang sama denganrgb(0 255 0)
(hijau limau).
Lihat Draf Editor Modul Warna CSS Level 4
Contohnya
rgb()
Fungsi CSS ( karakter spasi dapat diganti dengan karakter koma, misalnya, rgb(0 255 0)
)
// `rgb()` `<percentage>` as strings in resulting array
['rgb(0%,0%,0%)', ...,'rgb(0%,255%,0)', ...'rgb(255,255,255)']
// `rgb()` `<number>` as strings in resulting array
['rgb(0,0,0)', ...,'rgb(0,255,0)', ...'rgb(255,255,255)']
CSS RGB notasi heksadesimal RRGGBB
// RGB hexadecimal notation as strings in resulting array
['#000000', ...,'#00ff00', ...'#ffffff']
Kriteria menang
Bit terkecil digunakan untuk menulis program.
sumber
Jawaban:
R , 25 byte
Cobalah online!
sumber
a:b-c
membuat vektor daria-c
menjadib-c
, inklusif (itu membuat vektor daria
keb
, lalu kurangic
dari setiap entri).Python 2 ,
77403937 byteCobalah online!
-1 byte berkat Digital Trauma
-2 byte terima kasih kepada dylnan
sumber
8**8
alih-alih1<<24
menyimpan byteprint['...
PowerShell ,
2826 byteCobalah online!
Loop dari
1
ke16mb
(16777216). Setiap iterasi, kami menggunakan-f
operator ormat yang bekerja pada nomor saat ini yang telah ditentukan sebelumnya--$_
terhadap string"#{0:x6}"
. Di sini, kami menentukanx
nilai dia , diisi6
digit, dengan hash#
di depan. Pada TIO, output dibatasi hingga 60 detik / 128KiB. Ubah1
to(16mb-5)
untuk melihat bagaimana itu berakhir .sumber
JavaScript (ES7),
656261 byteDisimpan
34 byte berkat @tshMengembalikan array
#RRGGBB
string.Cobalah online! (keluaran terpotong)
sumber
8**8
sebagai gantinya1<<24
. Ini akan bekerja pada JS juga.Gangguan Umum, 42 byte
Cobalah online!
sumber
format
-golf pertama yang kulihat. Memberi +1 hanya berdasarkan itu saja.Japt, 14 byte
Output sebagai
#rrggbb
.Cobalah (Terbatas pada 4096 elemen pertama)
Penjelasan
sumber
ù
. Kasus penggunaan tipikal lainnya adalah menggunakannya sebagai penghitung saat Anda perlu menambahkan variabel, misalnya, memetakan di atas larik. Dan, tentu saja, karena merupakan variabel, Anda dapat dengan mudah memberikan nilai padanya, jika diperlukan.0
adalah satu-satunya bilangan bulat tunggal yang memiliki variabel sendiri, meskipun - well, secara teknis, 7 sebagai variabel input 6U-Z
default0
. Bilangan bulat lainnya ditugaskan untuk variabel dalam Japt adalah:-1, 10-16, 32, 64 & 100
.Haskell, 41 byte
Cobalah online!
sumber
05AB1E ,
151410 byteCobalah online.
Penjelasan:
sumber
Batch, 87 byte
Output dalam format CSS. Substitusi variabel terjadi sebelum
for
pernyataan diuraikan sehingga kode aktualnya adalah sebagai berikut:sumber
C # (Visual C # Interactive Compiler) , 47 byte
Cobalah online!
sumber
C # (.NET Core) , 75 byte
Cobalah online!
Port versi JAVA 10 dengan format string interpolasi C #
sumber
K (oK) , 19 byte
Larutan:
Cobalah online! (terbatas pada 500 nomor pertama)
Penjelasan:
Buang string rgb. Ubah setiap angka antara 0 dan 16777216 menjadi basis 256, lalu konversikan ke string ...
sumber
MATL ,
1715 byteCobalah online!
Versi TIO menampilkan 2 ^ 10 pertama hanya sebagai tidak kehabisan waktu. Saya memasukkan iterasi terakhir di footer untuk menunjukkan bahwa itu memang berakhir
#FFFFFF
. Disimpan satu byte dengan mengubahfprintf
daripada merakit string secara manual. Menampilkan daftar yang dipisahkan koma.Penjelasan
sumber
APL (Dyalog Unicode) ,
474320 byteCobalah online!
6⍴
4⍴
Berkat @Dimaima dan @ngn untuk 23 byte.
Penggunaan
⎕IO←0
.Bagaimana:
sumber
Ruby , 31 byte
Cobalah online!
sumber
%
mengambil string yang panjang dan array yang panjang. FYI Anda dapat menyimpan byte dengan menggunakan hentian garis literal\n
.V , 25 byte
Cobalah online! (diganti
16777215
oleh31
)Penjelasan
sumber
Batch, 69 + 4 = 73
g.cmd, 69
Menyimpan nilai heksadesimal dengan formulir
#RRGGBB
ke dalam 'Array'.g.cmd
disebut menggunakancmd /V/Q/K g.cmd
. Di sinilah +4 berasal/V/Q
,, dihitung sebagai 4 karakter tambahan dibandingkan dengan hanyacmd /K g.cmd
. Ini mengatur lingkungan yang memiliki 'Array' di memori. Ini juga membutuhkan waktu selamanya untuk dijalankan, jadi gunakan nilai yang sangat rendah untuk mencoba atau menghentikan eksekusi menggunakanCtrl+C
Kerusakan
Invokasi
/V
memungkinkan ekspansi tertunda, tetapi lebih pendek darisetlocal EnableDelayedExpansion
, itulah sebabnya kami membutuhkancmd
panggilan di tempat pertama/Q
menghilangkan output dan setara dengan@echo off
/K
memungkinkan Anda menjalankan ekspresi (Dalam hal inig.cmd
) dan tidak keluar setelahnya, sehingga Anda dapat memeriksa 'Array' dengan menggunakanset #
g.cmd
Bit ini menggunakan trik yang didokumentasikan di sini untuk mengubah angka normal menjadi heksadesimal, kemudian menyimpan nilai itu menjadi 'Array'.
Saya telah memanggil bahwa struktur penyimpanan 'Array' tetapi itu sebenarnya tidak benar karena Array yang benar tidak ada di Batch. TETAPI Anda bisa memberi nama variabel sehingga memiliki nama seperti array, seperti:
atau, seperti dalam kasus ini:
Anda masih dapat mengaksesnya melalui
!#%position%!
sumber
/V/Q/K
dapat diklaim sebagai "argumen" untuk juru bahasa dan dihitung sebagai "3 + 69 = 72". metaGroovy , 53 byte
Definisi fungsi. c () mengembalikan ArrayList (saya berasumsi itu bagus, bahkan melalui pertanyaan meminta array).
Tidak disatukan, dengan tipe implisit:
Cobalah online!
sumber
Java 10,
8784 byte-3 byte terima kasih kepada @ archangel.mjj .
Cobalah online (terbatas pada
4,096
item pertama ).Penjelasan:
sumber
r[i]="".format("#%06X",i);
"".format("#%06X",i)
sebelumnya sejak saya melihatnya dalam jawaban Python, tetapi saya menjatuhkan jawabannya karena saya tidak bisa membuatnya bekerja cukup cepat untuk TIO. Lalu saya melihat semua orang mengeluarkan4,096
item pertama di TIO, jadi saya menulis jawabannya lagi, melupakan"#%06X"
...>. <var r
di Jawa ..var
di Java.PHP,
6862 byteIni seharusnya ditempatkan di dalam file, array dikembalikan pada akhirnya, agar dapat digunakan.
Untuk memiliki akses ke array, cukup berikan hasil dari include (misalnya:)
$a = include 'xyz.php';
ke variabel.Terima kasih kepada @manatwork karena telah menyelamatkan saya 6 byte dan memperbaiki kesalahan.
sumber
%1$06d
string format? Dan saya tidak melihat alasan untuk menggunakan1$
. Anda bisa mengurangi panjang dengan memasukkan “#” dalam format string:#%06x
. Yang akan berguna ketika menambahkan karakter tambahan untuk memperbaiki rentang, karena saat ini dihitung hingga 16777216 = # 1000000.%d
ke%x
. Dan benar-benar lupa tentang memindahkan bagian#
dalamsprintf()
panggilan. Anda menyelamatkan saya 6 byte. Terima kasihMATL , 11 byte
Cobalah online! (dengan hanya tiga digit hex bukan enam)
Penjelasan
sumber
Bash + jot, 22
Cobalah online!
sumber
Perl 5 , 31 byte
Cobalah online!
sumber
Lua ,
4745 byteCobalah online!
sumber
s
dan menyimpan satu byte.T-SQL,
122117 byteMengembalikan tabel
#RRGGBB
string 16.777.216-baris . Istirahat baris hanya untuk keterbacaan:Menggunakan CTE rekursif untuk tabel angka dari 0 hingga 2 ^ 24-1, kemudian menggunakan
FORMAT
perintah bawaan (tersedia dalam SQL 2012 atau lebih baru) untuk mengubahnya menjadi string hex 6-digit . Pasang#
ke depan, dan kita selesai.Sunting 1:
POWER()
Fungsi dihapus , angkanya lebih pendek: Psumber
Jelly , 12 byte
Cobalah online!
sumber
Jelly , 8 byte
Cobalah online! (catatan: penggunaan
2
daripada6
sebagai6
kali keluar pada TIO)Pengiriman fungsi (karena program Jelly penuh akan, secara default, mencetak daftar string tanpa pembatas di antara mereka, sehingga sulit untuk melihat batas-batas). TIO link berisi pembungkus untuk mencetak daftar string menggunakan baris baru untuk memisahkannya.
Penjelasan
sumber
PHP , 43 byte
Cobalah online!
sumber
1<<24
->8**8
harus bekerja di sini untuk, kredit ke @ DigitalitaliaScala , 40 byte
Cobalah online!
sumber
Perl 6 , 26 byte
Cobalah online!
Menggunakan format yang sama dengan orang lain. Waktu habis di TIO.
Atau, dalam format rgb:
31 byte
Cobalah online!
sumber
rgb(0, 0, 0)
termasuk stringrgb
.