Wenn Sie dies akzeptieren, müssen Sie entscheiden, ob eine bestimmte Eingabezeichenfolge punkt- oder strichlastig ist.
Eine Zeichenfolge ist punktlastig, wenn ihre Morse-Darstellung mehr Punkte als Striche enthält. Beispielsweise ist der Buchstabe E ein einzelner Punkt, was bedeutet, dass er punktlastig ist.
Eingang
- Die Eingabezeichenfolge enthält nur Zeichen im Bereich von
[a-z]
oder[A-Z]
. Sie können entscheiden, ob alle in Groß- oder Kleinbuchstaben geschrieben werden sollen.AAA
ist in Ordnung,aaa
ist in Ordnung,aAa
ist nicht. - Die Eingabezeichenfolge wird immer mindestens 1 Zeichen lang sein.
- Sie können davon ausgehen, dass Eingabezeichenfolgen niemals die gleiche Anzahl von Punkten und Strichen aufweisen.
Ausgabe
Sie sollten Truthy für Eingaben zurückgeben, die mehr Punktzeichen enthalten.
Sie sollten Falsy für Eingaben zurückgeben, die mehr Bindestriche enthalten.
Bearbeiten: Ich erlaube einen positiven Wert für Punkt und einen negativen Wert für Bindestrich.
Testfälle
| input | morse representation | result |
|------------------------------------------------|
| S | ... | Truthy |
| k | -.- | Falsy |
| HELLO | .... . .-.. .-.. --- | Truthy |
| code | -.-. --- -.. . | Falsy |
Referenz
Das ist Code-Golf . Kürzester Code in Bytes gewinnt.
Antworten:
APL (Dyalog Extended) ,
24SBCS mit 15 Bytes-9 dank Ven
Anonyme implizite Präfixfunktion, die Großbuchstaben als Argument verwendet.
Probieren Sie es online!
⌂morse
konvertieren Liste von Morse Strings∘
dann∊
ε nlist (flach) ,'.-'⍧
die Anzahl der Punkte und Striche in die zählen>/
mehr Punkte als Striche? (lit. größer als Reduktion)quelle
IBM PC DOS, 8088-Assembly,
5435 Bytes-19 Bytes mit der Differenzmethode
Zerlegt:
Erläuterung
Implementiert in Intel / MASM-Syntax als MACRO (im Grunde genommen eine Funktion), wobei nur 8088-kompatible Anweisungen verwendet werden. Eingabe als Groß string (oder +2 Bytes mixed-Fall zu ermöglichen), Ausgang truthy / Falsy Ergebnis ist
SF == OF
(EinsatzJG
oderJL
testen).Die Werte der Buchstabendifferenztabelle werden als binäre Halbbytes gespeichert, sodass insgesamt nur 13 Byte erforderlich sind.
Original (54 Bytes):
Erläuterung
Implementiert in Intel / MASM-Syntax als MACRO (im Grunde genommen eine Funktion), wobei nur 8088-kompatible Anweisungen verwendet werden. Eingabe als String, Ausgabe des Truthy / Falsy-Ergebnisses in Carry Flag. Die Punktetabelle enthält die Anzahl der Striche und Punkte pro Buchstabe.
Die Eingabe erfolgt in Großbuchstaben. Fügen Sie 2 Bytes hinzu, um Klein- oder Großbuchstaben zu verwenden.
Beispiel-Testprogramm (als eigenständige COM-Programmdatei von IBM PC DOS)
Beispielausgabe:
Laden Sie das Testprogramm DD.COM herunter
Oder versuchen Sie es online! Mir ist kein Online-TIO für die direkte Verknüpfung mit einer ausführbaren DOS-Datei bekannt. Sie können dies jedoch mit nur wenigen Schritten ausführen:
DD Hello
oderDD code
nach Herzenslustquelle
0000h
für AX gelten. Quelle: fysnet.net/yourhelp.htmXLAT
, um genau das zu tun, was es soll. Wenn Sie tatsächlich auf Geschwindigkeit über Größe optimiert haben, möchten Sie WORD-Lookups durchführen. Dies ist auch auf dem 8088 mit seinem anämischen externen 8-Bit-Bus immer noch ein Geschwindigkeitsgewinn, da Sie den Durchsatz verdoppeln, ohne die Codegröße zu erhöhen, außer für eineXCHG
oder zwei Anweisungen.XLAT
) ausführen können, obwohl es 6 Byte dauert, um eine bitweise Verschiebung nach rechts um 4 Stellen (innerhalb von aLOOP
) durchzuführen .Java (JDK) ,
1311241108464 BytesInteressanterweise ist "dot" strichlastig und "dash" strichlastig.
Nimmt Eingaben in Großbuchstaben als
IntStream
(Bildlauf nach unten für eine Version mit einem tatsächlichen WertString
für zusätzliche 8 Byte). Ich hatte eine Menge Hilfe beim Golfen: Dank Expired Data für das Golfen von 20 Bytes, dank Neil für das Golfen von 26 Bytes, dank Olivier Grégoire für das Golfen von 18 Bytes und dank Kevin Cruijssen für das Golfen von 2 Bytes.Enthält 26 nicht druckbare Zeichen in Anführungszeichen.
Probieren Sie es online!
Ungolfed:
Java (JDK) ,
1311241108472 ByteFür Puristen; Nimmt Eingaben als
String
. Dank an Expired Data für das Golfen von 20 Bytes, an Neil für das Golfen von 26 Bytes und an Olivier Grégoire für das Golfen von 10 Bytes.Probieren Sie es online aus.
Ungolfed:
quelle
"35344527512513031462452313".charAt(a-65)-51
?Jelly , 21 Bytes
Probieren Sie es online!
Wie?
quelle
05AB1E ,
2221 BytesDank Kevin Cruijssen ein Byte gespart
Probieren Sie es online!
Erläuterung
ist 35344527512513031462452313 auf Basis 255 komprimiert.
quelle
S
.usdgpsahsoaboutlopezgbidol
(Verkettung von 8 Wörtern aus dem Wörterbuch) können die Werte abgerufen werden: für jedes Zeichenv = ord(c)*3%83%8
.aboutlopez
. Ich habe dann nach anderen Übereinstimmungen mit demselben Multiplikator und Modulo gesucht. (Es ist also absolut nicht garantiert, dass es optimal ist.)C # (Visual C # Interactive Compiler) , 47 Byte
Verwendet Level River St's 'magische Schnur'. Stellen Sie sicher, dass Sie auch für die Lösung stimmen!
Es ist nicht alltäglich, dass C # Ruby, Python, Javascript, C, Retina und Perl schlägt!
Probieren Sie es online!
quelle
Jelly , 23 Bytes
Probieren Sie es online!
quelle
C (GCC) ,
8482817975 BytesNimmt alle Großbuchstaben an.
Probieren Sie es online!
quelle
Python 2 ,
737069 BytesProbieren Sie es online!
Nur in Großbuchstaben
-3 Bytes, danke an Erik den Outgolfer
Sowohl Groß- als auch Kleinbuchstaben:
Python 2 ,
7371 BytesProbieren Sie es online!
quelle
JavaScript (Node.js) ,
6968 ByteErwartet die Eingabezeichenfolge in Großbuchstaben. Kehrt zurück0 oder 1 .
Probieren Sie es online!
quelle
Stax , 20 Bytes
Führen Sie es aus und debuggen Sie es
Ausgepackt, ungolfed und kommentiert sieht es so aus.
Führen Sie dieses aus
quelle
Ruby , 64 Bytes
Probieren Sie es online!
Verwendet eine magische 13-Byte-Zeichenfolge mit 2 Zahlen
0..7
, die in jedem Byte codiert sind. Subtrahiere 3 für einen Bereich-3..4
.Der ASCII-Code für
A
(und auchN
) Modulo 13 ist zufällig Null.quelle
Retina 0,8,2 , 51 Bytes
Probieren Sie es online! Link enthält Testfälle. Akzeptiert nur Großbuchstaben (+6 Bytes für gemischte Groß- und Kleinschreibung). Schamlos die Zeichenkette von @ Arnauld stehlen, aber ich wollte trotzdem den gleichen Algorithmus verwenden. Erläuterung:
Ändern Sie jeden Buchstaben in den Unterschied in der Anzahl der Punkte und Striche plus drei, also
O=0
undH=7
.Stellen Sie die Differenz als diese Anzahl von
<
s und drei>
s dar. (Leider kann ich keine Punkte verwenden, da sie speziell für Regex sind.)Entfernen Sie passende Paare von
<
s und>
s.Überprüfen Sie, ob noch Punkte vorhanden sind.
quelle
Bash + Coreutils,
6460 BytesProbieren Sie es online!
Nimmt einen String in Kleinbuchstaben, gibt Null für falsch, ungleich Null für wahr aus
Erläuterung
Verwendet tr und sed, um ein DC-Programm zu erstellen, das wie folgt aussieht (für die Beispieleingabe 'Hallo'):
quelle
<space>3
mitz
(praktischerweise habe ich zu diesem Zeitpunkt 3 Elemente auf dem Stapel!) Und ein weiteres Byte durch Ersetzen der Anführungszeichen um mein sed-Programm durch ein einziger Backslash, um der&
R ,
7470 BytesDie Eingabe sollte in Kleinbuchstaben erfolgen, es wird TRUE oder FALSE zurückgegeben
Probieren Sie es online aus
quelle
TI-BASIC (TI-84), 111 Bytes
Ich habe dieselbe Zeichenfolge zur Bestimmung der Punktschwere verwendet wie einige der anderen Antworten.
Das Programm gibt truthy (
1
) zurück, wenn die Eingabezeichenfolge punktlastig ist, andernfalls falsy (0
).Die Eingabezeichenfolge muss in Großbuchstaben erfolgen.
Die Eingabe wird in gespeichert
Ans
. Die Ausgabe wird in gespeichertAns
und nach Abschluss des Programms automatisch ausgedruckt.Ungolfed:
Beispiel:
Erläuterung:
(TI-BASIC hat keine Kommentare, es wird davon ausgegangen, dass dies
;
ein Kommentar ist.)Hinweis: Die Byteanzahl eines Programms wird anhand des Werts in [MEM] > [2] > [7] (124 Bytes) ausgewertet, wobei die Länge des Programmnamens
CDGF3
(5 Bytes) und zusätzliche 8 Bytes für subtrahiert werden Speichern des Programms:124 - 5 - 8 = 111 Bytes
quelle
Perl 5
-pF
, 53 BytesProbieren Sie es online!
quelle
Faktor 66 Bytes
Probieren Sie es online!
quelle
C ++ (kompiliert mit Visual Studio 2017) 171 Byte
Wenn wir das Hauptprogramm berücksichtigen, das zu Testzwecken existiert, ist es auch mehr.
Dies ist die ungolfed "ordentlich" Variante
nimmt alle Kleinbuchstaben an
quelle
22
sollte sein2
.)"132...
und"112...
wird"353...
und51
ist der ASCII-Wert von3
c (118 Zeichen) gibt einen positiven Wert für Überstriche und einen negativen Wert für Überstriche zurück
ungegolft
quelle
1& ( v > (c[I] - 65))
, der der gleiche istv > c[I] - 65
, von dem ich mir nicht vorstellen kann, dass er jemals falsch ist. Deshalb könnten wir das Ganze entfernen, während wir auf @ceilingcat für 56 BytesMathGolf , 22 Bytes
Probieren Sie es online!
Verwendet dieselbe Methode wie viele andere Antworten, wobei
ⁿ∩┐↑rⁿ¼~<↔"
die magische Zahl dargestellt wird35344527512513031462452313
.quelle
Python 2,
9086 Bytesarbeitete an meinem Lokal mit der Morsebibliothek . -4 Bytes. Danke für den Tipp @JoKing!
Es ist auch 1 Byte mehr, wenn es in Python 3 ist.
Python 3, 87 Bytes
Obwohl die Frage davon ausgeht, dass die Anzahl von '.' Und '-' nicht gleich sein wird; Wenn sie gleich sind, gibt dieser Code True zurück.
quelle
input
anstelle von verwenden,raw_input
wenn Sie möchten ...input
STDIN ausgewertet wird, bevor er an das Programm übergeben wird