Triforce ReBoot [закрыто]


10

Видя, как привет, мир ужасно обернулся, вот сложнее.

Я люблю Zelda, и я люблю ReBoot.

Создайте следующее

введите описание изображения здесь

Требования:
Это должно быть окно (может быть ЛЮБОЕ окно, даже браузеры и тому подобное).
Окно может быть любого размера.
Окно может не содержать ничего, кроме изображения.
Окно не должно закрываться сразу же.
Треугольники должны быть любого оттенка синего.
Круг должен быть любого оттенка зеленого.
Меньший треугольник должен касаться краев изображений
без кражи, предоставляя ссылки.

Условие: выигрывает самый короткий код.

PS: Да, логотип ReBoot немного отличается, но это достаточно близко, чтобы сделать его веселым.

РЕДАКТИРОВАТЬ: я добавил еще одно требование. Кажется, у нас есть много очень гениальных людей, которым нравится находить лазейки: я люблю вас, ребята.


«Треугольники должны быть любого оттенка желтого». Конфликты картинок?
Timtech

@Timtech Извините, из-за орфографии текст выделен оранжевым, и я подумал о оранжевом, когда хотел написать синим.
Quillion

1
Хорошо, по крайней мере, это сейчас исправлено. И я даже пытаюсь получить более короткие комментарии - слишком много кода игры в гольф ...
Timtech

Получу ли я бонусные баллы, если изображение заполняет экран и продолжает изменять размер экрана? (Вы должны позволить кругу быть овалом тогда)
Cruncher

На самом деле, читая требования еще раз, что мешает кому-то просто создать изображение в рисовании и заставить программу читать изображение? Это будет только пара строк в Python. Возможно, вы должны написать правило против этого
Cruncher

Ответы:


10

Mathematica 118 119 118 107 97

Изменить: Сокращено до 107 символов с помощью Велизария и до 97 с алефальфой.

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

треугольник


Мне было страшно, что ты побил меня: 3 Но этот круг должен быть зеленым!
Timtech

Сейчас зеленый. Спасибо, что заметили.
DavidC

1
В 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}]
Доктор Велизарий

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

3
Я получил небольшую помощь от моих друзей.
DavidC

7

Dyalog APL ( 121 116 115)

(Правка: используйте треугольники шириной 8 элементов вместо 10, чтобы немного сократить код)

(Изменить 2: я только когда-либо использовал , поэтому включены ¨в определение 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

Графика? Кому нужна графика?

(Кроме того, черный фон по умолчанию, вы не сказали, чтобы изменить его)

введите описание изображения здесь


4

Сценарий оболочки: 166 163 символа

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:

Пример вывода:

Логотип Triforce ReBoot


это скорее imagemagick, чем shell
mniip

@mniip, верно. Но так как ImageMagick это прежде всего библиотека. Если бы это был PHP-скрипт, использующий IMagick, заголовок поста был бы PHP, а не ImageMagick. Ну по моей логике. Я не против улучшения курса. Но в любом случае, 2 из 3 символов сокращаются с первой версии на стороне оболочки. :)
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)

Это создает следующую картинку в окне графика:

введите описание изображения здесь


Я думаю, что вы можете сохранить один символ, написав p=polygon, а затем p(c(1,3,5и т. Д. (Кстати, в моей системе размер круга масштабируется иначе, чем треугольники при изменении размера окна, и мне нужно немного поиграть с ним, чтобы круг пересек углы "квадрата".)
рез

@res Спасибо за совет. Размер круга является основным недостатком этого решения. Я не смог найти короткий код для решения этой проблемы.
Свен Хоэнштейн

@plannapus Отличная идея, спасибо! Это спасло 11 персонажей.
Свен Хоэнштейн

3

Ява, 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();}}

Кто знал, что игра в гольф уменьшает код так сильно.

РЕДАКТИРОВАТЬ: Спасибо Manatwork за все ваши предложения.


1
Пожалуйста, введите ваш код в гольф.
Кевин Кокс

У вас все еще есть бесполезные пробелы после запятой разделителя параметров. И, пожалуйста, используйте блок кода вместо встроенной разметки кода, чтобы такие скрипты, как Code Golf UserScript Enhancement Pack, могли распознавать его как код и отображать его размер.
Манатворк

3

Game Maker Language, 167 165 155

EDIT 1 - я сбрил двух символов, заменяя c_greenс 32768, то же значение. Значения других цветов были длиннее, чем их предопределенные имена.

