Pochodzi z tego , teraz usunięty, opublikować.
Biorąc pod uwagę ciąg, odpowiedz (prawda / fałsz lub dwie spójne wartości), jeśli stanowi dobre hasło biskupa, czyli wtedy, gdy spełnione są wszystkie następujące warunki:
ma co najmniej 10 znaków
ma co najmniej 3 cyfry (
[0-9]
)to nie jest palindrom (identyczny z sobą po odwróceniu)
Otrzymasz 0 bajtów premii, jeśli Twój kod jest dobrym hasłem Bishopa.
Ostrzeżenie: Do nie używać bp dobroć jako miary rzeczywistej objętościowej hasła!
Przykłady
Dobre hasła biskupa
PPCG123GCPP
PPCG123PPCG
PPCG123gcpp
0123456789
Tr0ub4dor&3
Nie dobre hasła biskupa
PPCG123
(za krótki)
correct horse battery staple
(za mało cyfr)
PPCG121GCPP
(palindrom)
(za krótki i za mało cyfr)
abc121cba
(za krótki i palindrom)
aaaaaaaaaaaa
(palindrom i za mało cyfr)
abc99cba
(wszystko źle)
Odpowiedzi:
Python 2 ,
61595451 bajtówWypróbuj online!
-5 bajtów, dzięki Erik the Outgolfer
-3 bajtów, dzięki xnor
źródło
s[:9]<s
, która dobrze łączy się z kontroląs[:9]<s!=s[::-1]
05AB1E , 12 bajtów
Wypróbuj online lub sprawdź wszystkie przypadki testowe .
Wyjaśnienie:
źródło
Japt ,
1714 bajtów-3 bajty uporządkowane według @Shaggy
Wypróbuj online!
Japt , 15 bajtów (Bonus 0 bajtów: v)
Wypróbuj online!
źródło
R ,
8070626463 bajtówWypróbuj online!
Z digEmAll, a także niektórych zmian
Wypróbuj online!
Całkiem proste, nie ma tutaj żadnych niesamowitych sztuczek. Po wprowadzeniu przez użytkownika ciągu znaków:
źródło
!all(s==rev(s))
zany(s!=rev(s))
której uratuje jeden bajt.nchar
sum(x|1)
any(s>rev(s))
zadziała --- jeśli znak jest mniejszy niż jego palindromiczny odpowiednik, wtedy na drugim końcu hasła odwrotność będzie prawdziwa. To oszczędza kolejny bajt.>2
APL + WIN,
36, 3029 bajtów7 bajtów zapisanych dzięki Adámowi
Początek indeksu = 0
Monity o łańcuch wejściowy
Wypróbuj online! Dzięki uprzejmości Dyalog Classic
Wyjaśnienie:
Kod kwalifikuje się również do premii, ponieważ jest to dobre hasło biskupa.
źródło
≢
co jest~
…≡
? A nawet jeśli tego nie zrobisz, możesz połączyć×~
się z>
Brachylog ,
1812 bajtówDzięki za wskazówki, Kroppeb i Fatalize !
Wypróbuj online!
Wyjaśnienie
Program jest pojedynczym predykatem, złożonym z dwóch powiązanych ze sobą części
&
.Pierwszy:
Druga:
źródło
{∋.∈Ị∧}ᶜ
może być{∋ị}ᶜ
¬↔?l>9&ịˢl>2
ị
, ale ma sens, że odniosłoby sukces, jeśli postać jest cyfrą. Dzięki!?
typu jest fajne . Dzięki!Galaretka , 12 bajtów
Wypróbuj online!
[]
jeśli za mało cyfr (pusta lista, fałsz),0
jeśli inaczej źle (zero, fałsz),1
jeśli jest dobry (niezerowy, prawda).źródło
Java 8, 92 bajty
Wypróbuj online.
Wyjaśnienie:
źródło
JavaScript,
605646 bajtówPobiera dane wejściowe jako tablicę znaków. Wyjścia
1
dla truthy i0
dla falsey.Wypróbuj online!
Zaoszczędź 10 bajtów (!) Dzięki Arnauldowi .
źródło
Rakieta , 122 bajty
Wypróbuj online!
źródło
APL (Dyalog Unicode) , 25 bajtów SBCS
Wypróbuj online!
źródło
(9<≢)∧(3≤1⊥∊∘⎕D)∧⊢≢⌽
a następnie zaoszczędzić jeszcze jeden bajt, zmieniając układ, aby uniknąć parens:(9<≢)∧≢∘⌽⍨∧3≤1⊥∊∘⎕D
Daj im znać, jeśli potrzebujesz wyjaśnienia tych kroków.Perl 5
-p
, 33 bajtówTIO
źródło
Czysty , 66 bajtów
Wypróbuj online!
s<>reverse s
:s
nie jest palindromems%%(0,8)<s
: pierwszych 9 znakóws
jest mniej niż wszystkies
sum[1\\c<-s|isDigit c]>2
:s
ma więcej niż dwie cyfryźródło
Retina 0.8.2 , 40 bajtów
Wypróbuj online! Link zawiera przypadki testowe. Wyjaśnienie:
Sprawdza co najmniej 10 znaków.
Sprawdza co najmniej 3 cyfry.
Usuń pierwszy i ostatni znak, jeśli pasują.
Jeśli są co najmniej 2 znaki, to nie był to palindrom.
Grupy równoważące .NET oznaczają, że można to zrobić za pomocą pojedynczego wyrażenia regularnego, ale zajmuje to 47 bajtów:
Wypróbuj online! Link zawiera przypadki testowe.
źródło
Czerwony ,
117111 bajtówWypróbuj online!
źródło
Python 3 ,
747264 bajtyDzięki Neil A. za -2 bajty!
Dzięki Jo King za -8 bajtów!
Wyjaśnienie:
Wypróbuj online!
źródło
Perl 6 , 32 bajty
Wypróbuj online!
Anonimowy blok kodu, który po prostu wymusza przestrzeganie wszystkich reguł.
Wyjaśnienie:
źródło
K (oK) ,
3128 bajtów-3 bajty dzięki ngn!
Wypróbuj online!
źródło
+//
(suma do konwergencji) zamiast+/+/
(suma sumy)x^x^y
, aby znaleźć punkt przecięcia dwóch list:#x^x^,/!10
. można to skrócić do#x^x^/!10
(^
jest „bez”,x^/
... to^
-redukcja o wartości początkowejx
)>
(lub<
) może być użyta jako „i nie”:{(x~|x)<(2<#x^x^/$!10)*9<#x}
JavaScript (Node.js) , 70 bajtów
Wypróbuj online!
Zwraca 1 dla wartości true i 0 dla wartości false
źródło
C # (interaktywny kompilator Visual C #) , 67 bajtów
Wypróbuj online!
źródło
Pip , 19 bajtów
Wypróbuj online! (wszystkie przypadki testowe)
Wyjaśnienie
Przy
a
czym pierwszy argument wiersza poleceń:źródło
Stax , 14 bajtów
Uruchom i debuguj
źródło
Pyth, 17 bajtów
Spróbuj go online tutaj , lub sprawdzić wszystkie przypadki testowe od razu tutaj .
źródło
Groovy, (47 bajtów)
(Włączenie bonusu pozostawia się czytelnikowi jako ćwiczenie)
źródło