Triforce ReBoot [kapalı]


10

Merhaba dünya nasıl korkunç bir şekilde geri tepti,

Zelda'yı ve ReBoot'u seviyorum.

Aşağıdakileri oluşturun

resim açıklamasını buraya girin

Gereksinimler:
Bir pencere olmalıdır (HERHANGİ bir pencere bile tarayıcılar ve benzeri olabilir).
Pencere herhangi bir boyutta olabilir.
Pencerede resim dışında başka bir şey olmayabilir.
Pencere hemen kapanmamalıdır.
Üçgenler mavinin herhangi bir tonu olmalıdır.
Daire yeşilin herhangi bir tonu olmalıdır.
Daha küçük üçgen,
bağlantılar sağlayarak Çalma yok görüntülerinin kenarlarına dokunmalıdır .

Koşul: En kısa kod kazanır.

PS: Evet ReBoot logosu biraz farklı ama bu eğlenceli hale getirmek için yeterince yakın.

EDIT: Başka bir gereksinim ekledim. Görünüşe göre boşluklar bulmaktan hoşlanan birçok dahi insan var: PI sizi seviyorum.


"Üçgenler sarı renkte olmalıdır." Resim çakışıyor mu?
Timtech

@Timtech Üzgünüm, yazım hatası nedeniyle metnin turuncu olarak altı çizildi ve mavi yazmak isterken turuncu olduğunu düşündüm.
Quillion

1
Tamam, en azından şimdi düzeltildi. Ve hatta daha kısa yorumlar almaya çalışıyorum - çok fazla kod golf ...
Timtech

Görüntü ekranı kaplar ve ekranı yeniden boyutlandırmaya devam edersem bonus puan alır mıyım? (O zaman dairenin oval olmasına izin vermelisiniz)
Cruncher

Aslında gereksinimleri tekrar okuduğumda, birinin sadece resimdeki boyayı oluşturmasını ve bir programın görüntüyü okumasını engelleyen nedir? Bu sadece python'da birkaç satır olurdu. Belki de buna karşı bir kural yazmalısınız
Cruncher

Yanıtlar:


10

Mathematica 118119118107 97

Düzenleme: Belisarius'un yardımı ile 107 karaktere ve alefali ile 97'ye kısaltılmıştır.

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

üçgen


Beni dövmekten korktum: 3 Ama o daire yeşil olmalı!
Timtech

Şimdi yeşil. Kaydettiğiniz için teşekkürler.
DavidC

1
107 yılında: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
Arkadaşlarımdan biraz yardım aldım.
DavidC

7

Dyalog APL ( 121 116 115),

(Düzenleme: kodu biraz kısaltmak için 10 yerine 8 öğe genişliğinde üçgenler kullanın)

(Edit 2: Ben hiç kullanıyordum , yani ¨tanımına dahil 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? Kim grafik ister?

(Ayrıca, varsayılan arka plan siyah, değiştirmeyi söylemediniz)

resim açıklamasını buraya girin


4

Kabuk komut dosyası: 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:

Örnek çıktı:

Triforce ReBoot logosu


Bu kabuk daha imagemagick
mniip

mniip, doğru. Ancak ImageMagick öncelikle bir kütüphane. Bu IMagick kullanan bir PHP betiği olsaydı, yazı başlığı ImageMagick değil PHP diyecekti. Benim mantığıma göre. Ben herhangi bir pozisyon gelişmesine karşı değilim. Her neyse, ilk versiyondan bu yana 3 karakter kısaltan 2 tanesi kabuk tarafında. :)
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)

Bu, bir çizim penceresinde aşağıdaki resmi üretir:

resim açıklamasını buraya girin


Sanırım yazarak bir karakter kaydedebilirsin p=polygon, p(c(1,3,5vb. "kare" köşeleri.)
res

@res Bahşiş için teşekkürler. Dairenin boyutu bu çözümün en büyük dezavantajıdır. Bu sorunu çözmek için kısa bir kod bulamadım.
Sven Hohenstein

@plannapus Harika fikir, teşekkürler! Bu 11 karakter kaydetti.
Sven Hohenstein

3

Java, 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();
    }
}

golfed

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();}}

Golfü bilenler kodu çok azaltır.

EDIT: Tüm önerileriniz için teşekkürler.


1
Lütfen kodunuzu golf oynayın.
Kevin Cox

Parametre ayırıcı virgüllerinden sonra hala boş alanlarınız var. Ve lütfen satır içi kod işaretlemesi yerine kod bloğunu kullanın, böylece Code Golf UserScript Geliştirme Paketi gibi komut dosyaları kodu kod olarak tanıyabilir ve boyutunu görüntüleyebilir.
manatwork

3

Oyun Makinesi Dili, 167 165 155

DÜZENLEME 1 - Ben değiştirerek iki karakter kazıttı c_greenile 32768aynı değerde. Diğer rengin değerleri, önceden tanımlanmış adlarından daha uzundu.

EDIT 2 - Destansı golf! Sık kullanılan değerler için değişkenler kullanıldı ve satırsonlarına gerek olmadığını unuttum (satırsonu iki boşluk olarak sayılır).

