Specjalne wyzwanie dla Ciebie z okazji Dnia Niepodległości (USA) już dziś. Musisz napisać program, który wydrukuje to ascii-artystyczne przedstawienie flagi amerykańskiej.
0
|---------------------------------------------------------
| * * * * * * #################################|
| * * * * * |
| * * * * * * |
| * * * * * #################################|
| * * * * * * |
| * * * * * |
| * * * * * * #################################|
| * * * * * |
| * * * * * * |
|########################################################|
| |
| |
|########################################################|
| |
| |
|########################################################|
| |
| |
|########################################################|
|---------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Dozwolone są końcowe spacje w każdej linii, a także jedna nowa linia.
Pamiętaj, że nie jest to taki sposób, w jaki powinna wyglądać flaga, ale jest to najbliższe osiągnięcie z ASCII.
Jak zwykle jest to gra w golfa, więc obowiązują standardowe luki i wygrywa najkrótsza odpowiedź w bajtach!
code-golf
ascii-art
kolmogorov-complexity
DJMcMayhem
źródło
źródło
Odpowiedzi:
CJam,
18412010910176746967646258 bajtówWypróbuj online w interpretatorze CJam .
Pomysł
Najciekawszą częścią flagi jest wzór gwiazd i pasków.
Jeśli powtórzymy 56 razy spacje i znak liczbowy i dołączymy do nich pionowy pasek, otrzymamy
Powtarzając ten wzór 7 razy i odrzucając pierwsze dwie linie, otrzymujemy paski:
Teraz, jeśli powtórzymy łańcuch
" * "
50 razy i podzielimy wynik na kawałki o długości 22, otrzymamy gwiazdy:Białe znaki są trochę wyłączone, ale możemy to naprawić, eliminując ostatni fragment i dodając spację do pozostałych.
Teraz, jeśli nałożymy paski i gwiazdy, otrzymamy
Wystarczy dodać dwie linie po 57 myślników, kolumnę 37 pionowych pasków i umieścić wisienkę na wierzchu.
Kod
źródło
Python 2, 113 bajtów
Przecinanie sznurków i sprawdzanie modulo.
źródło
i=0
drukowana jest sama wartość .Brainf ** k,
3355311315981178782 bajtówCo to za język?
Oto ręcznie zoptymalizowana wersja z 28 pętlami. Myślę, że posunąłem się tak daleko, jak to możliwe.
Oto przebieg na ideone.com :
Jak to działa?
Ten program wykorzystuje 10 lokalizacji pamięci:
Linia 1
+++[>++++<-]
. Wynik końcowy jest taki, że rejestr 0 to 0, a rejestr 1 to 12."0"
na górze flagi!Linia 2
"|"
(ASCII 124) i wysyła."0"
(ASCII 48) na"-"
(ASCII 45) i wysyła.Linia 3
" * "
5 razy." * "
jest napisane"#"
co daje w sumie 32."#"
,"|"
i"\n"
są napisane.Linie 4–11
Linia 12
Linia 13
"#"
8 razy za każdym razem przez pętlę.Linia 14
Linia 15
" "
8 razy za każdym razem przez pętlę.Linia 16
Linia 17
Linia 18
Linia 19
Linia 20
"|"
i nowa linia dwa razy za każdym razem przez pętlę.źródło
/// : 225 znaków
źródło
JavaScript ( ES6 ), 153
156Używając ciągu szablonu, istnieje 1 nowy wiersz, który jest znaczący i zliczany
Przetestuj poniższy fragment kodu (tylko EcmaScript 6, tylko Firefox)
Aby być jeszcze bardziej patriotycznym, oto wersja EcmaScript 5
źródło
Rubinowy,
104102 bajtówKorzystanie z pomysłów z Ruby ManAtWork w odpowiedzi za zgodą.
Rubin,
127 121112 bajtówZmieniono cudzysłowy na
?
używaną tablicę zamiast warunkowo na kolor paska. użył warunku zamiast wzoru dla długości paska.Sztuczka polega na tym, aby narysować paski (zarówno czerwone / jak
#
i białe /space
) na odpowiednią długość, a następnie odpowiednio je uzasadnić, wypełniając je gwiazdkami. Ruby'srjust
pozwala nam określić łańcuch dopełniający, który jest na przemian z" * "
i" *"
.Wersja oryginalna, 127 bajtów
źródło
map
w środku malowniczegoputs
, ale nie mogę go używać na własną rękę, nawet jeśli otaczają go ze wspornikami:puts((0.18).map{})
. Jeśli zobaczysz jakieś dalsze ulepszenia, daj mi znać lub cofnij usunięcie swojej odpowiedzi i opublikuj ją.rjust
może wziąć sznurek, a nie tylko znak. Szkoda, że Python nie może tego zrobić ...SWI-Prolog, 275 bajtów
W języku francuskiego pochodzenia, co jest dość pasujące
Zobacz wynik tutaj
źródło
C,
235211208205203198197186 bajtówedycja: dodano niektóre sugestie Cool Guy i wykorzystałem?: do zastąpienia niektórych instrukcji if.
edycja: usunięto zapobieganie przepełnieniu \ 0 i zastosowano zamiast tego ogranicznik długości łańcucha w printf.
edycja: przerobiono oba warunki warunkowe zestawu.
edit: przeniesiono wstawia („0”) do nagłówka for, aby usunąć jego średnik.
edycja: nieznaczne refaktoryzacja, aby uzyskać jeszcze 11 bajtów.
źródło
|
na początku każdej linii ...i;c(){puts("0");for(;i<37;i++){char b[58]="|";if(i<21){memset(b,!((i-1)%3)?35:32,56);if(i<10)memcpy(b," * * * * * * "+((i%2)?0:2),23);b[56]='|';}if(!i||i==20){memset(b,45,57);}puts(b);}}
45
'-'
35
'#'
32
' '