Abgeleitet von diesem , jetzt gelöschten Beitrag.
Antworten Sie mit einer Zeichenfolge (wahr / falsch oder zwei konsistente Werte), wenn es sich um ein gutes Bischofspasswort handelt. Dann sind alle folgenden Bedingungen erfüllt:
Es hat mindestens 10 Zeichen
es hat mindestens 3 Ziffern (
[0-9]
)es ist kein Palindrom (identisch mit sich selbst, wenn es umgekehrt ist)
Sie erhalten einen Bonus von 0 Byte, wenn Ihr Code ein gutes Bishop-Passwort ist.
Achtung: Do nicht verwenden Bischof Güte als Maß für die tatsächliche Stärke von Passwörtern!
Beispiele
Gute Bischofspasswörter
PPCG123GCPP
PPCG123PPCG
PPCG123gcpp
0123456789
Tr0ub4dor&3
Nicht gute Bischofspasswörter
PPCG123
(zu kurz)
correct horse battery staple
(nicht genug Ziffern)
PPCG121GCPP
(Palindrom)
(zu kurz und nicht genug Ziffern)
abc121cba
(zu kurz und Palindrom)
aaaaaaaaaaaa
(Palindrom und nicht genug Ziffern)
abc99cba
(alles falsch)
Antworten:
Python 2 ,
61595451 BytesProbieren Sie es online aus!
-5 Bytes dank Erik dem Outgolfer
-3 Bytes dank xnor
quelle
s[:9]<s
, was sich gut mit der Prüfung ohne Palindrom kombinieren lässt:s[:9]<s!=s[::-1]
05AB1E , 12 Bytes
Probieren Sie es online aus oder überprüfen Sie alle Testfälle .
Erläuterung:
quelle
Japt ,
1714 Bytes-3 Bytes von @Shaggy neu angeordnet
Probieren Sie es online aus!
Japt , 15 Bytes (0 Bytes Bonus: v)
Probieren Sie es online aus!
quelle
R ,
8070626463 BytesProbieren Sie es online aus!
Von digEmAll und einigen Neuanordnungen
Probieren Sie es online aus!
Ziemlich einfach, keine wirklich erstaunlichen Tricks hier. Nach Benutzereingaben Zeichenfolge:
quelle
!all(s==rev(s))
durchany(s!=rev(s))
die ein Byte sparen wird. Ich denke, dass die Längenprüfung auch reduziert werden kann, aber nicht sicher, wie (entwedernchar
oder irgendeine Art vonsum(x|1)
Hack)any(s>rev(s))
es funktionieren wird - wenn ein Zeichen kleiner als sein palindromisches Gegenstück ist, dann ist am anderen Ende des Passworts die Umkehrung wahr. Das spart ein weiteres Byte.>2
APL + WIN,
36, 30,29 Byte7 Bytes gespeichert dank Adám
Indexursprung = 0
Fordert zur Eingabe der Zeichenfolge auf
Probieren Sie es online aus! Mit freundlicher Genehmigung von Dyalog Classic
Erläuterung:
Der Code qualifiziert sich auch für den Bonus, da es sich um ein gutes Bischofspasswort handelt.
quelle
≢
was ist~
...≡
? Und selbst wenn Sie dies nicht tun, können Sie×~
in>
Brachylog ,
1812 BytesDanke für die Tipps, Kroppeb und Fatalize !
Probieren Sie es online aus!
Erläuterung
Das Programm ist ein einzelnes Prädikat, das aus zwei Teilen besteht, die verkettet sind
&
.Zuerst:
Zweite:
quelle
{∋.∈Ị∧}ᶜ
kann sein{∋ị}ᶜ
¬↔?l>9&ịˢl>2
ị
, aber es macht Sinn, dass es gelingen würde, wenn das Zeichen eine Ziffer ist. Vielen Dank!?
dergleichen ist ordentlich. Vielen Dank!Gelee , 12 Bytes
Probieren Sie es online aus!
[]
wenn nicht genug Ziffern (leere Liste, falsch),0
wenn sonst schlecht (Null, falsch),1
wenn gut (ungleich Null, wahr).quelle
Java 8, 92 Bytes
Probieren Sie es online aus.
Erläuterung:
quelle
JavaScript,
605646 BytesNimmt die Eingabe als Array von Zeichen auf. Ausgaben
1
für wahrheitsgemäß und0
für falsch.Probieren Sie es online aus!
10 Bytes (!) Dank Arnauld gespeichert .
quelle
Schläger , 122 Bytes
Probieren Sie es online aus!
quelle
APL (Dyalog Unicode) , 25 Byte SBCS
Probieren Sie es online aus!
quelle
(9<≢)∧(3≤1⊥∊∘⎕D)∧⊢≢⌽
und dann ein weiteres Byte sparen, indem Sie es neu anordnen, um Parens zu vermeiden:(9<≢)∧≢∘⌽⍨∧3≤1⊥∊∘⎕D
Lassen Sie sie wissen, wenn Sie eine Erklärung dieser Schritte benötigen.Perl 5
-p
, 33 BytesTIO
quelle
Sauber , 66 Bytes
Probieren Sie es online aus!
s<>reverse s
:s
ist kein Palindroms%%(0,8)<s
: Die ersten 9 Zeichen vons
sind kleiner als alles
sum[1\\c<-s|isDigit c]>2
:s
hat mehr als zwei Ziffernquelle
Retina 0,8,2 , 40 Bytes
Probieren Sie es online aus! Link enthält Testfälle. Erläuterung:
Überprüft, ob mindestens 10 Zeichen vorhanden sind.
Überprüft auf mindestens 3 Ziffern.
Entfernen Sie das erste und das letzte Zeichen, wenn sie übereinstimmen.
Wenn es mindestens 2 Zeichen gibt, war es kein Palindrom.
Die Ausgleichsgruppen von .NET bedeuten, dass dies in einem einzelnen regulären Ausdruck erfolgen kann, dies jedoch 47 Byte dauert:
Probieren Sie es online aus! Link enthält Testfälle.
quelle
Rot ,
117111 BytesProbieren Sie es online aus!
quelle
Python 3 ,
747264 BytesDanke Neil A. für -2 Bytes!
Danke Jo King für -8 Bytes!
Erläuterung:
Probieren Sie es online aus!
quelle
Perl 6 , 32 Bytes
Probieren Sie es online aus!
Anonymer Codeblock, der einfach erzwingt, dass alle Regeln eingehalten werden.
Erläuterung:
quelle
K (oK) ,
3128 Bytes-3 Bytes dank ngn!
Probieren Sie es online aus!
quelle
+//
(Summe bis Konvergenz) anstelle von+/+/
(Summe Summe) verwendenx^x^y
den Schnittpunkt zwischen zwei Listen ermitteln :#x^x^,/!10
. Dies kann verkürzt werden auf#x^x^/!10
(^
ist "ohne",x^/
... ist^
-reduktion mit Anfangswertx
)>
(oder<
) kann als "und nicht" verwendet werden:{(x~|x)<(2<#x^x^/$!10)*9<#x}
JavaScript (Node.js) , 70 Byte
Probieren Sie es online aus!
Gibt 1 für wahr und 0 für falsch zurück
quelle
C # (Visual C # Interactive Compiler) , 67 Byte
Probieren Sie es online aus!
quelle
Pip , 19 Bytes
Probieren Sie es online aus! (alle Testfälle)
Erläuterung
Mit
a
dem ersten Befehlszeilenargument:quelle
Stax , 14 Bytes
Führen Sie es aus und debuggen Sie es
quelle
Pyth, 17 Bytes
Versuchen Sie es online hier oder überprüfen alle Testfälle auf einmal hier .
quelle
Groovy, (47 Bytes)
(Die Einbeziehung des Bonus wird dem Leser als Übung überlassen.)
quelle