Triforce ReBoot [zamknięte]

10

Patrząc na to, jak strasznie świat się odwrócił, oto trudniejszy.

Uwielbiam Zelda i ReBoot.

Utwórz następujące elementy

wprowadź opis zdjęcia tutaj

Wymagania:
Musi to być okno (może to być DOWOLNE okno, nawet przeglądarki itp.).
Okno może mieć dowolny rozmiar.
Okno nie może zawierać niczego poza obrazem.
Okno nie powinno od razu się zamknąć.
Trójkąty muszą mieć dowolny odcień niebieskiego.
Koło musi mieć dowolny odcień zieleni.
Mniejszy trójkąt musi dotykać krawędzi
Bez kradzieży obrazów poprzez podanie linków.

Warunek: wygrywa najkrótszy kod.

PS: Tak Logo ReBoot jest nieco inne, ale jest wystarczająco blisko, aby było fajnie.

EDYCJA: Dodałem kolejny wymóg. Wygląda na to, że mamy wielu bardzo genialnych ludzi, którzy lubią znajdować luki: PI kocham was.

Quillion
źródło
„Trójkąty muszą mieć dowolny odcień żółtego”. Konflikty obrazu?
Timtech
@Timtech Przykro mi, tekst został podkreślony jako pomarańczowy z powodu błędów ortograficznych i pomyślałem, że pomarańczowy chce pisać na niebiesko.
Quillion
1
Okej, przynajmniej teraz jest naprawiony. I nawet staram się uzyskać krótsze komentarze - za dużo golfa w golfa ...
Timtech
Czy dostaję punkty bonusowe, jeśli obraz wypełnia ekran i kontynuuje powiększanie ekranu? (Musisz wtedy pozwolić, aby okrąg był owalny)
Cruncher
W rzeczywistości, czytając ponownie wymagania, co powstrzymuje kogoś od stworzenia obrazu w farbie i zmuszenia programu do odczytania obrazu? To byłoby tylko kilka linii w pythonie. Być może powinieneś napisać przeciw temu regułę
Cruncher

Odpowiedzi:

10

Mathematica 118 119 118 107 97

Edycja: Skrócono do 107 znaków z pomocą Belizariusza i do 97 znaków z alephalpha.

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

trójkąt