Oda ( r) beyaz bir arka planla 64 x 32 önceden tanımlanmıştır. Nesne dodanın herhangi bir yerinde r. Etkinlik kodunu çiz:

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)

Sonuç:

Oda r çıkışı

Ti84-Basic - 54 karakter (ancak çıktı siyah beyaz)

:Line(0,0,2,0
:Line(0,0,1,1
:Line(2,0,1,1
:Circle(1,.5,.5

Hiç resim kullanılmadı!
Timtech

Şekil kendi penceresinde görünüyor mu?
DavidC

@DavidCarraher Evet. Oyun içi ekran yakalama kullandım, bu yüzden pencere görünmüyor.
Timtech

draw_set_colorÜç kez kullandın . Karakterleri benzer bir şeyle kaydedemiyor d=draw_set_charactermusunuz?
DavidC

@DavidCarraher Bunu zaten denedim; işe yaramaz :( GML bazen inatçı olur
Timtech

2

HTML, 101

<img style=position:absolute;clip:rect(30px,130px,110px,20px) src=http://i.stack.imgur.com/iE6m9.png>

2
Yeni bir gereksinim var - "Bağlantı sağlayarak görüntü çalmak yok."
Timtech

: Sana bir basit olan bu yenebilirim bahis http://someshort.url(... ve bu yanı bir başka gereklilik yaratacak)
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/

Ungolfed:

<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">

1
Ayarlamak border-leftve border-rightayrı ayrı yapmak yerine , daha iyi bir set borderdaha sonra gereksiz olanı azaltın border-top:0: jsfiddle.net/WF3hP/2
manatwork

Evet, bunu da tavsiye ederim. Kodunuzu kısaltacaktır.
Timtech

@manatwork, ilk div border-bottom-coloryerine border-bottomve benzer şekilde border-top-colorikinci div yerine geliştirilebilir . Ve 1emyerine 25pxve 2emyerine kullanmak 50pxboyutu değiştirir, ancak birkaç karakter kaydeder.
Peter Taylor

Teşekkürler, @manatwork ve Pete Taylor. Pks yerine em kullanmayı denedim, ancak sınırı 1 piksel genişliğinde olması gerekiyorsa daireyi ortalamak zor.
Danko Durbić

Kimlik gerçekten bu kadar uzun olmalı mı?
Timtech

2

R, 108 karakter

Sven Hohenstein çözümüne çok benziyor, ancak iki ilginç noktada farklı, bu yüzden ekleyeceğimi düşündüm:

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)

Büyük bir mavi üçgen ve küçük beyaz bir üçgen çizmek yerine, zaten üç üçgeni temsil eden bir çokgen çiziyorum. Çembere gelince, bu kodu (kodu Sven'inkinden açıkça daha uzun olan) yeniden boyutlandırmadaki üçgenlerle olan temaslarını kaybetmez.
Son olarak renk adlarını kullanmak yerine R'nin varsayılan renk paletinde numaralarını kullandım (mavi için 4 ve yeşil için 3).

resim açıklamasını buraya girin


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>

Boyutlarda herhangi bir zor gereksinim bulamadım, bu yüzden biraz kötüye kullanmaya ve kod boyutunu azaltmak için 8 × 4 pikselle devam etmeye karar verdim ... triforce.

jsbin (küçük) , jsbin (büyük)


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>

Svg draw ile Firefox penceresi


Bunun yerine style="fill:#00f"kullanabilirsiniz fill="#00f". Diğer styles için de aynı .
Ry-

@minitech: Bu çizimi yukarı kaydırarak 5 bayt daha tasarruf edebilmeliyim 1: 2 to 9yerine dikey bir plana sahip olmak 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 />

1

Adaçayı (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))

Sage tarafından oluşturulan pencerede resimBu, Adaçayı komut satırı arayüzü üzerinden yapılır. (Bu, bir Adaçayı Defterinde de çalışır, ancak görüntü kendi hücresinde görünmesine rağmen, bu muhtemelen bir "pencere" olarak nitelendirilmez.)

DÜZENLEME: 5 eksi işareti ortadan kaldırıldı ve bir Sage Notebook hücresinin ekran görüntüsünü bir Sage CLI penceresinden biriyle değiştirdi. (Credit @boothby)


.show()CLI'den bir grafik nesnesini çağırırsanız , bir pencere açılır. Ayrıca her şeyi kaydırarak birkaç karakter kaydedebilirsiniz (+ 2, + 1).
boothby

@boothby - Eksi işaretlerinden kurtulma fikri için teşekkürler. Pencere hakkında, programı olduğu gibi çalıştırmanın (.show () olmadan) Sage CLI'den istenen pencereyi ürettiği ortaya çıkıyor. (Ne bu ne de .show () sürümü bir sanal makine (Win7 / VirtualBox) Linux altında Sage çalıştırdığınızda çalışır. Ubuntu önyükleme ve Sage bu şekilde çalıştırmak iyi çalışır.) CLI denemek için dürtmek için teşekkürler.
res

0

Golf-Basic 84, 36 karakter (Çıktı Siyah Beyaz)

l;0,0,2,0l;0,0,1,1l;2,0,1,1c;1,.5,.5
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.