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.


„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


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


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


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


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.


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

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>

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

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


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)


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


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

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)


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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.