DavidC
źródło
Bałam się, że mnie pokonałeś: 3 Ale ten krąg musi być zielony!
Timtech
Teraz jest zielony. Dziękuję za uwagę.
DavidC
1
W 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 Belizariusz
1
CreateDialog[Graphics@{Blue,Polygon@Outer[Plus,#,#,1]&@{{0,0},{1,1},{2,0}},Green,{2,1}~Circle~1}]
alephalpha
3
Dostałem trochę pomocy od moich przyjaciół.
DavidC
7

Dyalog APL ( 121 116 115)

(Edycja: użyj trójkątów o szerokości 8 elementów zamiast 10, aby nieco skrócić kod)

(Edycja 2: Używałem tylko , więc zawarłem ¨w definicji 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

Grafika? Kto potrzebuje grafiki?

(Również czarne jest domyślnym tłem, nie powiedziałeś, żeby to zmienić)

wprowadź opis zdjęcia tutaj

marinus
źródło
4

Skrypt powłoki: 166 163 znaków

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:

Przykładowe dane wyjściowe:

Logo Triforce ReBoot

człowiek w pracy
źródło
jest to bardziej
imagemagick
@mniip, prawda. Ale ponieważ ImageMagick to przede wszystkim biblioteka. Gdyby to był skrypt PHP korzystający z IMagick, nagłówek postu powiedziałby PHP, a nie ImageMagick. Cóż, zgodnie z moją logiką. Nie jestem przeciwny poprawie kursu. Ale tak czy inaczej, 2 z 3 znaków skraca się od pierwszej wersji po stronie powłoki. :)
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)

Daje to następujący obraz w oknie wydruku:

wprowadź opis zdjęcia tutaj

Sven Hohenstein
źródło
Myślę, że możesz zapisać jedną postać, pisząc p=polygon, a potem p(c(1,3,5itd. (BTW, w moim systemie, rozmiar koła skaluje się inaczej niż trójkąty, gdy okno jest przeskalowane, i muszę się nim trochę pobawić, aby koło przecięło się rogi „kwadratu”.)
res
@res Dzięki za wskazówkę. Rozmiar koła jest główną wadą tego rozwiązania. Nie udało mi się znaleźć krótkiego kodu, aby rozwiązać ten problem.
Sven Hohenstein,
@plannapus Świetny pomysł, dzięki! To uratowało 11 znaków.
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();
    }
}

grał w golfa

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

Kto wiedział, że golf tak bardzo ogranicza kod.

EDYCJA: Dziękujemy za wszystkie sugestie.

Quillion
źródło
1
Proszę zagrać w swój kod.
Kevin Cox
Nadal masz bezużyteczne spacje po przecinkach separatora parametrów. I proszę używać bloku kodu zamiast wbudowanego znacznika kodu, aby skrypty, takie jak Code Golf UserScript Enhancement Pack, mogły rozpoznać go jako kod i wyświetlić jego rozmiar.
manatwork
3

Game Maker Language, 167 165 155

EDYCJA 1 - Ogoliłem dwa znaki, zastępując c_greenje 32768tą samą wartością. Wartości drugiego koloru były dłuższe niż ich wstępnie zdefiniowane nazwy.

EDYCJA 2 - Epicki golf! Używane zmienne dla często używanych wartości i zapomniałem, że znaki nowej linii nie są potrzebne (znaki nowej linii liczą się jako dwie spacje).

Room ( r) jest wstępnie zdefiniowany 64 na 32 z białym tłem. Obiekt djest w dowolnym miejscu w pokoju r. Narysuj kod zdarzenia:

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)

Wynik:

Wydajność pomieszczenia r

Ti84-Basic - 54 znaki (ale wydruk jest czarno-biały)

:Line(0,0,2,0
:Line(0,0,1,1
:Line(2,0,1,1
:Circle(1,.5,.5
Timtech
źródło
Nie użyto zdjęć!
Timtech
Czy figura pojawia się we własnym oknie?
DavidC
@DavidCarraher Tak. Użyłem przechwytywania ekranu w grze, więc okno się nie wyświetla.
Timtech
Użyłeś draw_set_colortrzy razy. Czy nie możesz uratować postaci według czegoś takiego d=draw_set_character?
DavidC
@DavidCarraher Próbowałem już tego; to nie działa :( GML czasami staje się uparty.
Timtech
2

HTML, 101

<img style=position:absolute;clip:rect(30px,130px,110px,20px) src=http://i.stack.imgur.com/iE6m9.png>
Danko Durbić
źródło
2
Istnieje nowy wymóg - „Nie kradnij zdjęć przez udostępnianie linków”.
Timtech
Założę się, że możesz to pokonać za pomocą prostego: http://someshort.url(... i to też stworzyłoby kolejny wymóg)
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/

Nie golfowany:

<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ć
źródło
1
Zamiast ustawiać border-lefti border-rightoddzielnie, lepiej ustawić, bordera następnie zmniejszyć niepotrzebne, takie jak border-top:0: jsfiddle.net/WF3hP/2
manatwork
Tak, polecam to też. Skróci Twój kod.
Timtech
@manatwork, nawet to można poprawić za pomocą border-bottom-colorzamiast border-bottomna pierwszym divie i podobnie border-top-colorna drugim divie. I używanie 1emzamiast 25pxi 2emzamiast 50pxzmienia rozmiar, ale oszczędza kilka znaków.
Peter Taylor
Dzięki, @manatwork i Pete Taylor. Próbowałem użyć ich zamiast px, ale trudno jest wyśrodkować okrąg, jeśli jego obwódka musi mieć szerokość 1 piksela.
Danko Durbić
Czy identyfikator naprawdę musi być tak długi?
Timtech,
2

R, 108 znaków

Bardzo podobny do rozwiązania Svena Hohensteina, ale różni się dwoma interesującymi punktami, więc pomyślałem, że mógłbym go dodać:

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)

Zamiast rysować duży niebieski trójkąt i mały biały, rysuję wielokąt reprezentujący już trzy trójkąty. Jeśli chodzi o okrąg, ten (którego kod jest wyraźnie dłuższy niż Svena) nie traci kontaktu z trójkątami przy zmianie rozmiaru.
Wreszcie zamiast używać nazw kolorów, użyłem ich numeru w domyślnej palecie kolorów R (4 dla niebieskiego i 3 dla zielonego).

wprowadź opis zdjęcia tutaj

plannapus
źródło
1

JavaScript (canvas, Firefox), 237 231 znaków

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

Nie mogłem znaleźć żadnych twardych wymagań dotyczących wymiarów, więc postanowiłem to trochę nadużyć i przejść z 8 × 4 pikselami, aby zmniejszyć rozmiar kodu ... również, zależy od rozszerzenia MozFillRule, aby uzyskać parzyste nieparzyste wypełnienie dla triforce.

jsbin (mały) , jsbin (większy)

Robaczek świętojański
źródło
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>

Okno Firefoksa z rysunkiem svg

F. Hauri
źródło
Myślę, że zamiast tego style="fill:#00f"możesz użyć fill="#00f". To samo dla pozostałych styles.
Ry-
@minitech: Muszę być w stanie zaoszczędzić jeszcze 5 bajtów przesuwając ten rysunek przez 1: posiadanie planu pionowego 2 to 9zamiast zamiast 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
źródło
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))

obraz w oknie utworzonym przez SageOdbywa się to poprzez interfejs wiersza poleceń Sage. (Działa to również w Sage Notebook, ale chociaż obraz pojawia się we własnej komórce, prawdopodobnie nie kwalifikuje się jako „okno”).

EDYCJA: Wyeliminowano 5 znaków minus i zastąpiono zrzut ekranu komórki Sage Notebook jednym z okien interfejsu Sage CLI. (Kredyt @boothby)

res
źródło
Jeśli wywołasz .show()obiekt graficzny z interfejsu CLI, pojawi się okno. Możesz także uratować kilka postaci, przesuwając wszystko (+ 2, + 1).
stoisko
@boothby - Dziękujemy za pomysł, aby pozbyć się znaków minus. Jeśli chodzi o okno, okazuje się, że uruchomienie programu w stanie, w jakim się znajduje (bez .show ()), daje pożądane okno z interfejsu Sage CLI. (Ani ta, ani wersja .show () nie działa, gdy uruchamiam Sage pod Linuxem na maszynie wirtualnej (Win7 / VirtualBox). Działa dobrze, kiedy uruchamiam Ubuntu i uruchamiam Sage w ten sposób.) Dzięki za próbę uruchomienia CLI.
res
0

Golf-Basic 84, 36 znaków (Wyjście jest czarno-białe)

l;0,0,2,0l;0,0,1,1l;2,0,1,1c;1,.5,.5
Timtech
źródło