Wyzwanie
Narysuj logo Igrzysk Olimpijskich ...
... jako sztuka postaci (np. ASCII)!
Przykładowe dane wyjściowe
* * * * * * * * *
* * * * * *
* * * * * *
* * * * * * * *
* * * * * * * * * *
* * * * * * * * * *
* * * * * * * * *
* * * *
* * * *
* * * * * *
Twoja sztuka nie musi wyglądać dokładnie tak jak moja, ale musi reprezentować kółka olimpijskie na tyle dobrze, aby można je było rozpoznać.
Zasady
- Program musi zapisać grafikę na konsoli.
- Najkrótszy kod (w bajtach, w dowolnym języku) wygrywa.
- Rozwiązanie, które drukuje pierścienie w ich odpowiednich kolorach (lub bliskiej reprezentacji) otrzyma premię minus dwadzieścia punktów.
Zwycięzca zostanie wybrany w dniu 23 lutego rd po zakończeniu Zimowych Igrzyskach Olimpijskich 2014.
Zwycięzcy
- Złoto : marinus - APL, 62 punkty
- Srebro : Ayiko - Perl 6, 75 punktów
Brąz : evuez - Python, 107 punktów
Popularny wybór : Danko Durbić - Commodore 64 BASIC
Odpowiedzi:
APL (82) (-20 = 62)
Edycja: dla odmiany ten program jest na tyle prosty, że TryAPL go dotknie, więc możesz go uruchomić (wystarczy wkleić linię).
Nie jestem pewien, czy mogę ubiegać się o „kolor”, ale reprezentuję je wszystkie inaczej.
Konsola APL nie obsługuje kolorów, więc użyłem zacienionych znaków blokowych (przypisanie jakiejkolwiek innej grafiki ASCII byłoby tak proste, jak zastąpienie znaków na początku łańcucha).
Powinny wyglądać jak nieprzerwane kręgi (w zależności od czcionki).
Lub:
źródło
Commodore 64 BASIC
Pisanie bezpośrednio na ekranie i w pamięci kolorów.
Wynik:
Oto jak to zrobić za pomocą duszków.
źródło
Fiddle HTML -
48,35, 33 znaków (Dzięki @Dom i @cnst!)Wynik:
źródło
OOO<div style="margin:-10px 5px">OO
zamiast tego ... (Myślę, że to jednak musi być blok, stąd<div/>
)div
, można po prostu użyćp
zamiast tego!BASH w kolorze - 271 - 20 = 251 - Z splątanymi pierścieniami; P
Wynik:
A dla zabawy jeden: 61-20 = 41.
Wersja LZ77:
źródło
bash: !/\\e[3}": event not found
:(x='54mO53m_50m052m_51mO\n53m U 52mU\n';printf "${x//5/\\e[3}"
- (Jestem trochę zły z 5 tutaj.) Lub nawet to może być lepsze, mając na uwadze nakładanie się:x='54mO53mA50m052mA51mO\n53m U 52mU\n';printf "${x//5/\\e[3}"
- chociaż może wyglądać bardziej niechlujnie niż inni.Sinclair BASIC na ZX Spectrum 48K (261 bajtów)
Podstawowa lista:
Ostateczny wynik:
Uruchomienie programu i pomiar kodu:
Podstawowa lista w formacie tekstowym:
Plik TAP z programem, odpowiedni dla emulatorów lub prawdziwej maszyny używającej DivIDE lub DivMMC: http://www.zxprojects.com/images/stories/draw_the_olympics_flag.tap
źródło
Więc właściwie nie czytałem poprawnie, to grafika ASCII, więc myślę, że to jest nieprawidłowe. Ups!
HTML 121 (141-20)
W Chrome:
PHP 103 (123-20)
źródło
#06f
#fa0
#193
Rubin: 198 znaków - 20 = 178
(Uwaga, które
^[
są pojedynczymi znakami).Przykładowy przebieg:
źródło
Mathematica - 185
Oto wyjście
Kolejna wersja oparta na rasteryzacji grafiki wektorowej
źródło
PostScript, 203 (-20 = 183)
Uważam, że liczy się to jako „grafika ASCII”, chociaż nie zapisuje się w konsoli. Wynik:
To może być trochę bardziej golfa.
źródło
Skrypt poleceń systemu Windows - 112
procentbajtówI oczywiście obowiązkowa wersja cheat'ish - 4 bajty
zapisane jako:
źródło
Kolejna próba w Perlu,
130120Dzięki manatwork za pomoc w tym
Wynik:
źródło
for
zamiastforeach
; 2 znaki poprzez usunięcie(
… argumentów)
rundysprintf()
; 2 znaki poprzez usunięciehex
parametru; 1 znak za pomocąy///
zamiasttr///
; 1 postać poprzez usunięcie finału;
.y///
. Pójdę teraz to sprawdzić.Python:
157140138133122107 znaków107
(dzięki manatwork )
próbka wyjściowa:
157
122
(właśnie zaczął ten, postaram się go poprawić)
z lepszym wyjściem: 120 znaków
próbka wyjściowa:
źródło
print'\n'.join(['{0:b}'.format(int(o,36)).rjust(39,'0')for o in"kpvbkq0 1re099tu 3ifszg1t 3iwiuayp 1re099tu kpvbkq0 httbls 5trxmo".split()])
. Jeśli chodzi o wersję „lepszą wydajność”, możesz oszczędzićrjust()
drugiego parametru. (I wstaw „t” w nagłówku tego postu.)bin()
. Ale dlaczego korzystasz zstr()
tego?bin()
Zwracana wartość jest jużstr
.010000010100000101000101000001010000010
? Dwa dolne pierścienie wydają mi się trochę połamane.Perl,
177163Ulepszona wersja dzięki Dom Hastings:
Wynik:
źródło
"\n"
as$r
, możesz użyć$/
wartości domyślnych"\n"
, dosłowne znaki nowej linii mogą nawet zaoszczędzić więcej w kilku miejscach. Możesz także zapisać 1 dodatkowy znak, używając$s=$"x3
zamiast$s=" "
. Mam nadzieję, że to pomaga!C, 257 bajtów
To mogło być trochę bardziej golfa.
To musi być uruchomione na Tektronix 4010 (lub emulatorze takim jak xterm -t). Wynik:
To rzeczywiście sztuka ASCII, ponieważ wszystkie one są „.” postacie. I wysyła dane do konsoli, zgodnie z żądaniem. Niektóre emulatory Tektronix obsługują kolor. Mój nie, więc nie mogłem tego zrobić.
źródło
Java,
181179161156 bajtów(Nie kompiluje się na jdk 1.7, wymaga wersji 1.6 lub nowszej)
Wyjście:
Zdecydowanie nie jest zwycięzcą, ale daj spokój, to Java .
źródło
replaceAll()
„s wyrażenia regularnego i oddanie z powrotem całą dopasowaną część:replaceAll(".{29}","$0\n")
. (Na końcu twojego pliku może występować dodatkowy podział wiersza, ponieważ w wysłanym kodzie liczę tylko 181 znaków.)import
i umieść nazwę pakietu bezpośrednio w wywołaniu konstruktora. To zmniejsza rozmiar do 161 znaków.class M{static{...
naenum M{M;{...
. Kolejnym dużym krokiem jest pozbycie się BigInteger, czy to możliwe? Próbuję zrobić magię za pomocą String.format, ale nie mam jeszcze żadnych rezultatów.Haskell, 200
Wynik:
grał w golfa z:
źródło
map.map
bo to brzmi zabawnie. : DRuby, 9
#satyra
Reguły dopuszczają sztukę, która nie wygląda dokładnie tak jak w przykładzie, ale musi „reprezentować pierścienie olimpijskie na tyle dobrze, aby można je było rozpoznać” .
Możesz rozpoznać tę reprezentację logo Igrzysk Olimpijskich.
źródło
JavaScript - 170
185189znakówWynik:
2nd Javascript - 25 znaków
Wynik:
Drugi jest leniwy
źródło
split()
parametru; 2 znaki, usuwając ostatnie 2;
s.'kpvbkq041re099tu43ifszg1t43iwiuayp41sdk52824kpvbkq04httbls45trxmo'.split(4).map(x=>{a=parseInt(x,36).toString(2);console.log(' '.repeat(39-a.length)+a.replace(/0/g,' '))})
.Dwójkowy! (265 CHARS)
Jest za duży, aby wygrać, ale przynajmniej wygląda świetnie!
źródło
PHP - 99 (-20?)
To jest zdecydowanie rozpoznawalne. Mówię, że moje „kolory” się liczą; to ścisła reprezentacja.
Jeśli ci się to nie podoba, oto jest
GolfScript - 101 (-20?)
źródło
header("Content-Type: text/plain")
, domyślnie dla serwerów sieciowych jest text / htmlBash + ImageMagick: 163 znaki
Przykładowe dane wyjściowe:
źródło
Perl 6:
1127756 znaków, 75 bajtów.comb
daje listę oddzielnych znaków w ciągu (w każdym razie bez argumentu).ord
podaje numer kodowy znaku od znaku.base(2)
zwraca ciąg z kodowaniem base-2 tego Int.trans
zastępuje cyfry spacją i @ dla lepszej widocznościflip
odwraca znaki łańcucha, aby brakujące początkowe zera nie zepsuły rysunku.edit2: nowsze rozwiązanie wykorzystujące słowa qwote i zakodowane w standardzie 36
<ABC DEF GHI>
jest składnią słów-cytatów w perl6, więc dostajesz listę ciągów:36($_)
tworzy Int z ciągu zakodowanego w base-36 w$_
(for
zmienna domyślna pętli)edycja: stare rozwiązanie ma ładniejszy (skopiowany) rysunek, ale jest dłuższe:
źródło
Mathematica
18517510 bajtów zapisanych przez mathe.
Pierścienie poniżej to ASCII 'O.
Litera „O”, nieco półprzezroczysta, w Century Gothic, drukowana 5 razy przy rozmiarze czcionki = 145 punktów drukarki.
To nie jest sztuka terminalna. Jednak w pełni spełnia definicję Wikipedii dotyczącą sztuki Ascii: http://en.wikipedia.org/wiki/ASCII_art .
źródło
FontSize ->
może być usunięty.FontSize -> 145
przez145
.JavaScript: 153 znaki
Chciałem sprawdzić, czy mógłbym to zrobić szybciej, używając algebry do graficznego rysowania okręgów:
(
c
to tablica pięciu par (x, y), środki okręgów, spłaszczone, aby zapisać dziesięć znaków).wynik:
159 znaków jest trochę bardziej czytelnych:
wynik:
W 167 znakach mamy „kolory”:
wynik:
Za pomocą 189 znaków mogę również
r
ustawić promień :http://jsfiddle.net/mblase75/5Q6BX/
źródło
APL, 8 znaków / bajtów *
Oto odpowiedź zachęcająca do najniższej liczby znaków (w końcu to jest golf golfowy)
Wynik:
Symbolem jest ○, operator okręgu APL. Zamiast tego możesz wstawić „O”, na wypadek, gdybyś chciał wyjściowo ściśle ASCII. Pomyślałem, że warto użyć symbolu APL.
Tylko dla kopnięć, oto wersja kolorowa (37 znaków - 20 = 17 punktów)
Dane wyjściowe: ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯
*: APL można zapisać we własnym (starszym) jednobajtowym zestawie znaków, który odwzorowuje symbole APL na górne 128 bajtów. Dlatego do celów oceniania program N znaków, który używa tylko znaków ASCII i symboli APL, może zostać uznany za N-bajtowy.
źródło
CSS,
1176922855771 bajtów, -20 premia za kolor = 751Tylko CSS, nie wymaga znaczników. Zobacz skrzypce markupless tutaj: http://jsfiddle.net/XcBMV/12/
W kolorze i przy prawidłowym nałożeniu.
źródło
Perl - 12 znaków
OK, więc nie jest to szczególnie artystyczny rendering. ;-)
Nieco ładniejszy:
źródło
GAS Assembly 16-bitowy moduł ładujący BIOS OL - 617-20 = 597
Szaleje tutaj na długość, więc tylko dla zabawy.
Nie ładuje się dużo, ale ładuje logo Igrzysk Olimpijskich jako ASCII z kolorami;)
Kod:
(Linux) Zbuduj i wyodrębnij obraz MBR
Uruchomiony w emulatorze
(Nie przetestowałem tego jeszcze na moim komputerze domowym ...)
Wynik
źródło
TI-Basic (16 bajtów)
Uwaga: TI-Basic jest tokenizowany. Jeśli dobrze pamiętam
ClrHome
iDisp
są to jednobajtowe tokeny.źródło
źródło