Triforce ReBoot [ditutup]

10

Melihat bagaimana halo dunia menjadi bumerang, sangat sulit.

Saya suka Zelda dan saya suka ReBoot.

Buat yang berikut ini

masukkan deskripsi gambar di sini

Persyaratan:
Ini harus berupa jendela (bisa berupa jendela APAPUN bahkan browser dan semacamnya).
Jendela bisa dari berbagai ukuran.
Jendela mungkin tidak mengandung hal lain selain gambar.
Jendela seharusnya tidak langsung menutup sendiri.
Segitiga harus berwarna biru.
Lingkaran harus berwarna hijau.
Segitiga yang lebih kecil harus menyentuh tepi
gambar Tidak mencuri dengan menyediakan tautan.

Kondisi: Kode terpendek menang.

PS: Ya logo ReBoot sedikit berbeda tetapi ini cukup dekat untuk membuatnya menyenangkan.

EDIT: Saya menambahkan persyaratan lain. Sepertinya kita memiliki banyak orang yang sangat jenius yang senang menemukan celah: PI mencintai kalian.

Quillion
sumber
"Segitiga pasti teduh kuning." Konflik gambar?
Timtech
@Timtech Saya minta maaf, teks digarisbawahi sebagai oranye karena salah mengeja dan saya pikir oranye sambil ingin menulis biru.
Quillion
1
Oke, setidaknya sudah diperbaiki sekarang. Dan saya bahkan mencoba mendapatkan komentar yang lebih pendek - terlalu banyak kode golf ...
Timtech
Apakah saya mendapatkan poin bonus jika gambar memenuhi layar, dan terus berlanjut saat saya mengubah ukuran layar? (Anda harus membiarkan lingkaran menjadi oval)
Cruncher
Sebenarnya membaca persyaratan lagi, apa yang menghentikan seseorang dari hanya membuat gambar dalam cat, dan membuat program membaca gambar? Ini hanya akan menjadi beberapa baris dalam python. Mungkin Anda harus menulis aturan yang menentang itu
Cruncher

Jawaban:

10

Mathematica 118 119 118 107 97

Sunting: Disingkat menjadi 107 karakter dengan bantuan dari Belisarius dan ke 97 dengan alephalpha.

