Latar Belakang / Deskripsi
Catatan: seperti yang ditunjukkan oleh @HelkaHomba, identitas GitHub sebenarnya bukan acak tetapi berdasarkan hash dari nama pengguna
Avatar GitHub default adalah gambar 5x5-piksel. Warna dipilih secara acak, dan kemudian piksel acak diisi di satu sisi (kanan atau kiri, ukuran 2x5) menggunakan warna itu. Kemudian sisi itu disalin & dibalik ke sisi lain, melintasi sumbu y. Pixel yang tersisa yang tidak diisi adalah # F0F0F0, atau rgb (240.240.240).
Pixel kolom tengah (ukuran 1x5) kemudian diisi secara acak, menggunakan warna yang sama seperti sebelumnya.
Keluaran
Catatan: untuk tantangan ini kami akan mengabaikan ruang yang melingkupi avatar GitHub
Program harus menghasilkan file gambar 5x5 piksel. Lihat http://meta.codegolf.stackexchange.com/a/9095/42499 untuk rinciannya
Contohnya
Catatan: ini jelas ditingkatkan dari 5x5 sehingga Anda dapat melihatnya
Semoga berhasil!
sumber
Jawaban:
Pyth - 27 byte
Jelas tidak bekerja secara online, tetapi Anda dapat memilikinya mencetak kode warna di sini .
sumber
Perl 5 , 77 byte
Ini non-bersaing karena hanya memiliki 256 palet warna, hanya bekerja pada terminal yang mendukung kode pelarian ANSI dan tidak benar-benar menghasilkan gambar persegi 5 piksel, tapi saya pikir saya akan mempostingnya karena menyenangkan bermain golf ini turun.
Catatan: yang
\e
sebenarnya ASCII arang\x1B
.Pemakaian
Penjelasan
Tidak ada yang pandai kecuali mungkin:
$-
untuk secara otomatis membulatkan nomor warna untuk digunakan dalam urutan pelarian, digunakan sebagai ganti$n=0|rand 254
.Contoh output
sumber
MATL ,
3629 byteIni menyimpan hasil dalam file
a.png
.Mengganti
'a'
dengan oleh2
dalam kode menampilkan gambar (ditingkatkan) alih-alih menyimpan file:Berikut ini contoh output:
Penjelasan
sumber
Sebenarnya, 53 byte
Cobalah online!
Sebenarnya buruk dalam pemrosesan string. Saya pikir saya sudah menyebutkan itu sebelumnya. Program ini menghasilkan gambar netpbm P6 menggunakan CP437, seperti berikut:
Ini dapat dikonversi ke PNG menggunakan ImageMagick:
Versi PNG yang ditingkatkan:
Penjelasan:
sumber
ppm
gambar.Python,
167164155148 byteOutput sebagai ppm
range(5)
ke" "*5
print
map
karena hanyastr(p)
digunakanexec""*5
sebagai gantinyafor _ in " "*5:
Beberapa peningkatan dari kode berbasis string yang lama:
sumber
Swift 2.3,
593585 byteMemperbarui
Swift 3, 551 byte
Saya di WWDC dan baru saja mendapatkan Xcode 8 beta dengan Swift 3. Apple membuat beberapa panggilan CoreGraphics lebih "Swifty," dan saya bisa mengurangi bytecount.
Kode Swift 2 Tidak Disatukan:
Jawaban ini mengasumsikan UIKit tersedia dan menggunakan kerangka kerja Cocoa Touch.
Beberapa contoh menampilkan gambar:
Saya tahu saya tidak dapat bersaing dengan sebagian besar jawaban lain tetapi saya ingin mencoba ini sebagai tantangan pribadi. Pasti ada ruang untuk perbaikan dengan jawaban ini, tapi saya pikir akan sulit untuk mendapatkan ini di bawah beberapa ratus byte karena panjangnya nama metode penulisan gambar UIKit dan CoreGraphics. Saya memilih untuk menulis file PNG yang sebenarnya daripada nilai-nilai PPM sebagai latihan untuk diri saya sendiri, tetapi jawaban yang lebih pendek pasti akan mungkin jika saya menggunakan format PPM.
Saya sudah memulai sebagai kerugian dengan harus mendeklarasikan variabel yang akan di-seed
srand48
dengantime
. Saya memilih ini lebiharc4random()
atauarc4random_uniform()
karena pada akhirnya saya akan kehilangan lebih banyak byte dengan itu. Saya seed rng untuk digunakandrand48
untuk menghasilkan warna acak dan memilih kapan untuk menulis warna ke piksel.CGSize
vsCGSizeMake
danCGRect
vsCGRectMake
:Saya beralih antara fungsi API C inline dan ekstensi Swift mereka untuk menemukan konstruktor terpendek untuk masing-masing.
CGSizeMake
akhirnya lebih pendek dariCGSize()
, danCGRect
akhirnya lebih pendek dariCGRectMake()
:Saya harus membuat
CGFloat
sx
dany
karena sifat dari untuk loop. Saya benar-benar tidak senang dengan loop 2D dan jika pemeriksaan kesetaraan, tapi saya benar-benar berjuang untuk menemukan cara yang lebih pendek. Pasti ada ruang untuk memangkas beberapa byte di sini.Memanggil
CGContextFillRects
dengan arrayCGRect
struct lebih murah daripada memanggilCGContextFillRect
dua kali dengan dua nilai yang berbeda, jadi saya menyimpan beberapa byte dengan array dan pointer.Saya juga menghemat 27 byte dengan tidak menelepon
UIGraphicsEndImageContext()
. Meskipun ini biasanya menjadi "bug" dalam kode produksi, itu tidak perlu untuk program mainan ini.Warna:
Warna juga sulit untuk ditangani, karena saya membuat
UIColor
objek tetapi perlu menulisCGColor
jenis buram untuk setiap piksel. Kode terpendek yang saya temukan untuk membuat warna acak adalah dengan menggunakanUIColor
konstruktor dan dapatkanCGColor
dari ituUIColor
. Sama dengan putih. Jika saya menggunakan kerangka kerja Cocoa Touch daripada Cocoa Touch, saya mungkin dapat menghemat beberapa byte menggunakanCGColorGetConstantColor()
, tetapi sayangnya metode itu tidak tersedia di Cocoa Touch SDK.Menulis ke file:
Menulis ke file membutuhkan hampir 100 byte. Saya tidak yakin bagaimana cara mengoptimalkan ini. Pada beberapa sistem tergantung pada izin Anda, Anda mungkin perlu menggunakan direktori Dokumen yang akan lebih lama:
Pasti terbuka untuk optimasi lebih lanjut.
Sunting 1: Menyimpan beberapa byte dengan mengatur ulang beberapa deklarasi variabel.
sumber
Mathematica,
1051029894 byte
adalah operator Transpose .Sunting 1: Disimpan 3 byte dengan mengganti
Round
+RandomReal
denganRandomInteger
Sunting 2: Disimpan 4 byte dengan menggantinya
RandomInteger
denganRandomChoice
Sunting 3: Disimpan 4 byte dengan mengganti
RandomColor
danGrayLevel
denganRandomReal
sumber
MATLAB, 102 byte
Hai, ini solusi matlab saya:
Input
x
dari fungsi adalah nama file output. Sebagai contoh:menghasilkan gambar png yang disebut 'output.png'.
Di sini hasil dari beberapa eksekusi kode ini.
sumber
Dyalog APL,
4342 byte'P3',5 5 256,∊(3⍴240)(?3⍴256)[⌈(⊢+⌽)?5 5⍴0]
'P3',5 5a,∊(3⍴240)(?3⍴a←256)[⌈(⊢+⌽)?5 5⍴0]
Kanan ke kiri:
?5 5⍴0
menghasilkan matriks 5x5 angka acak antara 0 dan 1 ( tetapi tidak pernah 0 atau 1 )(⊢+⌽)
adalah kereta yang menambahkan matriks dengan pantulannya⌈
plafon, mengembalikan 1 atau 2 untuk setiap elemen(3⍴240)(?3⍴256)
warna - putih-ish dan acak[ ]
gunakan setiap elemen dari matriks sebagai indeks dalam warna'P3',5 5 256,∊
ratakan dan tambahkan tajuksumber
PHP, 236 byte
Saya tahu ini adalah tantangan lama tetapi saya hanya ingin menantang diri saya sendiri.
Tidak Disatukan:
Output sampel:
sumber
Javascript ES6, 296 byte
Catatan: tidak menghasilkan file, menarik ke kanvas.
Lihat beraksi di JS Fiddle ini .
sumber