Schreibe eine Funktion oder das Programm , die einen String als Eingabe nimmt und drucken einen truthy Wert , wenn die Zeichenkette a pangram (eine Folge von Buchstaben mindestens eines von jedem Buchstaben im englischen Alphabet enthalten) und ein Falsey Wert anders.
Groß- und Kleinschreibung sollte ignoriert werden. Ist dies der abcdefghijklmnopqrstuvwXYZ
Fall, sollte die Funktion dennoch einen Wahrheitswert zurückgeben. Beachten Sie, dass die Zeichenfolge beliebige andere Zeichen enthalten kann, sodass 123abcdefghijklm NOPQRSTUVWXYZ321
ein wahrer Wert zurückgegeben wird. Eine leere Eingabe sollte einen falschen Wert zurückgeben.
Testfälle
AbCdEfGhIjKlMnOpQrStUvWxYz
==> True
ACEGIKMOQSUWY
BDFHJLNPRTVXZ
==> True
public static void main(String[] args)
==> False
The quick brown fox jumped over the lazy dogs. BOING BOING BOING
==> True
Das ist Code Golf. Es gelten Standardregeln. Kürzester Code in Bytes gewinnt.
code-golf
string
decision-problem
Arcturus
quelle
quelle
Antworten:
Pyth, 7 Bytes
Erläuterung:
Probieren Sie hier die einzeilige Vollprogrammversion aus .
quelle
L!-Grb0
.!-Grs.z0
würde auch funktionieren ist aber länger.Perl 6 , 20 Bytes
Verwendungszweck:
Ich habe die 3-Byte-Version
⊆
desU+2286 SUBSET OF OR EQUAL TO
Operators "french" ( ) anstelle der 4-Byte-Version "texas" ((<=)
) verwendet, die auch einen zusätzlichen Platz davor benötigt hätte.quelle
GS2,
119 BytesDanke an @MitchSchwartz für das Golfen mit 2 Bytes!
Der Quellcode verwendet die CP437-Codierung. Probieren Sie es online!
Wie es funktioniert
quelle
m2
(\xe9
) speichert 2 Bytes.JavaScript ES6, 51
57Editiere 6 Bytes und speichere thx @ user81655
Testschnipsel
quelle
a.replace(/[^A-Z]|[^a-z]/g,'')
odera.replace(/[^A-Z]/gi,'')
arbeiten?A
unda
muss das gleiche Zeichen werden, sonst behält das Set sie als verschieden und die Größe wird> 26[...a.toUpperCase().replace(/[^A-Z]/g,'')].length>25
?R
50,4639 BytesBearbeiten löscht den Bedarf
tolower
durch Hinzufügen vonignore.case=TRUE
(T
)quelle
ignore.case=TRUE (T)
dann auch nicht mitgezählt werden?T
als das Ende, dank Argumente Platzierung Anpassung besteht keine Notwendigkeit , tatsächlich ist , um den Namen des Arguments angeben (undT
ist der Standard - Alias fürTRUE
). Der hier geschriebene Code führt die erforderliche Aktion so aus, wie sie ist, ohne dass etwas hinzugefügt werden muss.O, 11 Bytes
Probieren Sie es online aus.
Leider hat O keinen Unterschied gesetzt: /
Erläuterung
quelle
Julia, 38 Bytes
Dies ist einfach -
lowercase
behandelt das Problem mit Groß- / Kleinbuchstaben,'a':'z'
enthält alle Kleinbuchstaben,∩
ist ein Schnittpunkt, entfernt alle Zeichen, die kein Buchstabe sind, und enthält, da dies an'a':'z'
erster Stelle steht, nur einen der Buchstaben, die in angezeigt werdens
.endof
ist der kürzeste Weg, um die Länge des resultierenden Arrays zu ermitteln. Wenn es 26 ist, dann ist es ein Pangram (es kann nicht mehr als 26 sein und>25
speichert ein Byte relativ zu==26
).quelle
Python 2,
5351 BytesAlternative Lösungen:
Vielen Dank an xnor für den Hinweis, dass Mengen einen
<=
Operator haben, für eine alternative 51:quelle
lambda s:set(range(65,91))<=set(map(ord,s.upper()))
, auch für 51.p=lambda s:{*range(65,91)}<={*map(ord,s.upper())}
. Übrigens kann ich anscheinend keine Regeln finden, ob einlambda
(wie in Ihrem ersten Fall) zugewiesen werden muss oder nicht (wie in Ihren späteren). Hilfe?Netzhaut , 22 Bytes
Probieren Sie es online aus.
Die erste Zeile entspricht einem Buchstaben, der später in der Zeichenfolge nicht mehr angezeigt wird. Das stellt sicher, dass wir nicht jeden Buchstaben auf einmal finden, egal wie oft er vorkommt. Der Übereinstimmungsmodus ersetzt standardmäßig die Zeichenfolge durch die Anzahl der gefundenen Übereinstimmungen. In der zweiten Stufe werden wir also mit
26
dem Ergebnis der ersten Eingabe abgleichen, was entweder0
oder ergibt1
, je nachdem, ob wir das Maximum von 26 Übereinstimmungen gefunden haben oder nicht.quelle
Minkolang 0,14 , 18 Bytes
Probieren Sie es hier aus.
Erläuterung
quelle
Python 3.5, 47 Bytes
Gleiches Prinzip wie die Antwort von Mitch Schwartz , jedoch unter Verwendung der PEP 0448- Erweiterungen zum
*
Entpacken, die erstmals in Python 3.5 eingeführt wurden.Diese Version unterscheidet sich geringfügig von dem, was ich in meinem Kommentar zu Mitch's Post geschrieben habe, indem ich die Zahlen eher in Buchstaben verwandle als umgekehrt. Das liegt daran, dass ich auf diese Weise meine ursprünglichen Lösungsversuche aufgeschrieben habe, bevor ich herausfand, dass ich Mitch nicht übertreiben konnte, ohne seinen Ansatz zu kopieren. Denken Sie also daran, dass Sie meinen letzten Rest an Originalität optimieren!
quelle
Ruby,
4133Verwendungszweck
Vielen Dank an Vasu Adari, der mir 8 Bytes gespart hat
quelle
R
5345 BytesAlte Version bei 53 Bytes:
Verwendungszweck:
quelle
MATLAB / Oktave ,
3533 BytesProbieren Sie es online!
Die anonyme Funktion gibt eine logische 1 zurück, wenn die Eingabe
x
ein Pangram ist, oder eine logische 0, wenn dies nicht der Fall ist.Im Wesentlichen wird der gleiche Ansatz wie bei der Pyth-Lösung von @ ThomasKwa verwendet. Der eingestellte Unterschied zwischen allen Zeichen im Großbuchstabenbereich (
65:91
) und der Eingabezeichenfolge (in Großbuchstaben umgewandelt). Alle Zeichen im Alphabet, jedoch nicht in der Eingabezeichenfolge, werden von zurückgegebensetdiff
. Nur wenn das von der eingestellten Differenz zurückgegebene Array leer ist, ist die Zeichenfolge ein Pangram.Durch die Verwendung von Großbuchstaben anstelle von Kleinbuchstaben werden im Vergleich dazu einige Bytes gespart,
'a':'z'
da stattdessen der ASCII-Wert verwendet werden kann, um den Bereich festzulegen.quelle
Haskell ,
59565351 BytesProbieren Sie es online!
Erläuterung:
Geben Sie eine Eingabezeichenfolge ein
s
. Für jede Zeichenfolgea
im Bereich von 65 bis 90 (die ASCII-Codes fürA
bisZ
) wird geprüft, ob ein Zeichen ins
entwedera
(Großbuchstabe) odera+32
(Kleinbuchstabe) in ein Zeichen von konvertiert isttoEnum
. Dies erzeugt eine Liste von Booleschen Werten.and
prüft, ob sie alle sindTrue
.Alte Version:
Überprüfen Sie für jeden Buchstaben in Großbuchstaben, ob ein Buchstabe aus
s
Großbuchstaben mit dem Buchstaben übereinstimmt.any(==a)s
ist das Gleiche wieelem a s
, ermöglicht jedoch das Ändern der Elementes
vor dem Vergleich. In diesem Fall müssen Sie sie in Großbuchstaben umwandeln.quelle
Japt , 14 Bytes
Probieren Sie es online!
Wie es funktioniert
quelle
CJam, 11 Bytes
Dies ist ein vollständiges Programm. Probieren Sie es online aus .
Erläuterung:
quelle
Javascript,
110109999593 Bytes6 Bytes dank Thomas Kwa und 10 dank ev3 eingespart.
quelle
for(i=65;i++<91;)b+=!~a.indexOf(String.fromCharCode(i));alert(!b)
?05AB1E , 4 Bytes (wahrscheinlich nicht konkurrierend)
Probieren Sie es online!
quelle
2sable ,
65 Bytes6 Byte Version:
Probieren Sie es online!
Erläuterung:
5-Byte-Version, inspiriert von der 05AB1E-Antwort von carusocomputing :
Probieren Sie es online!
Erläuterung:
quelle
Brachylog , 4 Bytes
Probieren Sie es online!
quelle
TeaScript , 12 Bytes
Erster TeaScript-Beitrag seit ich TeaScript getötet habe: p
Probieren Sie es online aus
Ungolfed
quelle
JavaScript ES6,
124114113 BytesIch bin mir sicher, dass man mehr Golf spielen kann.
Erzeugt eine anonyme Funktion.
quelle
C 107 Bytes
quelle
ES6, 68 Bytes
Diese Saite sieht furchtbar verschwenderisch aus, aber ich kenne keinen besseren Weg.
quelle
s=>[...Array(x=9,26)].every(z=>RegExp((++x).toString(36),"i").test(s))
Scala,
594846 Bytesquelle
Bash,
4542 Bytes41-Byte-Programm plus 1, da es aufgerufen werden muss mit
bash -e
:Erstaunlicherweise gelang mir eine Bash-Antwort ohne Anführungszeichen! (ja, ich habe mit Eingaben, die mit
-f
und dergleichen beginnen, nachgeprüft).Dies setzt ein Gebietsschema voraus, in dem die englischen Kleinbuchstaben von
a
bis fortlaufend sindz
. Die Eingabe erfolgt über das erste Argument an das Programm.Die Art und Weise dies funktioniert , ist für jeden alphabetischen Buchstaben
$i
, prüfen wir , ob die Zeichenfolge enthält$i
oder dessen Groß- Äquivalent${i^}
von allen anderen Zeichen zu entfernen. Wenn dies zu einer leeren Zeichenfolge führt, enthielt die Eingabe diesen Buchstaben nicht und wir beenden mit1
(false). Wenn wir ein nicht leeres Ergebnis haben, haben wir den Test bestanden und sind zum nächsten Buchstaben übergegangen. Wenn die Eingabezeichenfolge jeden englischen Buchstaben enthält, erreichen wir das Programmende und verlassen das Programm mit0
(true).quelle
Perl 5, 33 Bytes
quelle
-pl61e '$i=$_;map$\*=$i=~/$_/i,a..z}{'
.PlatyPar , 14 Bytes
Erklärung (Stack Visualizer-Funktion in Kürze verfügbar!):
Wenn ich eine lächerliche "alle Buchstaben des Alphabets drücken" -Funktion hätte, wäre dies 10 ...
Probieren Sie es online !
quelle
Pyke, 6 Bytes
Probieren Sie es hier aus!
quelle