РЕДАКТИРОВАТЬ 2 - Эпический гольф! Использовали переменные для часто используемых значений, и забыли, что новые строки не нужны (новые строки считаются двумя пробелами)

Комната ( r) предопределена 64 на 32 с белым фоном. Объект dнаходится где - нибудь в комнате r. Draw Event code:

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)

Результат:

Выход комнаты р

Ti84-Basic - 54 символа (но вывод черно-белый)

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

Фотографии не используются!
Timtech

Фигура появляется в своем собственном окне?
DavidC

@DavidCarraher Да. Я использовал снимок экрана в игре, поэтому окно не появляется.
Timtech

Вы использовали draw_set_colorтри раза. Разве вы не можете сохранить персонажей чем-то вроде d=draw_set_character?
DavidC

@DavidCarraher Я уже пробовал это; это не работает :( GML иногда становится немного упрямым.
Timtech

2

HTML, 101

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

2
Появилось новое требование - «Не воровать изображения, предоставляя ссылки».
Timtech

Могу поспорить, что вы можете победить это с помощью простого: http://someshort.url(... и это также создаст другое требование)
Оливье Дюлак

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
Вместо того, чтобы устанавливать border-leftи border-rightотдельно, лучше установить, а borderзатем уменьшить ненужный, как border-top:0: jsfiddle.net/WF3hP/2
manatwork

Да, я бы тоже порекомендовал. Это сделает ваш код короче.
Timtech

@manatwork, даже это можно улучшить с помощью border-bottom-colorвместо border-bottomпервого div и аналогично border-top-colorдля второго div. И использование 1emвместо 25pxи 2emвместо 50pxизменения размера, но сохраняет несколько символов.
Питер Тейлор

Спасибо, @manatwork и Пит Тейлор. Я попытался использовать em вместо px, но трудно центрировать круг, если его граница должна быть 1px шириной.
Данко Дурбич

Идентификатор действительно должен быть таким длинным?
Timtech

2

R, 108 символов

Очень похоже на решение Свена Хоэнштейна, но отличается двумя интересными моментами, поэтому я решил добавить его:

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)

Вместо того, чтобы рисовать большой синий треугольник и маленький белый, я рисую многоугольник, представляющий уже три треугольника. Что касается круга, этот (чей код явно длиннее кода Свена) не теряет своих контактов с треугольниками при изменении размера.
Наконец, вместо использования названий цветов я использовал их номер в цветовой палитре R по умолчанию (4 для синего и 3 для зеленого).

введите описание изображения здесь


1

JavaScript (холст, Firefox), 237 231 символов

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

Я не смог найти каких-либо жестких требований к размерам, поэтому решил немного злоупотребить этим и пойти с 8 × 4 пикселями, чтобы сократить размер кода ... также, опираясь на расширение Mozilla mozFillRule, чтобы получить четно-нечетное заполнение для Трифорс.

JSBIN (маленький) , JSBIN (больше)


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>

Firefox окно с SVG Draw


Вместо style="fill:#00f", вы можете использовать fill="#00f", я думаю. То же самое для других styleс.
Ry-

@minitech: Я должен быть в состоянии сэкономить еще 5 байтов при сдвиге этого рисунка 1: имея вертикальный план 2 to 9вместо 3 to 10...
Ф. Хаури

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

Шалфей (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Это через интерфейс командной строки Sage. (Это работает также в Sage Notebook, но хотя изображение появляется в его собственной ячейке, это, вероятно, не может рассматриваться как «окно».)

РЕДАКТИРОВАТЬ: Устранены 5 знаков минус и заменен снимок экрана ячейки Sage Notebook одним из окон Sage CLI. (Кредит @boothby)


Если вы вызовете .show()графический объект из интерфейса командной строки, появится всплывающее окно. Также вы можете сохранить несколько символов, сдвинув все (+ 2, + 1).
Boothby

@boothby - Спасибо за идею избавиться от знаков минус. Что касается окна, то получается, что запуск программы «как есть» (без .show ()) создает желаемое окно из Sage CLI. (Ни эта, ни версия .show () не работают, когда я запускаю Sage под Linux на виртуальной машине (Win7 / VirtualBox). Работает нормально, когда я загружаю Ubuntu и запускаю Sage таким образом.) Спасибо за толчок, чтобы попробовать CLI.
Res

0

Golf-Basic 84, 36 символов (вывод черно-белый)

l;0,0,2,0l;0,0,1,1l;2,0,1,1c;1,.5,.5
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.