Недавно я увлекся игрой в код и попытался написать самую маленькую проверку таутограмм.
Тавтограмма это предложение , в котором все слова начинаются с одной буквы, например: Цветы процветать из Франции .
Учитывая предложение в качестве входных данных, определите, является ли оно таутограммой.
Тестовые случаи
Flowers flourish from France
True
This is not a Tautogram
False
Я придумал этот код Python (потому что это мой основной язык):
print(True if len(list(set([x.upper()[0] for x in __import__('sys').argv[1:]]))) == 1 else False)
Применение:
python3 tautogram.py Flowers flourish from France
# True
python3 tautogram.py This is not a Tautogram
# False
Предложение может содержать запятые и точки, но не другие специальные символы, только заглавные и строчные буквы и пробелы.
Его размер составляет 98 байт. Есть ли меньшее решение на любом языке?
code-golf
string
decision-problem
Хайме Тенорио
источник
источник
tips
вопрос, ограниченныйPython
? Если так, то оба эти тега должны быть добавлены.Ответы:
05AB1E , 5 байтов
Попробуйте онлайн!
Сделал это по мобильному извините без объяснения причин.
источник
Python 2 , 47 байт
Попробуйте онлайн!
Придумал это на мобильном телефоне. Вероятно, можно играть в гольф больше.
источник
Clojure , 80 байт
Попробуйте онлайн! , TIO не поддерживает стандартную библиотеку String Clojure, поэтому в первой версии будет выдано сообщение об ошибке «Не удается найти строчные буквы».
Ungolfed:
Я сделал версию, которая избегает импорта:
Но это 112 байт .
источник
(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 байтПопробуйте онлайн!
Принимает данные и
split
выводит их на пробел. Перебирает каждое слово и берет первую букву, беряs
убстрин,g
начиная с позиции0
и заканчивая1
символом. Затемsort
с помощью букв (без учета регистра по умолчанию) с-u
флагом nique вытащить только одну копию каждой буквы и убедиться, чтоcount
эти имена имеют-eq
значение1
. Вывод неявный.-9 байт благодаря маззи.
источник
05AB1E (legacy) , 5 байтов
Попробуйте онлайн!
источник
Брахилог , 5 байт
Попробуйте онлайн!
источник
Haskell , 71 байт
Попробуйте онлайн!
Haskell ,
6158 байт (используетсяData.Char.toLower
)Попробуйте онлайн!
источник
Perl 5 (
-p
), 20 байтTIO
следующие комментарии в случае неправильной пунктуации (31 байт)
31 байт
в противном случае есть другой подход, также с 31 байтом:
31 байт другой
источник
$_=!/^\W*+(.).*(?=\b\w)(?!\1)/i
JavaScript (Node.js) , 54 байта
Попробуйте онлайн!
Или 47 байтов, если каждому слову (кроме первого) гарантированно предшествует пробел.
источник
\W
test
сохраняет другой байт.Japt
-¡
, 5 байтПопробуй это
источник
C # (интерактивный компилятор Visual C #) , 41 байт
Выдает исключение, если false, ничего, если true.
Попробуйте онлайн!
источник
Perl 6 , 19 байт
Попробуйте онлайн!
источник
Java, (36 байт)
TIO
источник
(?> *)
, используя атомарную группу, чтобы соответствовать пробелу в начале и предотвратить bactracking. просто `*` не работает, потому что после неудачных совпадений будет возвращаться `*` для совпадения с пустой строкой