Tulis program atau fungsi yang menghasilkan bilangan bulat positif N, dan menghasilkan gambar piksel N × N dari logo "G" Google sesuai dengan konstruksi * ini:
Misalnya, jika N adalah 400, logo 400 × 400 piksel harus dihasilkan, dengan dimensi dan warna yang benar:
Seharusnya terlihat akurat terlepas dari seberapa besar atau kecil N. misal di sini adalah N = 13:
Kode Anda seharusnya tidak perlu terhubung ke internet. Misalnya, penskalaan svg yang di-host secara eksternal tidak diizinkan. (Melakukan penskalaan svg yang dikodekan dalam kode Anda akan baik-baik saja.)
Anti-aliasing dapat digunakan atau tidak. Terserah kamu.
Perhatikan bahwa bilah horizontal "G" tidak memanjang sampai ke tepi kanan gambar. Kurva lingkaran biasanya ke dalam di tepi kanan sebelum terputus.
Kode terpendek dalam byte menang.
* Konstruksi logo telah disederhanakan untuk tantangan ini. Konstruksi yang benar dapat dilihat di sini dan di sini .
sumber
.svg
dan menyandikannya ke dalam solusi kami, atau apakah pada awalnya kami harus membuatnya?Jawaban:
Mathematica,
229226225224221206169 byteTerima kasih @MartinEnder untuk 1 byte, @ChipHurst untuk 37 byte!
Tantangan yang menyenangkan!
Penjelasan
Iterasi mulai 1 hingga 4 ...
Konversikan kode heksa warna menjadi
RGBColor
objek, sehingga dapat diterapkan ke grafik logo Google. Ubah palet<input>
warna ke warna th.Buat persegi panjang terisi (2D berbentuk kubus), yang memiliki sudut diagonal (0, -1) dan (sqrt (24), 1).
Hasilkan empat perempat terisi
Annulus
, berpusat di titik asal, dengan jari-jari dalam 3 dan jari-jari luar 5. Jangan melewatiArcCsc@5
(di mana segmen biru berakhir).Buat grafik dengan ukuran N x N, dari x = -5 hingga x = 5 (menghapus bantalan).
Keluaran
N = 10
N = 100
N = 200
N = 10.000 (klik gambar untuk resolusi penuh)
sumber
C (Windows), 311 byte
Membawa "N" sebagai argumen baris perintah dan menggambar langsung di layar.
Tidak golf:
sumber
0xF48542
dan0xFFFFFF
dalam bilangan bulat.gcc g.c -lgdi32
di mingw.-1>>8
mungkin juga berfungsiPython 2,
244220 bytemenggunakan transformasi Martin Rosenau di pesawat [-1,1] ^ 2 dan bermain golf kecil seperti melepas
0.
atau tanda kurungPenjelasan:
Output sebagai PPM biner, penggunaan:
Contohnya
solusi 244 byte sebelumnya
Versi beta yang tidak dikolomisasi sebelumnya jika eliminasi:
sumber
1for
berhasil.1for
sampel sampel @Cyoce yang ditambahkan0.x
dapat dikurangi menjadi.x
:)JavaScript (ES6),
408 ... 321317 byte384 383 371 367 359 327 316 308304 byte JavaScript +2413 byte untuk elemen kanvas1 byte disimpan dengan menggambar berlawanan arah jarum jam.
11 byte disimpan di HTML berkat Conor O'Brien.
12 byte disimpan menggunakan
with
blok terima kasih kepada Prinzhorn.4 byte disimpan dengan penggunaan yang lebih baik
z=q-y/2
.8 byte disimpan dengan menggunakan
parentNode
danbackground
terima kasih kepada Alexis Tyler.32 byte disimpan dengan menggunakan gambar yang lebih tepat dari arc / bar biru jadi saya tidak perlu menghapus bagian dari itu lagi.
11 byte disimpan dengan mengatur kanvas css bukan parentNode-nya berkat Tejas Kale.
8 byte disimpan menggunakan
with
danmap
dengan satu pernyataan, `2d` bukan('2d')
,n/5
bukannya.2*n
menginisialisasi dan latar belakang diprompt(...)
.4 byte disimpan menggantikan
Math.PI/4
oleh.7854
yang tampaknya cukup presisi berkat RobAu.Penjelasan:
Dimensi kanvas diinisilisasi dengan input pengguna dan latar diatur ke putih.
q
diinisialisasi.Untuk setiap warna gambarlah bagian lingkaran, dengan beberapa penyesuaian untuk yang terakhir (biru). Bilah digambar untuk setiap warna di tempat yang sama dengan dimensi yang sama sehingga hanya yang terakhir (biru) yang terlihat.
sumber
<canvas id=d></canvas>
harus bekerja, dan<canvas id=d>
mungkin berhasil.d.style
bekerja juga. Yang memungkinkan(f = d.style).width = f.height = n = prompt() + 'px';
.785398
bukannyaMath.PI/4
memotong 2 byte (atau lebih jika presisi kurang okBBC BASIC, 177 byte
Unduh juru bahasa di http://www.bbcbasic.co.uk/bbcwin/download.html
BBC BASIC menggunakan 2 unit = 1 piksel, jadi kami memplot G
n
unit radius (= n / 2 piksel) di tengahn,n
.Idenya adalah untuk merencanakan serangkaian garis radial, mengubah warna yang sesuai. Ditemukan bahwa ada celah kecil antara garis karena pemotongan angka ketika dikonversi menjadi piksel, jadi segitiga tipis sebenarnya diplot sebagai gantinya.
Setelah sapuan garis selesai, kursor berada di sudut kanan atas area biru. Koordinat tunggal untuk sudut berlawanan diagonal diberikan untuk menggambar persegi panjang untuk melengkapi bentuk.
Tidak disatukan
sumber
HTML / JS,
680624 byteUntuk mendapatkan 624 byte, hapus yang terakhir
;
, ini diperlukan untuk cuplikan di bawah karena cara mengimpor HTML. Selain itu, Firefox tampaknya tidak mendukungimage-rendering: pixelated
dan membutuhkannya-moz-crisp-edges
(terima kasih @alldayremix !) Yang membuat solusi Firefox +7 tetapi ini berfungsi di Chrome seperti yang diharapkan.Memanfaatkan JavaScript untuk meminta
N
dan<style>
memblokir untuk memposisikan / mewarnai elemen. Menggunakan elemen HTML dasar, daripada menerapkan gaya ke kanvas (yang, tampaknya, merupakan pendekatan yang jauh lebih pendek!). Ini adalah pendekatan yang dirubah menggunakandata:
gambar latar belakang URI bukan hanya elemen berwarna. Saya telah menyimpan pendekatan sebelumnya di bawah kalau-kalau ini baru bekerja pada browser yang lebih sedikit.Saya pikir ini akan menjadi jauh lebih kecil daripada akhirnya, tapi tetap saja ini merupakan latihan yang menarik!
Versi sebelumnya:
sumber
image-rendering: -moz-crisp-edges
bukanpixelated
. Akan menambahkan catatan untuk efek itu. Saya cukup suka gaya gradien! :)Bash dengan Imagemagick (tapi benar-benar Postscript),
268255249 byteMenggandakan penskalaan untuk menghapus
setlinewidth
, mengganti satu faktor skala dengandup
, dan menggabungkan spasi ke dalamA
variabel (tidak bisa denganC
karena$C45
diuraikan sebagai "variabelC45
").Terima kasih kepada joojaa karena menyarankan suntingan ini!
Skala Lama, 255 byte
Membawa N sebagai satu-satunya argumen dan menghasilkan o.png.
Postscript Tidak Dikumpulkan untuk Skala Lama
sumber
61.2 dup scale
Anda juga dapat menambahkan spasi dalam C likeC=' setrgbcolor 5 5 4 '
dan mencukur 4 spasi. Jika Anda mendesain ini pada skala setengah maka Anda bisa menghilangkan2 setlinewidth
MATLAB,
189184 byteungolfed
sumber
Perl 5,
486477476450 (+7 untuk-MImager
flag) = 457 byteSaya menyimpan beberapa byte berkat Dada dengan menggunakan
new
panggilan fungsional dan menghilangkan parens, dan dengan menggunakanpop
alih-alih$ARGV[0]
serta titik koma akhir. Saya menyimpan lebih banyak dengan meletakkannya di$n=pop
tempat yang pertama kali digunakan, dan dengan menggunakan notasi namespace Perl 4'
sebagai ganti::
.Ini membutuhkan Imager modul , yang perlu diinstal dari CPAN. Mengambil satu integer sebagai argumen baris perintah. Gambar tidak anti-alias, jadi agak jelek.
Salin kode di bawah ini ke file g.pl. Kami membutuhkan +7 byte tambahan untuk
-MImager
flag, tetapi ia menyimpan beberapa byte karena kami tidak perlu melakukannyause Imager;
.Berikut berbagai ukuran:
N = 10
N = 100
N = 200
Kode yang benar-benar tidak diserang adalah lurus-maju.
Posting ini sebelumnya memiliki kode berbentuk seperti gambar keluaran. Karena itu melanggar aturan untuk kode golf saya harus menghapusnya. Lihat riwayat revisi jika Anda ingin melihatnya. Saya menggunakan Acme :: EyeDrops untuk membuat itu, dengan bentuk yang saya buat dari gambar yang dibuat dengan program itu sendiri yang saya konversi ke seni ASCII. Kode saya dikaburkan sudah golf, yang dapat dilihat dengan mengganti yang pertama
eval
dengan aprint
.sumber
pop
bukan$ARGV[0]
.$h=($n=pop)/2
bukannya$n=pop;...;$h=$n/2
.new Imager::Color"#$_"
bukannyaImager::Color->new("#$_")
. (dan Anda lupa untuk melepaskan titik koma terakhir). Tetapi sekali lagi, itu hanya beberapa detail kecil, kode Anda benar-benar hebat! (Aku tidak bisa melakukannya! Aku bahkan tidak tahuImager
, yang mana cukup nyaman!)Imager'Color
dengan pembatas namespace Perl 4 menghemat byte lain. :)-MImager
lebih pendek dariuse Imager;
:)$n=pop
ke dalamnew
argumen menyimpan parens dan titik komaPHP + SVG, 300 Bytes
Bagian penskalaan adalah
width=<?=$_GET[w]?>
Output untuk nilai 333
sumber
"
) dan atribut berikutnya? Misalnya<svg width="333" viewBox="0 0 10 10">
-><svg width="333"viewBox="0 0 10 10">
M 0,5 A 5 5 0 0 1 5,0 V 2 A 3,3 0 0 0 2,5
=>M0,5A5 5 0 0 1 5,0V2A3,3 0 0 0 2,5
echo
pernyataan Anda , gunakan string tanda kutip ganda untuk memungkinkan variabel sebaris dan menghapus tanda titik koma:echo'<use xlink:href="#c"fill="#'.$k.'"transform="rotate($v,5,5)"/>';
=>echo"<use xlink:href='#c'fill='#$k'transform='rotate($v,5,5)'/>"
<rect x=5 y=4 fill=#4285f4 width=4.9 height=2 />
(Di sini, Anda akan membutuhkan ruang sebelum itu/
.)Logo, 258 byte
... karena saya pikir logo harus dibuat menggunakan Logo . Ini diimplementasikan sebagai fungsi. Saya mengembangkannya menggunakan penerjemah Logo online Calormen.com
Awalnya saya mencoba menggambar setiap segmen dan mengisinya, tapi ternyata lebih besar dari yang diharapkan. Ada banyak gerakan mundur yang terbuang dan semacamnya. Sebagai gantinya, saya memutuskan untuk melakukan sapuan grafik polar, menyesuaikan warna berdasarkan judulnya. Bagian yang lebih sulit dari matematika adalah melakukan geometri untuk kurva di bagian atas persegi G. Anda dapat memotong beberapa desimal dan kurang akurat, tetapi saya ingin ini akurat hingga sekitar 3 digit untuk mengakomodasi ukuran layar yang khas.
Golf
Sampel
g 200
Tidak disatukan
sumber
JavaScript (ES7),
285258254252251 byteMeminta lebar logo (hingga 999) dan menggambarnya dalam kanvas, piksel per piksel.
Sunting : Versi awal mengonversi koordinat Cartesian
(x,y)
ke koordinat Polar(r,a)
, tetapi kami tidak terlalu membutuhkan sudutnya. Lebih mudah (dan jauh lebih singkat) untuk melakukan perbandingan di antarax
dany
untuk mengetahui di kuartal mana kita berada.Sunting : Disimpan 1 byte berkat produk ETH.
JS,
251224220218217 byteHTML, 34 byte
Versi ES6:
258231227225224 + 34 = 258 byteLebar maksimum yang disarankan untuk cuplikan: 190.
sumber
<-
dan-->
operator ??" Saya kira itulah yang terjadi ketika Anda telah berpikir tentang operator hipotetis untuk bahasa hipotetis selama 24 jam ...: P-->
sebagai awal (?) Dari komentar html jika ini dimasukkan ke dalam<script>
tag dalam file html.123 --> comment
melempar kesalahan di konsol browser saya (Firefox 49), sementara--> comment
tidak.C #, 276 + 21 = 297 byte
276 byte untuk metode + 21 byte untuk System.Drawing impor.
Berdasarkan algoritma Martin Rosenau. Terima kasih telah melakukan bagian yang sulit dengan cara membangun gambar!
26:
400:
sumber
0xFF...
JS /CSS / HTML (+ JS),400 +701644617593 +1739097 121 =714 byte914774754730Menggunakan gradien linier daripada transformasi. Sunting: Disimpan 140 byte berkat @darrylyeo. Menyimpan 20 byte dengan menggunakan elemen tambahan, bukan gradien. Disimpan 24 byte berkat @DBS. Disimpan 16 byte berkat @Hedi. Dari belakang ke depan, berbagai lapisan adalah:
a
Lingkaran birub
Kotak putih untuk mengaburkan bagian di atas bilahc
Bagian kiri atas merah / kuningd
Oktan merah atas kanane
Bagian kiri bawah kuning / hijauf
Bagian kanan bawah hijau / birug
Lingkaran putih bagian dalamh
Bilah biru horizontalsumber
a
,b
,i
,s
, dll Gunakan*
bukandiv
untuk pemilih CSS.background
sebagai singkatan untukbackground-image
.border-radius
. Misalnya,c{border-radius:100% 0 0;
bukannyac{border-top-left-radius:100%;
Ruby 2.3.1,
376359 byteMenggunakan permata RMagick.
Contohnya
50x50
250x250
500x500
1000x1000
File mengambil dua parameter - yang pertama adalah dimensi dan yang kedua adalah nama file untuk menyimpan output sebagai.
Tidak disatukan
Saya awalnya mulai memecahkan ini menggunakan oily_png / chunky_png tapi itu mungkin akan berakhir terlalu rumit dibandingkan dengan RMagick. Fungsi elips RMagick menjadikannya mudah dan pekerjaan utamanya adalah menyelaraskan bentuk / ukuran segalanya.
Ini adalah pengajuan Code Golf pertama saya (jawaban SE pertama juga) dan saya hanya menganggap diri saya agak menengah dengan Ruby. Jika Anda memiliki masukan tentang peningkatan / kiat, jangan ragu untuk berbagi!
sumber
Python 2,
378373 byteSaya benar-benar ingin melakukan ini menggunakan
turtle
. Saya harus menghapus pengetahuan saya tentang Geometri untuk ini, menghitung sudut dan panjang yang tidak disediakan dalam deskripsi tantangan.Sunting: dihapus
up()
, karena hal itu menghilangkan sepotong kecil putih antara hijau dan biru dan membuat lingkaran bagian dalam terlihat lebih baik. Ini lebih memperlambat program.Sunting: diganti
9*n
dengan2*n
untuk membuat lebih cepat. Saya memutuskan bahwa itu masih akan membuat lingkaran halus.Catatan:
n
jika Anda melepasspeed(0)
, yang saya tambahkan hanya untuk kecepatan.circle
pertumbuhanO(n)
, karena menentukan berapa banyak sisi poligon tertulis untuk menggambar lingkaran.Cobalah online
Tidak Dicampur: Cobalah secara online
Fakta menyenangkan:
Trinket
adalah sebuah anagram dariTkinter
, paket GUI Python dan fondasi untukturtle
.sumber
n
untuk saya? Jika itu tidak terlihat bagus, saya mungkin perlu meletakkan beberapasqrt
di sana untuk lebih tepatnya. Saya membulatkan ke seperseribu.PHP + GD,
529449 byteIni mengambil parameter string kueri
n
dan menampilkan versi PNG dari logo dengan ukuran yang ditentukan.Tidak Terkumpul:
N = 13:
N = 200:
sumber
imagecolorallocate
; cukup beri 0xRRGGBB sebagai warna pada fungsi menggambar. Beberapa lagi bermain golf dan turun ke 329 byte:,imagefill($i=imagecreatetruecolor($n=$argv[1],$n),0,0,($m=[4359668,3450963,0xfbbc05,0xea4335,0xffffff])[4]);for($j=-11.6;$e=[45,135,225,315][$k];$j=$e)($a=imagefilledarc)($i,$h=$n/2,$h,$n,$n,$j,$e,$m[$k++],0);$a($i,$h,$h,$n*.6,$n*.6,0,0,$m[4],0);imagefilledrectangle($i,$h,$h-$n*.1,$h+$h*.98,$h+$h*.2,$m[0]);imagepng($i,"g.png");
dijalankan dengan-r
, mengambil input dari baris perintah dan output keg.png
.[$k
harus[+$k
. Tapi yang ini juga bisa digunakan:imagefill($i=imagecreatetruecolor($n=$argv[1],$n),0,0,$w=2**24-1);$j=-11.6;foreach([$b=4359668,3450963,0xfbbc05,0xea4335]as$c)($a=imagefilledarc)($i,$h=$n/2,$h,$n,$n,$j,$j=45+90*$k++,$c,0);$a($i,$h,$h,$p=$n*.6,$p,0,0,$w,0);imagefilledrectangle($i,$h,$n*.4,$n*.99,$p,$b);imagepng($i,"g.png");
(291 bytes)imagecolorallocate
. Saya akan memperbarui jawaban saya dengan kode Anda. Tetapi apakah Anda perlu menampilkan ke nama file? Tidak bisakah Anda meninggalkan nama fileimagepng
dan hanya output ke stdout?Java, 568 byte
Bukan bahasa terkuat untuk bermain golf, tapi inilah upaya saya yang sungguh-sungguh:
Pemakaian:
Versi tidak golf - ide dasarnya adalah bekerja dalam sistem koordinat u, v ∈ [−0,5, 0,5] dan menghitung jarak dan sudut setiap piksel dari pusat gambar:
Implementasi saya menghitung dan menggambar piksel mentah. Dimungkinkan untuk membuat implementasi alternatif yang menggunakan rutinitas grafis tingkat tinggi seperti Graphics2D dan Arc2D untuk melakukan menggambar, terutama dengan anti-aliasing.
sumber
Pergi, 379 byte
Fungsi ini
f
mengambilint
argumen tunggal (faktor skala) dan menghasilkan gambar SVG yang diskalakan dengan tepat.Cobalah online di Ideone.
Contoh output:
Tampaknya salah untuk menenangkan penguasa Google kami dalam bahasa pemrograman apa pun kecuali bahasa mereka sendiri.
sumber
CJam, 141
Cobalah online
Menghasilkan gambar dalam format ASCII ppm.
Untuk versi ASCII-art yang lebih baik dilihat di browser, coba kode ini . Ini membantu memvisualisasikan algoritma juga.
Penjelasan:
sumber
JavaScript (ES6) (+ SVG), 293 byte, tidak bersaing
Sayangnya, garis bulat bergabung tidak cukup efek yang diminta, tetapi cukup dekat.
sumber
FreeMarker + HTML / CSS, 46 + 468 = 514 byte
HTML:
CSS:
Dengan asumsi prosesor FreeMarker dijalankan dengan
n
set variabel , mewakili input.Penjelasan angka ajaib:
Semuanya didasarkan pada pembungkus 10x10px, kemudian diskalakan oleh
n/10
.JSFiddle tidak digolfkan
sumber
transform:scale(n)
dengantransform:scale(<?=$_GET[n])?>
(PHP). Dalam javascript, Anda dapat menambahkan Bagian CSS ke elemen style343 oktet dari Haskell
Penjelasan
sumber
0x7C
/124
/|
) dalam hal ini akan menjadi 338 septet Haskell . Tetapi mengingat bagaimana standar 8-bit-ke-byte dalam penyimpanan data dalam beberapa dekade terakhir, saya pikir istilah "byte" cukup spesifik tanpa mengalahkan kuda mati.SAS -
590536521 byteIni menggunakan fasilitas GTL Annotation . Input ditentukan dalam variabel makro di baris pertama. Untuk beberapa byte tambahan, Anda dapat mendefinisikan semuanya sebagai makro. Itu masih menyelinap di bawah Java dan beberapa jawaban HTML, meskipun Anda harus mendefinisikan template grafik nol hanya untuk dapat merencanakan apa saja!
Saya telah meninggalkan garis istirahat untuk sedikit keterbacaan, tetapi saya tidak menghitung mereka terhadap total karena berfungsi tanpa mereka.
Sunting: mengurangi beberapa byte lagi melalui penggunaan vars makro, pengaturan default dan pilihan operator.
Sunting 2: singkirkan
do-end
blok untukif-then-else
logika dan entah bagaimana masih berfungsi - saya tidak sepenuhnya mengerti bagaimana. Juga, saya menemukaneuclid
fungsinya!sumber
SCSS - 415 byte
Mengambil input sebagai
$N: 100px;
dan<div id="logo"></div>
, tidak yakin apakah ini harus dihitung dalam total ...Demo di JSFiddle
sumber
Haskell dengan paket JuicyPixels , 306 byte
Contoh penggunaan:
Ini mungkin bisa diperbaiki. Idenya adalah untuk melewatkan fungsi ke
generateImage
yang memilih piksel (warna benar-benar) yang harus pergi pada posisi x, y. Untuk itu kami menggunakan lambda yang menambahkann
sebagai parameter dan mengonversikan semuanya menjadi mengapung pada saat yang sama. The#
Fungsi dasarnya memeriksa jika kita berada di ring, bar, atau tidak. Jika itu cincin yang kita berikan tongkat estafet%
, jika bar kita hanya mengembalikan biru, jika tidak putih.%
memeriksa kuadran mana kita berada dan mengembalikan warna yang sesuai jika bukan biru. Biru adalah kasus khusus karena kita perlu memastikan itu tidak membungkus merah, jadi kita hanya mengembalikan biru jika diy
bawah "garis bar" kalau tidak kita kembali putih. Itulah gambaran umum.sumber
Processing.py - 244 byte + 1 byte untuk jumlah digit dalam N
Mari kita mulai dengan kodenya. Ini dapat ditempel di lingkungan Pemrosesan dan berlari (berubah
N
untuk ukuran yang berbeda).Cheat kecil: lingkaran yang memotong bagian dari logo digambar dalam warna abu-abu Pemrosesan 205, yang merupakan warna latar belakang default. Mengekspor ini ke gambar tidak akan terlihat sama. Ini menghemat panggilan ke
background(255)
.Penjelasan
Contohnya
N
= 400N
= 13 (Ukuran minimum pemrosesan adalah 100x100)Catatan
Jika kami mengizinkan kami mengedit secara manual dalam beberapa nilai untuk
N
panggilan eksplisit kesetup
dandraw
tidak diperlukan dan turun ke 213 byte + 3 byte per digit padaN
.sumber