Ostatnio zacząłem grać w golfa i próbowałem napisać najmniejszy program do sprawdzania tautogramów.
Tautogram to zdanie, w którym wszystkie słowa zaczynają się od tej samej litery, na przykład: kwiaty rozkwitać z Francji .
Biorąc pod uwagę zdanie, określ, czy jest to tautogram.
Przypadki testowe
Flowers flourish from France
True
This is not a Tautogram
False
Wymyśliłem ten kod python (ponieważ jest to mój główny język):
print(True if len(list(set([x.upper()[0] for x in __import__('sys').argv[1:]]))) == 1 else False)
Stosowanie:
python3 tautogram.py Flowers flourish from France
# True
python3 tautogram.py This is not a Tautogram
# False
To zdanie może zawierać przecinki i kropki, ale nie może zawierać żadnych innych znaków specjalnych, tylko wielkie i małe litery oraz spacje.
Jego rozmiar to 98 bajtów. Czy istnieje mniejsze rozwiązanie w jakimkolwiek języku?
code-golf
string
decision-problem
Jaime Tenorio
źródło
źródło
tips
pytanie ograniczone doPython
? Jeśli tak, oba te tagi powinny zostać dodane.Odpowiedzi:
05AB1E , 5 bajtów
Wypróbuj online!
Czy to na telefon usprawiedliwia brak wyjaśnienia.
źródło
Python 2 , 47 bajtów
Wypróbuj online!
Przyszedł do tego na telefonie komórkowym. Prawdopodobnie można golfa więcej.
źródło
Clojure , 80 bajtów
Wypróbuj online! . TIO nie obsługuje jednak standardowej biblioteki ciągów Clojure, więc pierwsza wersja zgłosi błąd „Nie można znaleźć małych liter”.
Nie golfowany:
Stworzyłem wersję, która unika importu:
Ale to 112 bajtów .
źródło
(define(f s)(apply char=?(map(λ(x)(char-upcase(car(string->list x))))(string-split s))))
(de f(s)(apply =(mapcar car(split(chop(lowc s))" "))))
PowerShell ,
575041 bajtówWypróbuj online!
Pobiera dane wejściowe i
split
jest w białych znakach. Pętla przechodzi przez każde słowo i chwyta pierwszą literę, biorącs
ubstring
zaczynając od pozycji0
i idąc za1
postacią. Następniesort
s litery (domyślnie bez rozróżniania wielkości liter) z-u
flagą nique, aby wyciągnąć tylko jedną kopię każdej litery i sprawdzić, czycount
te nazwy są-eq
prawdziwe1
. Wynik jest niejawny.-9 bajtów dzięki mazzy.
źródło
05AB1E (starsza wersja) , 5 bajtów
Wypróbuj online!
źródło
Brachylog , 5 bajtów
Wypróbuj online!
źródło
Haskell , 71 bajtów
Wypróbuj online!
Haskell ,
6158 bajtów (za pomocąData.Char.toLower
)Wypróbuj online!
źródło
Perl 5 (
-p
), 20 bajtówTIO
następujące komentarze w przypadku złej interpunkcji (31 bajtów)
31 bajtów
w przeciwnym razie istnieje inne podejście, również z 31 bajtami:
31 bajtów innych
źródło
$_=!/^\W*+(.).*(?=\b\w)(?!\1)/i
JavaScript (Node.js) , 54 bajty
Wypróbuj online!
Lub 47 bajtów, jeśli każde słowo (ale pierwsze) z pewnością będzie poprzedzone spacją.
źródło
\W
test
zapisuje kolejny bajt.Japt
-¡
, 5 bajtówSpróbuj
źródło
C # (interaktywny kompilator Visual C #) , 41 bajtów
Zgłasza wyjątek, jeśli jest fałszywy, nic, jeśli jest prawdziwy.
Wypróbuj online!
źródło
Perl 6 , 19 bajtów
Wypróbuj online!
źródło
Java, (36 bajtów)
TIO
źródło
(?> *)
z tym poradzić dodając , używając grupy atomowej, aby dopasować przestrzeń na początku i by uniknąć baktrackingu. po prostu `*` nie działa, ponieważ po nieudanym dopasowaniu cofnie `*`, aby dopasować pusty ciąg