CreateDialog[Graphics@{Blue,Polygon@Outer[Plus,#,#,1]&@{{0,0},{1,1},{2,0}}, Green,
{2,1}~Circle~1}]

segi tiga

DavidC
sumber
Saya takut Anda telah mengalahkan saya: 3 Tetapi lingkaran itu haruslah hijau!
Timtech
Sekarang hijau. Terima kasih telah mencatat.
DavidC
1
Pada 107:p=Polygon;a={1,1};b={2,0};CreateDialog[Graphics@{Blue,p@{0a,2b,2a},White,p@{a,b+a,b},Green,{2,1}~Circle~1}]
Dr. belisarius
1
CreateDialog[Graphics@{Blue,Polygon@Outer[Plus,#,#,1]&@{{0,0},{1,1},{2,0}},Green,{2,1}~Circle~1}]
alephalpha
3
Saya mendapat sedikit bantuan dari teman-teman saya.
DavidC
7

Dyalog APL ( 121 116 115)

(Edit: gunakan lebar segitiga 8 elemen, bukan 10, untuk mempersingkat kode)

(Sunting 2: Saya hanya pernah menggunakan , jadi sertakan ¨dalam definisi M)

M←{' ',⍵,⍺,⍨4/0}¨⋄⎕SM←↑(256M⊃,/(⊂8 0)(⊂8 32)(⊂0 16)∘.+⊂(,⍳⍴Z)/⍨≤/¨,Z←⊖Z,⌽Z←2/⍳2/8),512M⌈0 16∘+¨1 2∘ר8+8×1 2∘○¨⍳1e4

Grafik? Siapa yang butuh grafis?

(Juga, hitam adalah latar belakang default, Anda tidak mengatakan untuk mengubahnya)

masukkan deskripsi gambar di sini

marinus
sumber
4

Script shell: 166 163 karakter

f=-fill
d=-draw
convert -size 64x32 xc: $f blue $d 'polygon 32,0 0,32 64,32' $f white $d 'polygon 32,32 16,16 48,16' $f none -stroke lime $d 'circle 32,16 32,0' x:

Output sampel:

Logo Triforce ReBoot

manatwork
sumber
ini lebih dari imagemagick daripada shell
mniip
@niip, benar. Tetapi karena ImageMagick terutama perpustakaan. Jika ini adalah skrip PHP menggunakan IMagick, tajuk pos akan mengatakan PHP, bukan ImageMagick. Menurut logika saya. Saya tidak menentang peningkatan judul. Tapi bagaimanapun, 2 dari 3 karakter yang dipersingkat sejak versi pertama ada di sisi shell. :)
manatwork
4

R, 124 , 122 , 111

frame()
p=polygon
p(c(1,3,5)/5,c(1,3,1)/5,c=4)
p(c(2,4,3)/5,c(2,2,1)/5,c="white")
symbols(.6,.4,.1,i=1,a=T,f=3)

Ini menghasilkan gambar berikut di jendela plot:

masukkan deskripsi gambar di sini

Sven Hohenstein
sumber
Saya pikir Anda dapat menyimpan satu karakter dengan menulis p=polygon, lalu p(c(1,3,5dll. (BTW, pada sistem saya, ukuran lingkaran berskala berbeda dari segitiga ketika ukuran jendela, dan saya harus sedikit bermain untuk mendapatkan lingkaran untuk memotong lingkaran. sudut "alun-alun".)
res
@res, terima kasih atas tipnya. Ukuran lingkaran adalah kelemahan utama dari solusi ini. Saya tidak dapat menemukan kode pendek untuk menyelesaikan masalah ini.
Sven Hohenstein
@plannapus Ide bagus, terima kasih! Ini menyimpan 11 karakter.
Sven Hohenstein
3

Jawa, 434 358 349

import java.awt.*;
public class T
{
    public static void main(String[] a)
    {
        new Frame()
        {
            public void paint(Graphics g)
            {
                g.setColor(Color.BLUE);
                Polygon p=new Polygon(new int[]{50, 75, 100},new int[]{75, 50, 75},3);
                g.fillPolygon(p);
                p.translate(-25, 25);
                g.fillPolygon(p);
                p.translate(50, 0);
                g.fillPolygon(p);
                g.setColor(Color.green);
                g.drawOval(50, 50, 50, 50);
            }
        }.show();
    }
}

bermain golf

import java.awt.*;public class T{public static void main(String[] a){new Frame(){public void paint(Graphics g){g.setColor(Color.BLUE);Polygon p=new Polygon(new int[]{50,75,100},new int[]{75,50,75},3);g.fillPolygon(p);p.translate(-25,25);g.fillPolygon(p);p.translate(50,0);g.fillPolygon(p);g.setColor(Color.green);g.drawOval(50,50,50,50);}}.show();}}

Siapa tahu golf mengurangi kode begitu banyak.

EDIT: Terima kasih manatwork untuk semua saran Anda.

Quillion
sumber
1
Tolong golf kode Anda.
Kevin Cox
Anda masih memiliki ruang yang tidak berguna setelah koma pemisah parameter. Dan tolong gunakan blok kode alih-alih marka kode inline, jadi skrip seperti Code Golf UserScript Enhancement Pack dapat mengenalinya sebagai kode dan menampilkan ukurannya.
manatwork
3

Bahasa Game Maker, 167 165 155

EDIT 1 - Saya mencukur dua karakter dengan mengganti c_greendengan 32768, nilai yang sama. Nilai warna lainnya lebih panjang dari nama yang telah ditentukan sebelumnya.

EDIT 2 - Golf epik! Variabel yang digunakan untuk nilai yang sering digunakan, dan lupa bahwa baris baru tidak diperlukan (baris baru dihitung sebagai dua spasi).

Kamar ( r) ditentukan 64 oleh 32 dengan latar belakang putih. Objek dada di mana saja di kamar r. Buat kode acara:

a=16b=32draw_set_color(c_blue)draw_triangle(0,b,64,b,b,0,0)draw_set_color(32768)draw_circle(b,a,a,1)draw_set_color(c_white)draw_triangle(a,a,48,a,b,b,0)

Hasil:

Output kamar r

Ti84-Basic - 54 karakter (tetapi outputnya hitam dan putih)

:Line(0,0,2,0
:Line(0,0,1,1
:Line(2,0,1,1
:Circle(1,.5,.5
Timtech
sumber
Tidak ada gambar yang digunakan!
Timtech
Apakah gambar muncul di jendela sendiri?
DavidC
@ DavidCarraher Ya. Saya menggunakan tangkapan layar dalam gim, jadi jendela tidak muncul.
Timtech
Anda menggunakan draw_set_colortiga kali. Tidak bisakah Anda menyimpan karakter dengan sesuatu seperti d=draw_set_character?
DavidC
@ DavidCarraher Saya sudah mencobanya; itu tidak bekerja :( GML kadang-kadang keras kepala.
Timtech
2

HTML, 101

<img style=position:absolute;clip:rect(30px,130px,110px,20px) src=http://i.stack.imgur.com/iE6m9.png>
Danko Durbić
sumber
2
Ada persyaratan baru - "Tidak mencuri gambar dengan memberikan tautan."
Timtech
Saya yakin Anda bisa mengalahkan itu dengan sederhana: http://someshort.url(... dan ini akan menciptakan persyaratan lain juga)
Olivier Dulac
2

HTML + CSS, 352 290 261 257

<div style="width:0;border:50px solid #fff;border-bottom-color:#00f">
<p style="border:25px solid #00f;border-top-color:#fff;border-bottom:0;margin:25px 0 0 -25px">
<p style="border:1px solid #0f0;border-radius:50px;width:50px;height:50px;margin:-52px -26px">

http://jsfiddle.net/WF3hP/6/

Tidak Disatukan:

<style>
    #blue-triangle {
        width:0;
        border:50px solid #fff;
        border-bottom-color:#00f
    }
    #white-triangle {
       border:25px solid #00f;
       border-top-color:#fff;
       border-bottom:0;
       margin:25px 0 0 -25px        
    }
    #circle {
       border:1px solid #0f0;
       border-radius:50px;
       width:50px;
       height:50px;
       margin:-52px -26px        
     }
</style>
<div id="blue-triangle">
<p id="white-triangle">
<p id="circle">
Danko Durbić
sumber
1
Alih-alih mengatur border-leftdan border-rightsecara terpisah, lebih baik atur borderkemudian kurangi yang tidak dibutuhkan seperti border-top:0: jsfiddle.net/WF3hP/2
manatwork
Ya, saya akan merekomendasikan itu juga. Ini akan membuat kode Anda lebih pendek.
Timtech
@manatwork, bahkan itu dapat ditingkatkan dengan border-bottom-colorbukannya border-bottompada div pertama dan juga border-top-colorpada div kedua. Dan menggunakan 1emalih-alih 25pxdan 2embukannya 50pxmengubah ukuran tetapi menyimpan beberapa karakter.
Peter Taylor
Terima kasih, @manatwork & Pete Taylor. Saya mencoba menggunakan mereka alih-alih px, tetapi sulit untuk mendapatkan lingkaran di tengah jika perbatasannya harus selebar 1px.
Danko Durbić
Apakah id itu harus selama itu?
Timtech
2

R, 108 karakter

Sangat mirip dengan solusi Sven Hohenstein tetapi berbeda dalam dua hal menarik, jadi saya pikir saya akan menambahkannya:

frame()
p=polygon
p(c(0:3,1:4)/5,c(0:1,0:1,1:2,1:0)/5,c=4)
t=seq(0,2*pi,.1)
p(.2*cos(t)+.4,.2*sin(t)+.2,b=3)

Alih-alih menggambar segitiga biru besar dan putih kecil, saya menggambar poligon yang sudah mewakili tiga segitiga. Sedangkan untuk lingkaran, yang ini (yang kodenya jelas lebih panjang dari milik Sven) tidak kehilangan kontaknya dengan segitiga pada pengubahan ukuran.
Akhirnya alih-alih menggunakan nama warna saya menggunakan nomor mereka di palet warna default R (4 untuk biru dan 3 untuk hijau).

masukkan deskripsi gambar di sini

plannapus
sumber
1

JavaScript (kanvas, Firefox), 237 231 karakter

<body onload=with(c=document.all.a.getContext('2d'))fillStyle='#00F',strokeStyle='#0F0',mozFillRule='evenodd',c.f=lineTo,moveTo(4,0),f(8,4),f(0,4),f(2,2),f(6,2),f(4,4),f(2,2),fill(),beginPath(),arc(4,2,2,0,7),stroke()><canvas id=a>

Saya tidak dapat menemukan persyaratan yang sulit pada dimensi, jadi saya memutuskan untuk menyalahgunakannya sedikit dan pergi dengan 8 × 4 piksel untuk mengurangi ukuran kode ... juga, bergantung pada ekstensi Mozilla mozFillRule untuk mendapatkan pengisian yang bahkan aneh untuk triforce.

jsbin (kecil) , jsbin (lebih besar)

FireFly
sumber
1

SVG 305 296

<svg xmlns="http://www.w3.org/2000/svg" width="100%" height="100%" viewBox="1 3 9 10">
<path d="M 5,4 2.5,7 7.5,7 5,4 z M 7.5,7 5,10 10,10 7.5,7 z M 5,10 2.5,7 0,10 5,10 z"
fill="#00f" /><path d="m 7.5,7 a 2.5,3 0 0 1 -5,0 2.5,3 0 1 1 5,0 z"
fill="none" stroke="#0f0" stroke-width="0.02" /></svg>

Jendela Firefox dengan svg draw

F. Hauri
sumber
Alih-alih style="fill:#00f", Anda dapat menggunakan fill="#00f", saya pikir. Sama untuk yang lain style.
Ry-
@minitech: Saya harus dapat menyimpan 5 byte lebih banyak dalam menggeser gambar ini dengan 1: memiliki rencana vertikal dari pada 2 to 9bukan 3 to 10...
F. Hauri
1

HTML 118

<svg><path fill=#00f d="M0,2 2,0 4,2 2,2 3,1 1,1 2,2z"/><circle fill=none stroke-width=.1 stroke=#0f0 cx=2 cy=1 r=1 />
wolfhammer
sumber
1

Sage (CLI), 111 106

p=polygon;circle((2,1),1,color=(0,1,0))+p([(0,0),(2,2),(4,0)])+p([(1,1),(3,1),(2,0)],axes=0,color=(1,1,1))

gambar di jendela dibuat oleh SageIni melalui antarmuka baris perintah Sage. (Ini juga berfungsi di Sage Notebook, tetapi meskipun gambar muncul di selnya sendiri, itu mungkin tidak memenuhi syarat sebagai "jendela".)

EDIT: Menghilangkan 5 tanda minus dan mengganti tangkapan layar sel Sage Notebook dengan salah satu jendela Sage CLI. (Credit @boothby)

res
sumber
Jika Anda memanggil .show()objek grafis dari CLI, itu akan muncul jendela. Anda juga dapat menyimpan beberapa karakter dengan menggeser semuanya (+ 2, + 1).
stan
@ boothby - Terima kasih atas ide untuk menghilangkan tanda minus. Tentang jendela, ternyata menjalankan program apa adanya (tanpa .show ()) menghasilkan jendela yang diinginkan dari Sage CLI. (Baik versi ini maupun .show () berfungsi ketika saya menjalankan Sage di Linux di mesin virtual (Win7 / VirtualBox). Bekerja dengan baik ketika saya mem-boot Ubuntu dan menjalankan Sage seperti itu.) Terima kasih atas dorongan untuk mencoba CLI.
res
0

Golf-Basic 84, 36 karakter (Output Hitam dan Putih)

l;0,0,2,0l;0,0,1,1l;2,0,1,1c;1,.5,.5
Timtech
sumber