Wyzwanie:
Biorąc pod uwagę słowo, sprawdź, czy jest to izogram.
Co :
Izogram to słowo składające się wyłącznie z liter bez duplikatów (bez rozróżniania wielkości liter). Pusty ciąg jest izogramem.
Przykłady:
"Dermatoglyphics" ---> true
"ab" ---> true
"aba" ---> false
"moOse" ---> false
"abc1" ---> false
"" ---> true
Wejście :
Możesz zaakceptować dane wejściowe w dowolnym rozsądnym formacie
Dane wejściowe będą zawierać tylko litery i / lub cyfry, bez spacji ( [a-zA-Z0-9]
)
Wynik :
true
lub dowolną prawdziwą wartością, jeśli wejście jest izogramemfalse
lub jakąkolwiek inną wartość fałszowania
To jest golf golfowy, więc wygrywa najkrótszy kod w bajtach w każdym języku.
code-golf
string
decision-problem
Muhammad Salman
źródło
źródło
sad2
sad2das
nie udałoby się nawet bez,2
więc nic nie pokazuje).Odpowiedzi:
Pytona
2/3365248 bajtówWypróbuj online!
Korzystam z faktu, że
set
zawiera tylko unikalne elementy. Wywołując__len__
metodę każdego z nich, mogę ustalić, czys
zawiera także tylko unikalne elementy (ignorując wielkość liter).EDYCJA: Zaktualizowano, aby spełnić wcześniej przeoczone wymaganie zwrotu False dla danych numerycznych. Zbiór wszystkich cyfr jest zakodowany jako
set(str(56**7))
.EDYCJA 2: Zgodnie z sugestią użytkownika , teraz korzystam z rozpakowywania argumentów, aby ustawić zrozumienie. To formalnie psuje zgodność z Python 2.
źródło
false
gdys
zawiera cyfrę.`56**7`
(jak w innym pythonie) zamiaststr()
krótszego? Nie znam Pythona, ale wydaje się, że to główna różnica między twoimi dwiema odpowiedziami.``
, wersja tylko dla python2 zaoszczędziłaby 4 bajty (3 na tym + 1 na dzieleniu zamiast równa się)56**7
inspiracją było własne kodowanie cyfr 0-9 poniżej, ale oszczędza twój o 1 bajt.lambda s:len(s)==len(set(s.lower())-{`56**7`})
05AB1E , 5 bajtów
Wypróbuj online!
Wyjaśnienie
źródło
R , 41 bajtów
Wypróbuj online!
Podejście regex.
!grepl(regex,scan(,""),F)
nie działało, więc myślę, że przechwytywanie nie pasuje bez rozróżniania wielkości liter w R? Ale ogólnie jestem kiepski w wyrażeniach regularnych, więc nie będę zaskoczony, jeśli zrobię to źle ...R , 58 bajtów
Wypróbuj online!
Dołącza cyfry
0:9
do listy (małych liter) znaków i sprawdza, czy są jakieś duplikaty.źródło
Rubin ,
25 2321 bajtów-2 bajty na obu dzięki Giuseppe
Wypróbuj online!
-2 bajty dzięki Kirill L.
Ruby
-n
,21 19 1816 bajtówWypróbuj online!
źródło
$_
- po prostu wrzucenie wyrażenia regularnego bez niczego innego pośrednio pasuje do$_
: 16 bajtów!/.../
wcześniej nie widziałem , nie mogę go nawet znaleźć na ruby-doc.orgBrachylog , 4 bajty
Wypróbuj online!
Predykat się powiedzie, jeśli wejście jest izogramem, a jeśli się nie powiedzie, nie powiedzie się, wypisując małe litery alfabetu łacińskiego, jeśli się powiedzie. Ponieważ
⊆
wbudowany predykat Brachylog nie pasuje dokładnie do zwykłej relacji między podzbiorem a nadzbiorem, musiałem poświęcić bajt na sortowanie małych liter, ale zaoszczędziłem bajt na tym, że nie muszę jawnie sprawdzać duplikatów. (Gdyby nie trzeba było zawieść z liczbami, moglibyśmy po prostu użyćḷ≠
).źródło
Łuska , 6 bajtów
Wypróbuj online!
Wyjaśnienie
źródło
Japt , 12 bajtów
Wyjaśnienie:
Wypróbuj tutaj.
źródło
MATL , 9 bajtów
Wypróbuj online!
źródło
Python 3 , 46 bajtów
Wypróbuj online!
źródło
Japt 2.0,
1211 bajtów-1 bajt dzięki Nit
Przetestuj online!
źródło
e
JavaScript (Node.js) ,
2925 bajtówWypróbuj online!
Dzięki za aktualizację odpowiedzi na @BMO , @ l4m2 , @KevinCruijssen
-4 bajty dzięki @KevinCruijssen
źródło
s=>!/(.).*\1|[^a-z]/i.test(s)
?[^a-z]
można go zastąpić\d
Siatkówka , 16 bajtów
Zwraca
1
jako wartości Prawda i0
Falsey.Dzięki @Neil za wykrycie i naprawienie błędu w moim początkowym kodzie.
Wypróbuj online.
Wyjaśnienie:
źródło
PowerShell , 91 bajtów
Wypróbuj online!
Naiwne rozwiązanie, ale nie mogę wymyślić lepszego algorytmu. Pobiera dane wejściowe
$b
, konwertuje wielkość liter, rzutujeToUpper
je nachar
tablicę. Potokuje tablicę, wGroup-Object
której konstruuje obiekt, który ma pary nazwa / liczba dla każdej litery wejściowej. Mamy tosort
na podstawiec
liczby i bierzemy ją0
. Sprawdzamy, czy.Count
ma-eq
on.Count
wartość ostatnią[-1]
. Jeśli tak, to liczby są równe, w przeciwnym razie mamy inną liczbę liter.Następnie
-and
sprawdzamy, czy dane wejściowe są-notmatch
przeciwne\d
wykluczeniu jakichkolwiek cyfr na wejściu. Ten wynik logiczny jest pozostawiany w potoku, a dane wyjściowe są niejawne.źródło
Galaretka , 8 bajtów
Wypróbuj online!
źródło
Python 2 ,
5756 bajtówWypróbuj online!
Najpierw zamienia dane wejściowe na zestaw, usuwając duplikaty, następnie usuwa cyfry (zakodowane w
`763**4`
), a następnie sprawdza, czy długość jest taka sama jak oryginalna wartość wejściowaźródło
Java 8,
6139 bajtówWyjaśnienie:
Wypróbuj online.
Wyjaśnienie Regex:
String#matches
domyślnie dodaje^...$
.źródło
APL (Dyalog Unicode) , 12 bajtów
Anonimowa funkcja ukryta.
Wypróbuj online!
819⌶
małe litery(
…)
Zastosuj do tego następującą ukrytą funkcję:~∘⎕D
usuń D igits z argumentu∪≡
czy unikalne elementy argumentu są identyczne?źródło
Perl 6 , 22 bajtów
Wypróbuj online!
Brak dopasowań dla jakiejś postaci, a później tej samej postaci. Funkcja niejawna jako blok kodu, niejawnie dopasuj do $ _, odwróć książkę za pomocą
!
. Dodano|\d
(ta Adam), ale także potrzebne.uc~~
, które wymagały nawiasów ...Alternatywnie z torbami, 23 bajty
Wypróbuj online!
Ten jeden normalizuje obudowę, a następnie tworzy torbę (zestaw z liczeniem przypadków). Podzbiór lub wartość równa prawdy tylko wtedy, gdy wszyscy członkowie są członkami torby porównania, a wszystkie liczby wypadków są mniejsze lub równe wartościom w torbie porównania. Zatem wszelkie powtórzenia lub cyfry spowodowałyby, że porównanie byłoby fałszywe.
źródło
abc1
.|\d
?Szybki , 81 bajtów
Wypróbuj online!
źródło
Visual Basic for Applications (32-bitowy), 102 bajty
Wykorzystano fakt, że w VBA
0^x
daje 1, jeśli x wynosi zero, a 0 w przeciwnym razie. Uruchom w oknie natychmiastowym (debugowania).Edycja: jak wskazał Taylor w komentarzach, działa to tylko w 32-bitowych instalacjach MS Office.
źródło
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
na 95 bajtów, pobierając dane wejściowe z[A1]
. Warto również zauważyć, że ponieważ potęgowanie w VBA jest dziwne, że to rozwiązanie jest ograniczone do 32-bitowych instalacji pakietu Office.<!-- language-all: lang-vb -->
flagę do odpowiedzi, aby dodać wyróżnianie składni05AB1E , 4 bajty
Wypróbuj online!
Wyjaśnienie
źródło
The input will only contain letters and/or numbers, no spaces ([a-zA-Z0-9])
C (gcc) ,
878583 bajtówdwacztery bajty dzięki ceilingcat .Wypróbuj online!
źródło
K (ngn / k) , 18 bajtów
Wypróbuj online!
źródło
CJam , 11 bajtów
Wypróbuj online!
Wyjaśnienie
Podstawowym pomysłem jest dodanie każdej cyfry, a następnie sprawdzenie duplikatów. Ponieważ dodatek zapewnia, że każda cyfra jest już raz obecna, dalsza obecność cyfr będzie duplikatem, powodując, że zwróci fałsz.
źródło
Czerwony , 76 bajtów
Wypróbuj online!
źródło
Smalltalk, 57 bajtów
Metoda do zdefiniowania w klasie String:
Jest to najprawdopodobniej oczywiste.
źródło
Pyth , 17 bajtów
Zestaw testowy
Wyjaśnienie: Tłumaczenie Python 3:źródło
C #, 82 bajty
edycja: dodano test dla char
edycja: używając GroupBy, aby skrócić go o 5 bajtów
źródło
APL (Dyalog Unicode) ,
252022 bajtówWypróbuj online!
Zwraca 1 dla wartości true, w przeciwnym razie 0.
Zaoszczędzono 5 bajtów dzięki @ H.PWiz
Naprawiono i zapisano kolejny bajt dzięki @ Adám
W jaki sposób?
źródło
abc1
.\w
→ nie jest.
ważne?(.).*\1
, nie. Nie działa również w przypadkuabc1
: /abc1
, gdy powinno zwrócić 0.Tcl , 114 bajtów
Wypróbuj online!
Tcl , 121 bajtów
Wypróbuj online!
Wciąż za długo na mój gust!
źródło