Herausforderung :
Überprüfen Sie mit einem bestimmten Wort, ob es sich um ein Isogramm handelt.
Was:
Ein Isogramm ist ein Wort, das nur aus Buchstaben ohne Duplikate besteht (Groß- / Kleinschreibung wird nicht berücksichtigt). Die leere Zeichenfolge ist ein Isogramm.
Beispiele:
"Dermatoglyphics" ---> true
"ab" ---> true
"aba" ---> false
"moOse" ---> false
"abc1" ---> false
"" ---> true
Eingabe:
Sie können Eingaben in jedem angemessenen Format akzeptieren
Die Eingabe enthält nur Buchstaben und / oder Zahlen, keine Leerzeichen ( [a-zA-Z0-9]
)
Ausgabe :
true
oder ein beliebiger Wahrheitswert, wenn die Eingabe ein Isogramm istfalse
oder irgendein falscher Wert anders
Dies ist Code-Golf, so dass der kürzeste Code in Bytes in jeder Sprache gewinnt.
code-golf
string
decision-problem
Muhammad Salman
quelle
quelle
sad2
sad2das
würde auch ohne die fehlschlagen,2
so dass nichts angezeigt wird ).Antworten:
Python
2/3365248 BytesProbieren Sie es online!
Ich nutze die Tatsache, dass
set
nur einzigartige Elemente enthält. Durch Aufrufen der__len__
jeweiligen Methode kann ich feststellen, obs
auch nur eindeutige Elemente enthalten sind (Groß- / Kleinschreibung wird ignoriert).BEARBEITEN: Aktualisiert, um die zuvor übersehene Anforderung zu erfüllen, bei numerischen Eingaben Falsch zurückzugeben. Der Satz aller Ziffern wird als codiert
set(str(56**7))
.BEARBEITEN 2: Nach diesem Benutzervorschlag nutze ich jetzt das Auspacken der Argumente, um das Verständnis festzulegen. Dies bricht die Kompatibilität mit Python 2 förmlich.
quelle
false
wenn ess
ein Ziffernzeichen enthält.`56**7`
(wie in der anderen python antwort) stattstr()
kürzer? Ich kenne Python nicht, aber das scheint der Hauptunterschied zwischen Ihren beiden Antworten zu sein.``
, würde eine Python2-only-Version 4 Bytes sparen (3 auf diese + 1 bei Division statt gleich)56**7
wurde das von Ihrer eigenen Kodierung der Ziffern 0-9 unten inspiriert, spart aber bei Ihnen 1 Byte.lambda s:len(s)==len(set(s.lower())-{`56**7`})
05AB1E , 5 Bytes
Probieren Sie es online!
Erläuterung
quelle
R , 41 Bytes
Probieren Sie es online!
Regex-Ansatz.
!grepl(regex,scan(,""),F)
hat nicht funktioniert, weshalb die Erfassung in R wohl nicht ohne Berücksichtigung der Groß- / Kleinschreibung funktioniert? Ich bin im Allgemeinen schlecht im Regex, daher wundere ich mich nicht, wenn ich es nur falsch mache ...R , 58 Bytes
Probieren Sie es online!
Hängt die Ziffern
0:9
an die (in Kleinbuchstaben gesetzte ) Liste der Zeichen an und prüft, ob Duplikate vorhanden sind.quelle
Ruby ,
25 2321 Bytes-2 Bytes auf beiden dank Giuseppe
Probieren Sie es online!
-2 Bytes dank Kirill L.
Ruby
-n
,21 19 1816 BytesProbieren Sie es online!
quelle
$_
- wirf einfach einen regulären Ausdruck hinein, ohne dass irgendetwas anderes implizit damit übereinstimmt$_
: 16 Bytes!/.../
, kann es nicht mal auf ruby-doc.org findenBrachylog , 4 Bytes
Probieren Sie es online!
Das Prädikat ist erfolgreich, wenn die Eingabe ein Isogramm ist, und schlägt fehl, wenn dies nicht der Fall ist. Wenn dies erfolgreich ist, wird das lateinische Kleinbuchstaben ausgegeben. Da das
⊆
eingebaute Prädikat von Brachylog nicht genau mit der gewöhnlichen Beziehung zwischen einer Teilmenge und einer Obermenge übereinstimmt, musste ich ein Byte für das Sortieren der Eingabe in Kleinbuchstaben ausgeben, aber ein Byte einsparen, weil ich nicht explizit nach Duplikaten suchen musste. (Wenn es nicht mit Zahlen fehlschlagen musste, könnten wir einfach verwendenḷ≠
.)quelle
Schale , 6 Bytes
Probieren Sie es online!
Erläuterung
quelle
Japt , 12 Bytes
Erläuterung:
Probieren Sie es hier aus.
quelle
MATL , 9 Bytes
Probieren Sie es online!
quelle
Python 3 , 46 Bytes
Probieren Sie es online!
quelle
Japt 2.0,
1211 Bytes-1 Byte dank Nit
Online testen!
quelle
e
JavaScript (Node.js) ,
2925 BytesProbieren Sie es online!
Vielen Dank für das Update auf Antwort an @BMO , @ l4m2 , @KevinCruijssen
-4 Bytes dank @KevinCruijssen
quelle
s=>!/(.).*\1|[^a-z]/i.test(s)
?[^a-z]
dass durch\d
Netzhaut , 16 Bytes
Gibt
1
als Truthy- und0
als Falsey-Werte zurück.Vielen Dank an @Neil, dass Sie einen Fehler in meinem ursprünglichen Code entdeckt und behoben haben .
Probieren Sie es online aus.
Erläuterung:
quelle
PowerShell , 91 Byte
Probieren Sie es online!
Naive Lösung, aber ich kann mir keinen besseren Algorithmus ausdenken. Nimmt Eingaben auf
$b
, konvertiert dieToUpper
Groß- / Kleinschreibung und wandelt sie in einchar
-array um. Leitet das Array weiter, inGroup-Object
das ein Objekt mit Name / Anzahl-Paaren für jeden Eingabebuchstaben erstellt wird. Wir machen das dannsort
anhand derc
Anzahl und nehmen die0
th davon. Wir prüfen, ob sein.Count
ist-eq
ual zu dem.Count
des letzten[-1]
Paar. Wenn ja, dann sind die Zählungen alle gleich, ansonsten haben wir eine unterschiedliche Anzahl von Buchstaben.Wir
-and
überprüfen dann , ob die Eingabe-notmatch
dagegen ist\d
, Ziffern in der Eingabe auszuschließen. Dieses boolesche Ergebnis verbleibt in der Pipeline und die Ausgabe ist implizit.quelle
Gelee , 8 Bytes
Probieren Sie es online!
quelle
Python 2 ,
5756 BytesProbieren Sie es online!
Zuerst wird eine Menge erstellt, dann werden die Duplikate entfernt und die Ziffern (kodiert
`763**4`
) entfernt. Anschließend wird überprüft, ob die Länge mit der ursprünglichen Eingabe übereinstimmtquelle
Java 8,
6139 BytesErläuterung:
Probieren Sie es online aus.
Regex Erklärung:
String#matches
implizit fügt hinzu^...$
.quelle
APL (Dyalog Unicode) , 12 Byte
Anonyme stillschweigende Funktion.
Probieren Sie es online!
819⌶
Kleinbuchstaben(
…)
Wenden darauf folgende implizite Funktion an:~∘⎕D
Entfernen D igits aus dem Argument∪≡
Sind die eindeutigen Elemente des Arguments damit identisch?quelle
Perl 6 , 22 Bytes
Probieren Sie es online!
Keine Übereinstimmungen für ein Zeichen, später dasselbe Zeichen. Implizite Funktion als Codeblock, implizite Übereinstimmung mit $ _, Buch mit invertieren
!
. Hinzugefügt|\d
(ta Adam), aber auch benötigt.uc~~
, was Klammern benötigt ...Alternative mit Taschen, 23 Bytes
Probieren Sie es online!
Dieser eine normalisiert den Fall, macht dann eine Tasche (gesetzt mit Inzidenzzählern). Teilmenge oder gleich nur wahr, wenn alle Mitglieder Mitglieder des Vergleichsbeutels sind und alle Inzidenzzahlen kleiner oder gleich denen des Vergleichsbeutels sind. Alle Wiederholungen oder Ziffern würden den Vergleich falsch machen.
quelle
abc1
.|\d
?Schnell , 81 Bytes
Probieren Sie es online!
quelle
Visual Basic für Applikationen (32 Bit), 102 Byte
Verwendet die Tatsache, dass in VBA
0^x
1 ergibt, wenn x Null ist und 0 sonst. Im sofortigen (Debug-) Fenster ausführen.Bearbeiten: Wie Taylor in den Kommentaren ausgeführt hat, funktioniert dies nur bei 32-Bit-Installationen von MS Office.
quelle
s=LCase([A1]):j=1:For i=1To Len(s):k=Mid(s,i,1):j=j*0^InStr(i+1,s,k)*(k Like"[a-z]"):Next:?j<>0
durch Eingabe von auf 95 Byte umstellen[A1]
. Es ist auch erwähnenswert, dass diese Lösung auf 32-Bit-Installationen von Office beschränkt ist, da Exponentiation in VBA seltsam ist.<!-- language-all: lang-vb -->
Ihrer Antwort eine Markierung hinzufügen, um die Syntax hervorzuheben05AB1E , 4 Bytes
Probieren Sie es online!
Erläuterung
quelle
The input will only contain letters and/or numbers, no spaces ([a-zA-Z0-9])
C (GCC) ,
878583 Byteszweivier Bytes dank ceilingcat .Probieren Sie es online!
quelle
K (ngn / k) , 18 Bytes
Probieren Sie es online!
quelle
CJam , 11 Bytes
Probieren Sie es online!
Erläuterung
Die Grundidee ist, jede Ziffer anzuhängen und dann nach Duplikaten zu suchen. Da durch das Anhängen sichergestellt wird, dass jede Ziffer bereits einmal vorhanden ist, ist jedes weitere Vorhandensein von Ziffern ein Duplikat, wodurch False zurückgegeben wird.
quelle
Rot , 76 Bytes
Probieren Sie es online!
quelle
Smalltalk, 57 Bytes
Methode, die in der Klasse String definiert werden soll:
Dies ist höchstwahrscheinlich selbsterklärend.
quelle
Pyth , 17 Bytes
Testsuite
Erläuterung: Python 3 Übersetzung:quelle
82 Bytes
edit: test für char hinzugefügt
edit: mit GroupBy um 5 Byte kürzen
quelle
APL (Dyalog Unicode) ,
25 -20 -22 ByteProbieren Sie es online!
Gibt 1 für true zurück, sonst 0.
5 Bytes gespart dank @ H.PWiz
Behoben und ein weiteres Byte dank @ Adám gespeichert
Wie?
quelle
abc1
.\w
→ nicht.
gültig?(.).*\1
, nein. Es schlägt auch fehl fürabc1
: /abc1
, wenn es 0 zurückgeben sollte.Tcl , 114 Bytes
Probieren Sie es online!
Tcl , 121 Bytes
Probieren Sie es online!
Für meinen Geschmack noch zu lang!
quelle