Halloween ist fast da, der Feiertag, nach dem sich die meisten Menschen von einer hohlen Zuckerdiät entwöhnen müssen.
Schreiben Sie ein Programm, das eine positive ganze Zahl aufnimmt. Wenn die Ganzzahl kleiner als 31 (1 bis 30) ist, geben Sie diese ASCII-Kunst-Kürbislaterne aus und schauen Sie nach rechts, als würden Sie sich auf Halloween freuen:
_____I_____
| | | | | | |
| | |^| |^| |
| | | |^| | |
| | |VvVvV| |
|_|_|_|_|_|_|
Ist der Eingang ist 31 (das Datum Oktober Halloween ist), gibt die gleiche ASCII-o'-Laterne, aber nach links schaut:
_____I_____
| | | | | | |
| |^| |^| | |
| | |^| | | |
| |VvVvV| | |
|_|_|_|_|_|_|
Wenn die Eingabe größer als 31 ist, geben Sie eine aufgeblähte ASCII-o'-Laterne aus, die wahrscheinlich zu viel Süßigkeiten gegessen hat. Er kann sich entweder nach links oder nach rechts wenden, da die Übelkeit desorientierend sein kann. So ausgegeben:
_____I_____
| | | | | | |
| |o| |o| | |
| | |^| | | |
| |XXXXX| | |
|_|_|_|_|_|_|
oder
_____I_____
| | | | | | |
| | |o| |o| |
| | | |^| | |
| | |XXXXX| |
|_|_|_|_|_|_|
Was auch immer du bevorzugst. Es kann sogar für verschiedene Zahlen über 31 unterschiedlich sein.
Der kürzeste Code in Bytes gewinnt.
quelle
x^n>30
Trick hatte mich zunächst verwirrt, aber als ich herausfand, was los war, stahl ich ihn schamlos, um meine Antwort zu verbessern. Als Entschädigung gebe ich dir trotzdem eine Gegenstimme.(Aheui) , 914 Bytes
Probieren Sie es hier aus! (Bitte kopieren Sie den Code und fügen Sie ihn manuell ein.)
Aheui ist vielleicht nicht zum Golfen da, aber es macht trotzdem Spaß. :)
Ausgänge:
N = 10
N = 31
N = 40
quelle
Gelee , 73 Bytes
Volles Programm
TryItOnline!
Könnte zum Golf dieses mit Hilfe von Bounce möglich sein,
ŒḄ
.Wie?
quelle
Rubin, 137 Bytes
Gesichtspunkte verbleiben am und nach dem 31..
Ungolfed im Testprogramm
quelle
Kohle , 71 Bytes
Hinweis : Dieser Code funktioniert beim letzten Festschreiben zum Zeitpunkt der Veröffentlichung nicht, da die Zeichenfolgenindizierung fehlerhaft ist. Es sollte jedoch ab dem 25. Oktober in dieser Version funktionieren . Es wird auch erfolgreich in der Version ausgeführt, die derzeit auf Try It Online verfügbar ist .
Erläuterung
Charcoal ist eine Sprache für ASCII-Kunst. Die Ausgabe wird auf eine Leinwand gelegt, die am Ende des Programms gedruckt wird.
Installieren
Eingaben abrufen und Gesichtszeichen berechnen:
Zeichne den Kürbis
Nach dieser Schleife haben wir
Nächster:
Ergebnis:
Zeichne das Gesicht
Wir zeichnen das Gesicht nach rechts und ändern es später, falls erforderlich.
Ergebnis (zur Eingabe
31
):Überlege, ob es Halloween ist:
Endgültige Ausgabe:
quelle
Pyth - 84 Bytes
Manuelle Basiskomprimierung.
Test Suite .
quelle
PHP,
178176171 Byteskönnte 5 Bytes mit physischen Zeilenumbrüchen einsparen. Laufen Sie mit
-r
.quelle
V , 97 Bytes
Probieren Sie es online!
Ich bin enttäuscht darüber, wie lange das gedauert hat. Es ist komplizierter als üblich, da V kaum mit Zahlen umgehen kann. Viele Bytes stammen aus der Erstellung von Hacky-Bedingungen. Ich würde eine ausführliche Erklärung posten, aber es hat lange gedauert, bis ich darauf gekommen bin. Hier ist ein Hexdump:
Zu Ihrer Information, dies wird sehr langsam ablaufen . Es dauert ungefähr 10 Sekunden. Ich weiß, warum das passiert und suche nach Lösungen.
quelle
Pyth, 76 Bytes
Probieren Sie es online aus.
Verwendet keine Komprimierung. (Ich habe versucht, einige für eine Version der Gesichtsdatenzeichenfolge zu verwenden, diese hat jedoch dieselbe Länge.)
quelle
Java 7, 237 Bytes
Ungolfed & Testcode:
Probieren Sie es hier aus.
Ausgabe:
quelle
C ++,
222204194 Bytes-18 Bytes dank Kevin Cruijssen und -10 Bytes für den expliziten oberen Teil
Ungolfed
quelle
&&
nach&
und||
nach zu ändern|
? Kompiliert und läuftusing S=std::string;S f(int n){char L[80],o=2*(n>30),i=-1;while(i++<80)L[i]=47<i&i<53?88:i%2?'|':i==20|i==24|i==36?n<32|i>35?94:'o':i-o%14?i-o<55?32:95:10;S t(5,95);return' '+t+'I'+t+' '+S(L+o,L+70+o);}
( 202 Bytes )?i-o
ist obligatorisch, also 204 Bytes,PHP, 222 Bytes
Ausgabe
quelle
Groovy Script,
273265216202198 BytesUngolfed-Version
Probieren Sie es hier aus
Bearbeiten
Wie Titus erwähnt hat, kann ich mit
i < 32
statt etwas Größe spareni in 1..31
Bearbeiten 2
Alle möglichen Leerzeichen um Operatoren entfernt ... Am Anfang vergessen
Bearbeiten 3
Die ternären Bedingungen wurden neu geschrieben, um die gespeicherte Variable zu verwenden. Sie wurden durch
;
Zeilenumbrüche ersetzt und die explizite Variablendefinition wurde entferntBearbeiten 4
Wie Otávio sagte, kann ich weitere 4 Bytes sparen, wenn ich von
| |${j ? ' |^| | ' : ' | |^| '}| |
auf umschalte| | |${j ? '^| ' : ' |^'}| | |
quelle
i < 32
statti in 1..31
?;
und beide ein Zeichen lang sind, würde ich die Zeilenumbrüche aus Gründen der Lesbarkeit vorziehen. Und geben Sie mit guten Codierungsgewohnheiten auf, entfernen Sie dieseint
unddef
.print
‚s ersten ternären speichern den Zustand in einer Variablen wie(j=i>30)
, dann bei der Verwendung nächsten 2 nurj
statt das gleiche von mir wiederholendeni>30
Zustand.JavaScript (ES6),
163 bis125 ByteJetzt schamlos den Trick von @ ETHproduction stehlen, um das Gesicht zu positionieren. Kodierung: Ist
0
ein Auge1
und2
sind Zähne,3
ist die linke Seite,4
ist die rechte Seite und5
ist der Nasenrücken.quelle
Ruby, 168 Bytes
Wahrscheinlich alles andere als optimal. Benötigt die
base64
undzlib
Bibliotheken.Aufruf als Lambda-Funktion.
quelle
Python 2, 167 Bytes
quelle
C # 6,
223215 Bytesint d=int.Parse(args[0]);var x="| | |\n| |";var s=d<31?" |^| |^| |\n| | | |^"+x+" |VvVvV":(d==31?"^| |^"+x+" |^| "+x+"VvVvV| ":"o| |o"+x+" |^| "+x+"XXXXX| ");Write(" _____I_____\n| | | | "+x+s+"| |\n|_|_|_|_|_|_|");
Gesamtes Programm ungolfed:
quelle
Func<int, string>
was normalerweise der kürzeste Weg ist, dies zu tun.Write
anstatt sie zu deklarieren und zu definierens
.\r\n
statt nur\n
?