Herausforderung
Zeichnen Sie eine Herzform
... als ASCII-Kunst!
Deine Kunst muss nicht genau wie meine aussehen, aber sie muss wie eine Herzform aussehen.
Das Innere des Herzens muss mindestens 20 Mal die Worte "Liebe" enthalten
Regeln
- Das Programm muss die Grafik in die Konsole schreiben.
- Der kürzeste Code (in Byte, jede Sprache) gewinnt.
Der Gewinner wird am 14. Februar am Valentinstag ermittelt
:D
popularity-contest
Antworten:
JavaScript [160 Bytes]
Der folgende Code scheint 160 Byte unformatiert zu sein.
Führen Sie dies einfach in der Browserkonsole aus (z. B. in Firebug oder Chrome Dev Tools).
quelle
/[lve]\d/
auf/../
und unter Verwendung von Array['','Love','\n']
statt Objekt wird weitere 10 Bytes , die speichern 150 Bytes insgesamt, aber die Quelle Herz wird nicht so gut geformt sein mehr:)
function(c){return
durchc=>
und entfernen}
. Sie sollten eine kürzere Version posten!:)
Vielen Dank für den Hinweis! Ich hoffe, dass JavaScript bald mit Perl und Python in Sachen Golf konkurrieren wird und dass jeder das ausprobieren kann.GolfScript:
625754 ZeichenAusgabe:
Oder für etwas mehr Liebe und den obligatorischen Missbrauch von Leerzeichen (für 84 Zeichen):
Ausgabe:
quelle
C - 183 Bytes
Kein Gewinner, aber eine ganze Menge Liebe. Können Sie herausfinden, wie es funktioniert?
Ausgabe:
quelle
V
der unten setzt.C
! Die Herzkurve ist gemeinfrei :)Python, 210 Zeichen
Natürlich wird dies nicht gewinnen, weil es ein Code-Golf ist, aber ich wollte kreativ sein und habe das Wort in meinem Quellcode nicht verwendet
Love
:Dies ist die Ausgabe:
quelle
Scala - 273 Zeichen
Nun, ich erwarte sicher nicht, dass ich gewinnen kann, aber ich wollte sehen, ob ich es in Scala schaffen kann. Ein intelligenterer Golfer könnte sich wahrscheinlich mehrere Bytes abschneiden, aber ich habe Folgendes:
Oder wenn Sie es vorziehen (noch gültiger Code!)
Druckt zwei Halbkreise und ein Dreieck auf den Bildschirm, wodurch ein hübsches Faksimile eines Herzens entsteht.
Muss mit dem Scala-Interpreter ausgeführt werden (für das Kompilieren müsste etwas mehr Cruft hinzugefügt werden,
object Main { def main(args: Array[String]) = { ... } }
und ich habe einfach nichts davon.quelle
Python 2, 117
druckt genau 20
love
s horizontal.Ausgabe:
quelle
replace()
diese; in der 3. Zeile wirdprint
eins+
zu,
und 10 mit 9 geändert ; Verwenden Sie in der letzten Zeile den Wert der Variablen x. pastebin.com/i1TSEZfElove
s auf der rechten Seite, die Sie durch Staffelung der horizontalenlove
s erhalten haben?love
s nicht bemerkt . Einschließlich dieser wird dielove
Zählung 23 sein: DPerl - 36 Bytes
Ausgabe:
Das ist ein kleiner Betrug. Es wird
Love
einmal für jeweils zwei Zeichen im Quellcode gedruckt, die keine Leerzeichen sind. Mit dem erforderlichen Leerzeichen für die Herzform ist der Code 61 Byte lang: Abgeflacht sind es nur 36 Byte:Perl - 60 Bytes
Gibt Folgendes aus:
Genau 20
Love
.Kurze Erklärung
auf Anfrage
for'3h112a05e0n1l2j4f6b9'=~/./g
Diese ändert die print - Anweisung, und iteriert über jedes Zeichen. Der reguläre Ausdruck entspricht
/./
offensichtlich einem einzelnen Zeichen und gibt in einem/./g
Listenkontext eine Liste aller Zeichen in der Zeichenfolge zurück. Ein üblicherer, aber etwas längerer Weg, dies zu schreiben, wärefor split//,'3h112a05e0n1l2j4f6b9'
.print$"x(15&ord),Love,$/x/\D/
Die Sondervariable ist
$"
standardmäßig ein Leerzeichen. Der ord inal Wert jedes Zeichens mod 16 speichert die Anzahl Räume zwischen jeweils benötigtenLove
über String Wiederholung (x
). Wenn es sich bei dem Zeichen nicht um eine Ziffer (/\D/
) handelt, wird der Wert von$/
, der standardmäßig verwendet"\n"
wird, bis zum Ende angeheftet.quelle
-e
)$"
durch' '
:perl -e "print' 'x(15&ord),Love,$/x/\D/for'3h112a05e0n1l2j4f6b9'=~/./g"
Wolfram-Sprache (Mathematica) - 111
quelle
Javascript -
147141137133 ZeichenHinweis: Ich habe eine andere Antwort gepostet, aber diese verwendet einen anderen Ansatz und das Herz hat eine andere Form.
Wie es funktioniert :
Zuerst rendere ich einen Diamanten (Gleichung ist
|x|+|y|
), dann kombiniere ich oben zwei Kreise. x-Werte werden gespiegelt (es wird also nur ein Kreis benötigt).quelle
0
vor dem Fließen stehenden Zahlen entfernen undMath.abs
einer Variablen zuweisen .Sclipting - 28 Zeichen / 56 Bytes
Ausgabe:
quelle
긢꼙겱딧꽔밂各감啃갰啃긂밀⓶復냄뭖끐⓷復겠⓸復終
- aber dies verwendet die啃
Anweisung, die ich hinzugefügt habe, nachdem diese Herausforderung veröffentlicht wurde, damit sie nicht zählt.)JavaScript -
136121115113 ZeichenZum Ausführen: Kopieren Einfügen in die Browserkonsole (z. B. Chrome oder Firefox)
quelle
["L","o","v","e"] => "Love"
spart 11 Bytes.C 116 Zeichen
(Ich weiß nicht, ob dies herzförmig genug ist ... füllt die Innenseite von drei Kreisen, um die Ausgabe zu erzeugen.)
Ausgabe:
Vor dem Ersetzen konstanter Ausdrücke (
M
zum Anpassen der Größe ändern ):Ich fühlte mich auch dazu gezwungen. : P
quelle
All variables in C are typed
de.wikibooks.org/wiki/C_Programming/Variablesint
ein Legacy-Feature deklariert , das aus früheren ANSI-C- Versionen entlehnt wurde. Es kompiliert ganz gut für mich mitclang foo.c
odergcc -std=c99 foo.c
(allerdings mit vielen Warnungen). Hast du irgendwelche Fehler? Ich kenne C nicht gut genug, um zu garantieren, dass ich nicht auf undefiniertes Verhalten angewiesen bin, aber ich glaube , dass ich das nicht tue.Ruby, 47 oder Golfscript, 41
Langweilige Antwort.
Golfscript-Version:
Ausgabe:
quelle
Ruby - 113 Zeichen
Ausgabe:
Um es klarer zu machen
quelle
Perl - 159 Zeichen
Nicht massiv golfen ...
Hier ist das gleiche mit zusätzlichen Leerzeichen für etwas bessere Lesbarkeit ...
Ausgabe ist ...
Das vollständige Wort "Liebe" ist (vertikal) 22-mal enthalten, plus zahlreiche Teilstriche.
quelle
APL, 36 Zeichen / Byte *
Muss mit bewertet werden
⎕IO←0
(die Standardeinstellung variiert je nach Implementierung)* APL kann bei Bedarf in einem Einzelbyte-Zeichensatz geschrieben werden (solange Sie kein anderes Unicode-Zeichen verwenden), sodass zum Zählen N Zeichen = N Byte sind.
Ausgabe:
Enthält genau 20 "Love"
quelle
Extended BrainFuck : 193 (gezählt ohne nicht wesentliches Leerzeichen)
Verwandelt sich in:
Brainfuck: 264 (gezählt ohne nicht wesentliches Leerzeichen)
Sie können es mit jedem bf-Interpreter ausführen. Ubuntu hat
bf
undbeef
und beide funktioniert gut.Die Ausgabe (344 Bytes):
Ungolfed EBF-Code:
quelle
C # 224
Formatiert:
Ausgabe:
quelle
Python, 334 Bytes
Ausgabe:
quelle
str
Aufruf mit String-Wiederholungen entfernen , da*
hat eine höhere Priorität als+
.Perl - 97 Zeichen
Diese Antwort basiert auf der 121-stelligen Python-Lösung von @ Wasi.
Sie müssen Perl mit der
-M5.010
Option ausführen , um 5.10-spezifische Funktionen zu aktivieren. Dies ist anscheinend erlaubt .Interessante Funktionen:
$.
, um das Wort "Liebe" zu speichern. Dies liegt daran, dass bei Bedarf sofort ein anderes Wort folgen kann.$.for
wird eindeutig als$.
gefolgt von gekennzeichnetfor
;$_for
würde nicht als Token$_
gefolgt werden,for
da$_for
es sich um einen zulässigen Variablennamen handelt.$"
Anstelle von wird eine eingebaute Variable verwendet, die das Zeichen darstellt, mit dem Arrays verbunden werden, wenn sie in eine Zeichenfolge interpoliert werden (standardmäßig ein einzelnes Leerzeichen)" "
hier und da eines Zeichens verwendet..replace
Methode beim Code-Golf erheblich.for 0..4
ähnlich überzeugtfor i in range(5)
quelle
CJam - 33 Bytes
Probieren Sie es online aus
Ausgabe:
Erläuterung:
quelle
Bash, 170 Bytes
total eine Kopie von programFOX's :)
quelle