“×Ɗ¡‘ŒP»Ṫ¦209ṗ€3Fd⁴ịØHs3ṢQY
Cobalah online!
Bagaimana itu bekerja
“×Ɗ¡‘
menghasilkan poin kode karakter antara tanda kutip di Jelly's SBCS , yaitu 0x11 = 17 , 0x91 = 145 , dan 0x00 = 0 .
ŒP
membangun powerset dari array titik kode, menghasilkan
[[], [17], [145], [0], [17, 145], [17, 0], [145, 0], [17, 145, 0]]
Dua entri terakhir sesuai dengan kombinasi yang mengandung 80 dan FF , jadi kami harus membuangnya.
»Ṫ¦209
terdiri dari tiga bagian:
Ṫ
(tail) menghilangkan array terakhir dari titik kode, yaitu, [17, 145, 0] .
»209
mengambil maksimum setiap bilangan bulat di sisa PowerPet dan 0xD1 = 209 , menggantikan semuanya dengan 209 .
¦
(Jarang) iterates atas elemen-elemen sisa PowerPet. Jika indeks yang sesuai ditemukan di [17, 145, 0] , elemen diganti dengan semua 209 . Jika tidak, itu tidak tersentuh.
¦
bukan modular, jadi ini hanya memodifikasi array terakhir (indeks 0 ) di sisa PowerPet. Indeks 17 dan 145 terlalu besar dan tidak berpengaruh.
Hasilnya adalah sebagai berikut.
[[], [17], [145], [0], [17, 145], [17, 0], [209, 209]]
ṗ€3
menghitung kekuatan Kartesius ketiga dari setiap larik, yaitu larik semua 3-tupel elemen dari setiap larik.
Fd⁴
meratakan hasil dan menghitung hasil bagi dan sisa dari setiap bilangan bulat dibagi dengan 16 .
ịØH
indeks (berbasis 1) ke "0123456789ABCDEF , sehingga 0x11 , 0x91 , 0x00 , dan 0xD1 bisa dipetakan ke " 00 " , " 80 " , " FF " , dan " C0 " (resp.).
s3ṢQ
membagi pasangan karakter menjadi 3-tupel, mengurutkan tupel, dan menduplikat.
Akhirnya, Y
bergabung dengan tupel unik, pisahkan dengan linefeeds.
“0FC8”
, seperti yang telah kita00
,FF
,C0
, dan80
.Python 3,
1341291251089190 byteSaya pikir masih banyak golf yang bisa dilakukan di sini. Selamat datang saran bermain golf!
Sunting: -9 byte dan terima kasih banyak kepada Mego untuk membantu memformat string. -17 byte dari mencari tahu cara yang lebih baik untuk mencetak string di tempat pertama. -17 byte dari mencari tahu cara yang lebih baik untuk menulis loop for di tempat pertama. -1 byte berkat tip xnor untuk digunakan
i%3//2*"\n"
sebagai ganti"\n"*(i%3<2)
.Tidak melakukanolf
sumber
*
.i%3//2*"\n"
menghemat satu byte.JavaScript (ES6),
109107 byteDisimpan 2 byte, terima kasih kepada Neil
Ini lebih pendek
79 byte daripada hanya mengembalikan string mentah dalam backticks.Uji
Tampilkan cuplikan kode
sumber
.replace(/./g)
, panjangnya sama.map().join
, tetapi.map(x=>'08CF'[x=n>>x&3]+'000F'[x],n+=+v||21)
menghemat dua byte.PowerShell,
113106 byteYa, saya belum menemukan sesuatu yang lebih pendek dari sekedar mencetak string literal ...Terima kasih kepada @ Martin Smith karena telah mengurangi 7 byte menggunakan pengganti sederhana (yang saya benar-benar diabaikan). Jadi, kami setidaknya 7 byte lebih pendek daripada hanya hardcoding itu. Yay!Tapi itu membosankan!
Jadi sebagai gantinya ...
PowerShell v4, 128 byte
The
[system.consolecolor]
namespace mendefinisikan konsol warna (native) yang tersedia untuk konsol PowerShell. Jika kita mereferensikannya melalui array integer seperti ini, nilai default adalah namanya (misalnya,Black
atauWhite
sejenisnya). Kami mengombinasikannya dengan string yang ada-split
di spasi, jadi sekarang kami memiliki serangkaian string nama warna.Kami mengulanginya
|%{...}
dan setiap iterasi menarik nilai yang sesuai[system.windows.media.colors]
. Stringifikasi default untuk objek-objek tersebut adalah warna dalam#AARRGGBB
format sebagai nilai hex, jadi kami memanfaatkannya dengan merangkum panggilan itu dalam string dengan blok skrip"$(...)"
. Tetapi, karena kita tidak menginginkan nilai alpha atau hash, kita mengambil bagian belakang[3..8]
string, dan perlu-join
agarchar
-array yang dihasilkan kembali menjadi string. Kemudian, sederhanaSort-Object
untuk menempatkan mereka dalam urutan yang benar.sumber
00
dan.Replace(7,'00')
adalah <21 karakter.-replace
untuk jumlah byte yang sama (menyimpan 12 nol, yang panjang). Melakukannya untuk lebih lama dua byte karena tanda kutip diperlukan di dalam pernyataan.8
80
-replace8,80
FF
"FF"
-replace2,"FF"
Pyth -
644844 byteKompresi dasar super sederhana.
Cobalah online di sini .
sumber
MATL , 39 byte
Cobalah online!
sumber
05AB1E , 57 byte
Cobalah online!
Apa yang perlu kita hasilkan pada dasarnya (terbalik dan dibagi):
Yang, dalam desimal adalah:
Yang ada di Base-214 adalah:
Ini adalah solusi paling sederhana yang bisa saya buat, karena tidak mungkin saya mengalahkan Dennis. Menghabiskan satu jam mencoba dan tidak ada yang mengalahkan idenya.
sumber
PHP, 92 Bytes
Cobalah online!
cukup penggantian dari digit sebagai kunci dalam array dengan strtr nilai
sumber
Batch, 137 byte
Ya, itu membosankan. Upaya 148 byte sebelumnya:
Sayangnya Anda tidak dapat mem-pipe output dari perintah
for
ataucall:
, jadi saya harus memohon diri saya secara rekursif.sumber
Pyke, 42 byte
Coba di sini!
sumber
Befunge,
8369 byteCobalah online!
Warna dikodekan dalam string yang Anda lihat pada baris pertama, dua bit per komponen warna, dengan bit tinggi tambahan yang ditetapkan untuk memaksa setiap nilai ke dalam rentang ASCII (kecuali dalam kasus 63, yang akan berada di luar kisaran 127) ).
Daftar warna pada tumpukan kemudian diproses sebagai berikut:
sumber
C #, 195 byte
Sayangnya ini berdetak, dengan margin yang besar, semakin menarik walaupun sangat berbelit-belit (saya punya banyak lagi kesenangan menulisnya) C #, 270 byte
sumber
()=>@"string_here"
(ini digunakan untukAction<string>
). Saya juga menyarankan menggunakan string kata demi kata (@
) sehingga Anda bisa langsung memasukkan baris baru ke dalam string tanpa perlu menghindarinya.C (gcc) , 99 byte
Cobalah online!
Setelah melakukan upaya yang melibatkan pembuatan daftar angka dan mengeluarkannya sambil menyortir, saya membandingkan dengan solusi naif, yang serius:
Itu satu jam di 140 byte dibandingkan dengan coba saya di 200 dan berubah.
Solusinya adalah menganggapnya sebagai teks seperti yang lainnya, meskipun dengan alfabet kecil. Setiap warna dapat dianggap sebagai triplet dari indeks 2-bit ke dalam alfabet {0xff, 0xc0, 0x80, 00}. Proses warna -> triplet -> angka -> karakter (dengan offset +35 untuk membuat semuanya dapat dicetak dan menghindari kebutuhan untuk melarikan diri) dapat diilustrasikan sebagai berikut:
Maka itu hanya masalah iterasi pada string yang dihasilkan dan memotong bagian-bagian yang sesuai dari string alfabet.
sumber