Wyzwanie
Narysuj kształt serca
... jak sztuka ASCII!
Twoja sztuka nie musi wyglądać dokładnie tak jak moja, ale musi wyglądać jak Kształt Serca.
Wnętrze serca musi zawierać słowa „Miłość” co najmniej 20 razy
Zasady
- Program musi zapisać grafikę na konsoli.
- Najkrótszy kod (w bajtach, w dowolnym języku) wygrywa.
Zwycięzca zostanie wybrany 14 lutego w Walentynki
:D
popularity-contest
Odpowiedzi:
JavaScript [160 bajtów]
Poniższy kod wydaje się mieć 160 bajtów niesformatowanych.
Po prostu uruchom to w konsoli przeglądarki (np. W Firebug lub Chrome Dev Tools).
źródło
/[lve]\d/
na/../
i użycie tablicy['','Love','\n']
zamiast obiektu pozwoli zaoszczędzić kolejne 10 bajtów, co łącznie prowadzi do 150 bajtów , ale serce źródłowe nie będzie już tak dobrze ukształtowane:)
function(c){return
nac=>
i usuń}
. Powinieneś opublikować krótszą wersję!:)
Ale dziękuję za zwrócenie uwagi! Mam nadzieję, że wkrótce JavaScript będzie konkurował z Perlem i Pythonem w sprawach golfa i każdy będzie mógł to wypróbować.GolfScript:
625754 znakówWydajność:
Lub, dla dodatkowej miłości i obowiązkowego nadużywania nieistotności białych znaków (dla 84 znaków):
Wydajność:
źródło
C - 183 bajtów
Nie zwycięzca, ale cała miłość. Czy możesz dowiedzieć się, jak to działa?
Wydajność:
źródło
V
na dole.C
! Krzywa serca jest własnością publiczną :)Python, 210 znaków
Oczywiście to nie wygra, ponieważ jest to golf golfowy, ale chciałem być kreatywny i nie użyłem tego słowa
Love
w kodzie źródłowym:To jest wynik:
źródło
Scala - 273 znaków
Cóż, na pewno nie oczekuję wygranej za zwięzłość, ale chciałem sprawdzić, czy uda mi się to zrobić w Scali. Mądrzejszy golfista prawdopodobnie mógłby ogolić kilka bajtów, ale oto co mam:
Lub, jeśli wolisz (nadal ważny kod!)
Drukuje dwa półkola i trójkąt na ekranie, tworząc całkiem przyzwoitą kopię faksu serca.
Musi być uruchamiany za pomocą interpretera scala (kompilacja wymagałaby dodania dodatkowego crufta dla,
object Main { def main(args: Array[String]) = { ... } }
a ja po prostu nie mam nic z tego.źródło
Python 2, 117
drukuje dokładnie 20
love
s poziomo.wydajność:
źródło
replace()
ich; w trzeciej liniiprint
zmień jeden+
na,
i 10 z 9; w ostatnim wierszu użyj wartości zmiennej x. pastebin.com/i1TSEZfElove
s po prawej stronie, które otrzymałeś przez przesunięcie poziomychlove
s?love
. Wliczając te,love
liczba wyniesie 23: DPerl - 36 bajtów
Wydajność:
To trochę oszustwo; wypisze
Love
raz na każde dwa znaki inne niż białe znaki w kodzie źródłowym. Przy wymaganej spacji do nadania kształtowi serca kod ma długość 61 bajtów: spłaszczony ma tylko 36 bajtów:Perl - 60 bajtów
Wytwarza następujące:
Dokładnie 20
Love
.Krótkie wyjaśnienie
na żądanie
for'3h112a05e0n1l2j4f6b9'=~/./g
To modyfikuje instrukcję print i iteruje każdy znak. Wyrażenie regularne
/./
oczywiście pasuje do jednego znaku, a w kontekście listy/./g
zwróci listę wszystkich znaków w ciągu. Byłby to bardziej powszechny, ale nieco dłuższy sposób na napisanie tegofor split//,'3h112a05e0n1l2j4f6b9'
.print$"x(15&ord),Love,$/x/\D/
$"
Domyślna zmienna domyślna to spacja. Ord inal wartość każdego znaku mod 16 sklepów przestrzenie number needed między sobąLove
poprzez ciąg powtórzeń (x
). Na koniec, jeśli znak nie jest cyfrą (/\D/
), wartość$/
, która domyślnie"\n"
jest podana jest do końca.źródło
-e
)$"
z' '
:perl -e "print' 'x(15&ord),Love,$/x/\D/for'3h112a05e0n1l2j4f6b9'=~/./g"
Wolfram Language (Mathematica) - 111
źródło
JavaScript -
147141137133 133 znakówUwaga: zamieściłem inną odpowiedź, ale ta używa innego podejścia, a serce ma inny kształt.
Jak to działa :
Najpierw renderuję diament (równanie jest
|x|+|y|
), a następnie łączę dwa koła na górze. x wartości są dublowane (więc potrzebne jest tylko jedno koło).źródło
0
liczby zmiennoprzecinkowe i przypisującMath.abs
do zmiennej.Sclipting - 28 znaków / 56 bajtów
Wydajność:
źródło
긢꼙겱딧꽔밂各감啃갰啃긂밀⓶復냄뭖끐⓷復겠⓸復終
- ale używa啃
instrukcji, którą dodałem po opublikowaniu tego wyzwania, więc się nie liczy.)JavaScript -
136121115113 znakówAby uruchomić: skopiuj wklej do konsoli przeglądarki (np .: Chrome lub Firefox)
źródło
["L","o","v","e"] => "Love"
zapisze 11 bajtów.C, 116 znaków
(Nie wiem, czy ma on wystarczająco kształt serca ... wypełnia wnętrze trzech kółek, aby uzyskać efekt.)
Wydajność:
Wcześniej w trakcie gry w golfa, przed zastąpieniem stałych wyrażeń (zmień,
M
aby dostosować rozmiar):Czułem się do tego zmuszony. : P
źródło
All variables in C are typed
en.wikibooks.org/wiki/C_Programming/Variablesint
, starsza funkcja zapożyczona z wersji wcześniejszej niż ANSI-C. Kompiluje mi się dobrze zclang foo.c
lubgcc -std=c99 foo.c
(z dużą ilością ostrzeżeń). Czy otrzymujesz jakieś błędy? Nie znam C na tyle dobrze, aby zagwarantować, że nie polegam na nieokreślonym zachowaniu, ale wierzę, że tego nie robię.Ruby, 47 lub Golfscript, 41
Nudna odpowiedź.
Wersja golfa:
Wydajność:
źródło
Ruby - 113 znaków
Wydajność:
Aby być bardziej przejrzystym
źródło
Perl - 159 znaków
Niezbyt masywny golf ...
To samo z dodaną białą spacją dla nieco lepszej czytelności ...
Dane wyjściowe to ...
Pełne słowo „Miłość” jest zawarte (pionowo) 22 razy, a także liczne częściowe.
źródło
APL, 36 znaków / bajtów *
Należy to ocenić za pomocą
⎕IO←0
(wartość domyślna zależy od implementacji)* APL można w razie potrzeby zapisać w jednym bajcie (o ile nie używasz żadnego innego znaku Unicode), więc N znaków = N bajtów do zliczania.
Wydajność:
Zawiera dokładnie 20 „Miłość”
źródło
Extended BrainFuck : 193 (liczony bez zbędnych białych znaków)
Przemienia się w:
Brainfuck: 264 (liczone bez zbędnych białych znaków)
Uruchamiasz go z dowolnym tłumaczem BF. Ubuntu ma
bf
ibeef
oba działają ładnie.Dane wyjściowe (344 bajty):
Nieskluczony kod EBF:
źródło
C # 224
Sformatowany:
Wydajność:
źródło
Python, 334 bajtów
wydajność:
źródło
str
połączenie z powtórzeniami ciągów, ponieważ*
ma wyższy priorytet niż+
.Perl - 97 znaków
Ta odpowiedź oparta jest na 121 znakowym rozwiązaniu Python @ Wasi.
Musisz uruchomić perla z
-M5.010
opcją włączenia funkcji specyficznych dla 5.10. Jest to najwyraźniej dozwolone .Ciekawe funkcje:
$.
do przechowywania słowa „miłość”. Dzieje się tak, ponieważ w razie potrzeby można natychmiast podać kolejne słowo.$.for
jest jednoznacznie tokenizowany,$.
po czym następujefor
;$_for
nie byłby tokenizowany w$_
następujący sposób,for
ponieważ$_for
sam jest legalną nazwą zmiennej.$"
, używana jest wbudowana zmienna reprezentująca znak, z którym tablice zostaną połączone po interpolacji w łańcuch (i domyślnie jest to pojedynczy znak spacji) zamiast" "
oszczędzania jednego znaku tu i tam..replace
znacznie przewyższa metodę Pythona w grze w golfa.for 0..4
podobnie wygrywafor i in range(5)
źródło
CJam - 33 bajty
Wypróbuj online
Wydajność:
Wyjaśnienie:
źródło
Bash, 170 bajtów
całkowicie kopia programuFOX's :)
źródło