Wprowadzenie
Jak wiadomo, w 2017 r. Finlandia świętuje 100 lat niepodległości. Z tej okazji Twoim zadaniem jest wyprodukowanie fińskiej flagi dla przyjemności każdego.
Wyzwanie
Utwórz program lub funkcję, która tworzy flagę Finlandii (szara ramka służy wyłącznie do celów prezentacji):
Specyfikacja flagi
- Stosunek flagi wynosi
18:11
, przy krzyżu3
grubości jednostek, co daje zestaw współczynników poziomych5:3:10
i zestaw współczynników pionowych wynoszących4:3:4
. - Obraz musi mieć co najmniej
180 x 110
piksele lub, w przypadku grafiki ASCII,90 x 55
znaki. - Nie ma oficjalnego koloru RGB dla niebieskiego, ale użyj najbliższego przybliżenia
(0, 53, 128)
. Jeśli twój system nie obsługuje wartości RGB, użyjblue
. - Dla koloru białego użyj RGB
(255, 255, 255)
lubwhite
.
Nie tak szybko
Ponieważ narysowanie fińskiej flagi narodowej byłoby prostsze niż zeszłoroczne wyzwanie islandzkie , będziemy musieli nieco zwiększyć trudność. Biorąc pod uwagę, że Dzień Niepodległości Finlandii przypada na 6 grudnia, liczba dziesiętna 100
musi pojawić się gdzieś na fladze, gdy data w Finlandii ( UTC + 02: 00 ) jest 2017-12-06
późniejsza (kod nie powinien zakładać, że maszyna, na której działa, jest ustawiona na konkretna strefa czasowa). Przed datą nie może tam być numeru. Numer musi być wydrukowany na czarno (RGB (0, 0, 0)
lub black
), ale jego położenie i parametry czcionki zależą od Ciebie.
Przykład takiego renderowania (ponownie zignoruj ramkę):
Do celów testowych dobrze byłoby dołączyć dwie dodatkowe wersje rozwiązania, jedną z ustaloną datą w przeszłości, a drugą w przyszłości.
Zasady
Standardowe luki są zabronione, podobnie jak wbudowane obrazy / biblioteki flag. Ponadto twój kod nie może przyjmować żadnych danych wejściowych.
Finowie nie lubią drobnych rozmów, a to jest gra w golfa , więc nie marnujcie znaków!
źródło
#
w przypadku sztuki ASCII ? A następnie wstawić100
gdzieś postacie ?Odpowiedzi:
C (Windows), 361 bajtów
Rozwinięty:
Wydajność:
Wyjście, gdy
UTC time >= 2017-12-05-22-00
:Dodaj następujący kod w kodzie po,
d=gmtime(&n);
aby go wypróbować:źródło
PHP + SVG (HTML5),
147137123 bajtówKod SVG autorstwa Neila
https://codegolf.stackexchange.com/a/149850/66061
Aktualizacja: Dzięki Shaggy za pomoc w zaoszczędzeniu 10 bajtów.
Aktualizacja 2: Inteligentny pomysł Ismaela Miguela , dzięki za uratowanie 14 bajtów
Normalna
Po 6 grudnia +2 godziny
źródło
time()
daje UTC?1512525600
?1512525600
ma wartość2017-12-06T02:00:00+00:00 in ISO 8601
@ Adám i tak, time () jest niezależny od strefy czasowej.Röda ,
252250 bajtówWypróbuj online!
źródło
C #,
407400277 bajtówDziwne, jak
ForegroundColor =0
to dozwoloneZaoszczędzono 1 bajt dzięki TuukkaX
Zaoszczędził 67 bajtów dzięki Adamowi
niepoddane testowaniu:
do testowania 100:
źródło
ForegroundColor = 0
jest dozwolone, ponieważ literał0
można przekształcić w dowolny typ wyliczenia, jak zapisano w specyfikacji C # .Mathematica, 129 bajtów
przed… po…
zawsze możesz go przetestować na Wolfram Sandbox
(wklej kod i wciśnij Shift-Enter)
źródło
3721507200
?Python 2 ,
247246230210189 bajtówWypróbuj online!
Drukuje obraz .ppm:
Normalna flaga
Flaga ze 100
źródło
datetime.utcnow()+timedelta(hours=2)<datetime(2017,12,06)
zastąpićdatetime.utcnow()>=datetime(2017,12,05,22,0,0)
lub coś podobnego?time.gmtime
zamiast tego do porównań krotek (patrz moja odpowiedź)!Python 3,
143141135 bajtówUżywa znaków ucieczki ANSI dla kolorów, używa pięciu spacji lub „100” jako kolorowego sznurka, więc nie muszę specjalnie drukować „100” gdzieś na fladze. Długość 5 z powodu szerokości, ponieważ
90/5 == 90//5
. Używany ciąg jest definiowany w rzędzie 1. Następnie iterujemy 55 zaokrągleń (wysokość), przy każdej iteracjiv
ustawiany jest ciąg znaków w kolorze [Niebieski, BrightWhite], a wybrany indeks ma wartość logicznąrow<20 or r>34
. Ponownie mnożymy ten wynik przez 5 (wymiary: 25:15:50, więc całkowita szerokość wynosi 90). Następnie drukujemy,v + Blue + Blue + Blue + v + v + Black
gdziev
jest niebieski lub jasny biały. Aby wyjaśnić drukowanie: szerokośćv
wynosi 25 znaków, szerokość niebieskiego (e%44*3
) wynosi 15, a szerokośćv*2
wynosi 50.25+15+50
ma szerokość 90 i odpowiada wymiarom wymaganym w zadaniu! Całkiem niechlujne podsumowanie, ale myślę, że to lepsze niż nic.źródło
Processing.org / Java
191188 bajtów-3 bajty dzięki KevinCruijssen
źródło
>15125255999999L
może być>=15125256e6
15125256e6
czy15125256000000
testuję go w Javie 8. Ale nie znam Processing.org, więc może jest nieco inaczej lub używa innej wersji? Oto TIO z kilkoma podstawowymi testami15125256e6
sprawdzającymi, czy działa w Javie 8. Ale cieszę się, żeD
to naprawia. Cieszę się, że mogłem pomóc. :)Excel VBA,
120118117 bajtówAnonimowa funkcja bezpośredniego okna VBE, która nie pobiera żadnych danych wejściowych i wyjściowych pod flagą Finlandii, a jeśli Finlandia ma więcej niż 100 lat, ma
100
tę flagę. Odbywa się to w odniesieniu do Wielkanocnej Strefy Czasowej w Stanach Zjednoczonych, ponieważ Excel lub Excel VBA nie mogą określić strefy czasowej bez dodatków lub dostępu do Internetu.Wydajność
Jeśli Finlandia ma mniej niż 100 lat
Jeśli Finlandia ma więcej niż 100 lat
-2 Bajt na zmianę
If #12/5/17 19:00#<=Now Then[B2]=100
naIf Now>=#12/5/17 19:0#Then[B2]=100
-1 bajt do użycia
Cells
zamiast[A1:R11]
źródło
MATLAB,
133130123 bajtów310 bajtów szabli dzięki za @flawr!Wykorzystuje
[0, 51, 128]
to kolor niebieski. Rozmiar obrazu wynosi 180 x 110 pikseli.Przykładowy przebieg:
Przykładowy przebieg z tekstem (zmiana
737035
na0
w kodzie, aby tekst był wyświetlany każdego dnia):źródło
JavaScript (ES5) + SVG (HTML5),
189179 bajtów(HTML, aby pokazać, że wymagania dotyczące kolorów są spełnione.) Edycja: Zapisano 10 bajtów dzięki @Shaggy. Wyjścia:
źródło
Date.now()
jest w UTC, a ja porównuję z wartością UTC wynoszącą2017/12/06 00:00:00 UTC+2
.<path></path>
się<path/>
zaoszczędzić kilka bajtów.Python 3 z poduszką,
213212211 znaków (uniksowy) i217216 znaków (przenośny)To jest wersja uniksowa. Po opublikowaniu zauważyłem, że czas, który upłynął,
time()
niekoniecznie ma swoją epokę 1 stycznia 1970 r., Więc niekoniecznie jest przenośny.To jest przenośny kod, 4 bajty więcej, używa
gmtime
z porównaniem krotek, więc powinien działać niezawodnie również w systemie Windows.Obrazy są wyświetlane w oknie. Naprawdę trudno jest sprawić, by zużywał mniej postaci. Nawet
time.time
zwrotyfloat
tak>0x5a273299
nie byłyby tak poprawne lub>0x5a273300
byłyby wyłączone o mikrosekundę.źródło
Tcl / Tk , 135 bajtów
Musi być uruchomiony w interaktywnej powłoce
Przed 2017/12/06 02:00 GMT
Po 2017/12/06 02:00 GMT
źródło
Java
342368361321317 (299 + 18) bajtówGrał w golfa
Bez golfa
Wynik
Kredyty
40 bajtów zapisanych przez Oliviera Grégoire'a na użycie lambda.
4 bajty zapisane przez Kevina Cruijssena na formatowanie długie.
2 bajty zapisane przez użytkownika902383 na potrzeby formatowania szesnastkowego.
źródło
true
sz1>0
,args
za
, a może usunąć przestrzenie wokół=
wP j = new...
zaoszczędzić kilka bajtów.import java.awt.*;
), z uwzględnieniem warunku.import
wcale. 2. Nazwy zmiennych nie są skracane:args
można je zredukować doa
. 3. nadal są opcjonalne spacje, które są zawarte we wpisie. 4. nie ma warunkowego wydruku „100”.vim, 147
Naprawdę podoba mi się to wyzwanie ☺. © to ucieczka.
źródło
bash and imagemagick, 135
źródło
((`date +%s`>=1512511200))&&x=100
. Zauważ, że przeniosłem pojedyncze cudzysłowy do-draw
parametru, gdzie nie wymagają one zmiany znaczenia.Tryb imperatywny , 239 bajtów (niekonkurencyjny)
Wersja online
Tłumaczenie:
SVG został zaczerpnięty z tej odpowiedzi przez th3pirat3 (i najwyraźniej Neil).
Ten program został napisany w nowej wersji Tampio, nad którą pracowałem. Ci z was, którzy znają fiński, widzą, że jest prawie czytelny. Oznacziłem odpowiedź jako niekonkurującą, ponieważ ten język został opublikowany po tym wyzwaniu.
Aby uruchomić ten program, przejdź do powyższej wersji online zawierającej skompilowaną wersję JS programu lub pobierz kompilator ze strony Github . Aby skompilować program, uruchom
python3 tampio.py -p program.itp >program.html
.Tampio pod żadnym względem nie jest językiem golfowym, ale ze względu na lepszy kod svg faktycznie pokonał Rödę ... Byłem trochę zaskoczony.
źródło
bash, 198
źródło
HTML + CSS + JavaScript, 339 bajtów
Oto to samo rozwiązanie skrócone do 260 bajtów, które zakłada, że twój port ma odpowiedni współczynnik 18:11.
Możesz zerwać 0 ze znacznika czasu w dowolnym z rozwiązań, aby wyświetlić „100”.
źródło
HTML + JavaScript, 329 bajtów
Bezwstydnie ukradłem część sprawdzającą datę @jstnthms. Zasadniczo piszę po prostu surową tabelę html z poprawnymi stosunkami wierszy / kolumn,
th
będącymi niebieskimi częściami. Testowane na IE i Chrome, również w mee.fi -site.źródło
Perl 5, 139 bajtów
zostanie uruchomiona
współczynnik został zmieniony z powodu wysokości / szerokości znaku = 1,66 (5/3), w przeciwnym razie oryginalny współczynnik:
źródło
Rakieta 6.10 z 2htdp / obraz, 202 bajty
Nie golfowany:
źródło
100
niebieską część - prawie ją przegapiłem.Mały podstawowy , 300 bajtów
Skrypt, który nie przyjmuje danych wejściowych i wyjściowych do
TextWindow
obiektu.Wypróbuj na SmallBasic.com! Wymaga IE / Silverlight
Wydajność
Pokazany po 100. dniu niepodległości Finlandii.
źródło
poprzednio utworzony kod został zakodowany w następujący sposób:
HTML, CSS i JavaScript, 1599 bajtów
źródło
===
i100
).HTML + JavaScript, 247 bajtów
źródło
JavaScript ES6, 532 bajty
Postanowiłem spróbować użyć obrazu Base64, aby zobaczyć, jak krótko mogę go uzyskać. Nie zwycięzca, ale mimo to interesujący.
źródło
${(…)}
→${…}
); nie ma potrzeby podwójnego cudzysłowu wokół tych wartości atrybutów HTML; chociaż nieważne, w większości przypadków można odciąć dopełnienie łańcuchów kodowanych base64 znakami równości (Firefox z pewnością nie ma problemu z ich odkodowaniem).