Schreiben Sie ein Programm, das ein Emoticon als Eingabe akzeptiert und ausgibt, wenn das Emoticon glücklich oder traurig ist.
Das Programm akzeptiert eine Zeichenfolge als Eingabe oder Parameter und sollte die Zeichenfolge "happy" anzeigen, wenn sich die Eingabe in der Liste "happy emoticon" befindet, oder "sad", wenn sich die Eingabe in der Liste "sad emoticon" befindet.
Sie können davon ausgehen, dass die Eingabe immer ein gültiges (fröhliches oder trauriges) Emoticon ohne Leerzeichen oder Tabulatoren ist.
Hier ist eine durch Leerzeichen getrennte Liste glücklicher Emoticons:
:-) :) :D :o) :] :3 :c) :> =] 8) =) :} :^) :-D 8-D 8D x-D xD X-D XD =-D =D =-3 =3 B^D (-: (: (o: [: <: [= (8 (= {: (^:
Hier ist eine durch Leerzeichen getrennte Liste von traurigen Emoticons:
>:[ :-( :( :-c :c :-< :< :-[ :[ :{ 8( 8-( ]:< )-: ): >-: >: ]-: ]: }: )8 )-8
Das ist Code-Golf, also gewinnt das kürzeste Programm.
:'D
,:')
(glücklich) und:@
(wütend)Antworten:
Python, 86 Bytes
Ich sollte ins Gefängnis geschickt werden.
Die kürzeste Antwort, die ich finden konnte, war gleichbedeutend mit Martins CJam-Antwort. Deshalb entschloss ich mich, alle traurigen Emojis (abzüglich des mittleren Zeichens, falls vorhanden) auf der Rückseite meines Codes zu verstecken und Pythons
__file__
Quine-Cheat zu verwenden.Muahahaha.
quelle
c:
8) (8 :] [:
CJam,
3332 BytesVielen Dank an Dennis für das Speichern von 1 Byte.
Sieht so aus, als wäre es kürzer, dasselbe ohne Regex zu tun ...
Teste es hier.
Erläuterung
Dies basiert auf der gleichen Beobachtung wie die Retina-Antwort, aber diesmal hat das Abgleichen von glücklichen Gesichtern keinen Vorteil, sodass wir stattdessen traurige Gesichter abgleichen (da ein Mund weniger zu berücksichtigen ist). Die Lösung ist ansonsten genau die gleiche, außer dass sie nicht durch reguläre Ausdrücke ersetzt wird:
quelle
Retina ,
3836 BytesWir können alle Emoticons an ihren Mündern erkennen, da keiner der Münder als Hut oder Augen in der anderen Gruppe verwendet wird (nur in derselben Gruppe). Die glücklichen haben noch einen Mund, den sie berücksichtigen müssen, aber sie haben den Vorteil, dass die Münder im anderen Satz überhaupt nicht erscheinen, nicht einmal als Nasen (das Gegenteil ist nicht wahr:
c
ist sowohl ein trauriger Mund als auch ein glücklicher Nase). Das heißt, wir können Anker vermeiden, sondern nur sicherstellen, dass sich mehr Zeichen auf der anderen Seite des Mundes befinden.Die gültigen Münder für glückliche Gesichter sind also
] ) D 3 > }
rechts oder< [ ( {
links. Wir passen diese an.+[])D3>}]|[<[({].+
und ersetzen sie durchhappy
. Wenn wir nicht übereinstimmen, enthält die Zeichenfolge zwei oder drei Zeichen (das Emoticon). Wenn wir dies tun, sind es fünf (happy
). In einem zweiten Schritt ersetzen wir also zwei oder drei Zeichen durchsad
.quelle
We can recognise all emoticons by their mouths, because none of the mouths is used as a hat.
Nun, das]:<
Emoticon benutzt einen Mund als Hut, um nur zu sagen..
nach "hat" in meiner Antwort. ;) "... als Hut oder Augen im anderen Set (nur im selben Set)."JavaScript (ES6), 46
Verwenden eines regulären Ausdrucks, um traurige Emoticons zu finden, die mit beginnen
>)]}
oder mit enden<([{c
. Randnotiz: Andere reguläre Ausdrücke hier sind möglicherweise kürzer, aber ich bin nicht sicher, ob ich sie verstehe.Üblicher Hinweis: Testen Sie die Ausführung des Snippets in jedem EcmaScript 6-kompatiblen Browser (insbesondere
nicht inChrome, aber nicht in MSIE. Ich habe es in Firefox getestet, Safari 9 könnte funktionieren).Große Neuigkeit Es scheint, dass die Pfeilfunktionen endlich im Chrome-Land angekommen sind! Rel 45, August 2015
quelle
=>
? Ich habe diese Nachricht verpasstJulia,
8769 Bytes - dank Alex A 18 Bytes gespartquelle
if
/ verwendenelse
und den Ternären innerhalb von einfügenprint
, um zu vermeiden, dass Sie ihn zuweisen müssent
.Python 3 ,
777574726155 BytesProbieren Sie es online!
Wie funktioniert es
Wenn eine Gesichtszeichenfolge mit beginnt
])>}
oder mit endet[(c<{
, ist es traurig, sonst ist es glücklich. Tupel-Indexierung wird als verwendetif
.quelle
x
ist, nicht zulässig.Brachylog , 50 Bytes
Erläuterung
quelle
Python, 159 Bytes.
quelle
MATLAB,
8583 BytesHier muss es eine Möglichkeit geben, die Größe zu reduzieren.
Die Eingabe ist eine Smiley-Zeichenfolge. Das erste und das letzte Zeichen werden verglichen, um festzustellen, ob es traurig ist. Wenn nicht, ist es glücklich.
Ich konnte 2 Bytes sparen, indem ich sie nicht anzeigte, sondern stattdessen der Standardvariablen (ans) von MATLAB zuwies und dann ans nach der if-Anweisung anzeigte. Aber ich bin überzeugt, dass es irgendwie verbessert werden kann.
Verbesserung um 2 Bytes durch Änderung der Funktion s (e) auf e = Eingabe (''); .
quelle
PowerShell, 92 Bytes
Ein bisschen wortreich, aber als Bonus wird Regex nicht verwendet!
Dies nutzt die .NET-
<string>.IndexOf()
Funktion, die zurückgibt,-1
wenn das Zeichen nicht in der Zeichenfolge gefunden wird. Wenn also das erste Zeichen kein "fröhliches" Zeichen ist, ist das ersteIndexOf()
-1 - ebenfalls für das letzte Zeichen. Wenn es sich also um ein trauriges Gesicht handelt,IndexOf()
summiert sich das s immer auf -2, was bedeutet, dass es-eq-2
ist$TRUE
, und wird dahersad
gedruckt.Bonusvariante: PowerShell mit Regex, 95 Bytes
quelle
Python 3 , 75 Bytes
Probieren Sie es online aus
Der Regex-Import macht es ein bisschen zu lang, ebenso wie die Unfähigkeit, ihn
None
als Array-Index zu verwenden. Aber ich mag Regex :)quelle
Java 8, 52 Bytes
Probieren Sie es online aus.
Erläuterung:
Java
String#matches
fügt implizit hinzu^...$
, dass es mit der gesamten Zeichenfolge übereinstimmt. Aus diesem Grund ist es kürzer, nach traurigen Gesichtern zu suchen , anstatt nach glücklichen Gesichtern zu suchen , wie dies bei den meisten anderen Antworten der Fall ist.+[\\])D3>}]|[<\\[({].+
(da meine Regex beispielsweise aufgrund von in @MartinEnders Retina-Antwort fehlschlagen würde) der glückliche Testfall:c)
).Regex Erklärung:
quelle