Eu entrei recentemente no golfe de código e tentei escrever o menor verificador de tautograma.
Um tautograma é uma frase na qual todas as palavras começam com a mesma letra, por exemplo: Flores florescem da França .
Dada uma frase como entrada, determine se é um tautograma.
Casos de teste
Flowers flourish from France
True
This is not a Tautogram
False
Eu vim com esse código python (porque é minha linguagem principal):
print(True if len(list(set([x.upper()[0] for x in __import__('sys').argv[1:]]))) == 1 else False)
Uso:
python3 tautogram.py Flowers flourish from France
# True
python3 tautogram.py This is not a Tautogram
# False
A frase pode conter vírgulas e pontos, mas nenhum outro caractere especial, apenas letras maiúsculas e minúsculas e espaços.
Seu tamanho é 98 bytes. Existe uma solução menor em qualquer idioma?
code-golf
string
decision-problem
Jaime Tenorio
fonte
fonte
tips
questão limitada aPython
? Nesse caso, essas duas tags devem ser adicionadas.Respostas:
05AB1E , 5 bytes
Experimente online!
Isso no celular desculpou a ausência de explicação.
fonte
Python 2 , 47 bytes
Experimente online!
Veio com isso no celular. Provavelmente pode ser jogado mais.
fonte
Clojure , 80 bytes
Experimente online! . O TIO não suporta a biblioteca String padrão do Clojure, portanto, a primeira versão gera um erro "Não é possível encontrar letras minúsculas".
Ungolfed:
Eu fiz uma versão que evita a importação:
Mas são 112 bytes .
fonte
(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 bytesExperimente online!
Recebe e
split
coloca no espaço em branco. Passa por cada palavra e pega a primeira letra, pegando os
ubstring
começando na posição0
e indo para o1
personagem. Em seguida,sort
s as letras (sem distinção entre maiúsculas e minúsculas) com o-u
bandeira nique para retirar apenas uma cópia de cada letra, e verifica ocount
desses nomes são-eq
ual a1
. A saída está implícita.-9 bytes graças ao mazzy.
fonte
05AB1E (herdado) , 5 bytes
Experimente online!
fonte
Braquilog , 5 bytes
Experimente online!
fonte
Haskell , 71 bytes
Experimente online!
Haskell ,
6158 bytes (usandoData.Char.toLower
)Experimente online!
fonte
Perl 5 (
-p
), 20 bytesTIO
comentários a seguir em caso de pontuação incorreta (31 bytes)
31 bytes
caso contrário, há outra abordagem, também com 31 bytes:
31 bytes outros
fonte
$_=!/^\W*+(.).*(?=\b\w)(?!\1)/i
JavaScript (Node.js) , 54 bytes
Experimente online!
Ou 47 bytes, se for garantido que cada palavra (mas a primeira) seja precedida por um espaço.
fonte
\W
test
salva outro byte.Japt
-¡
, 5 bytesTente
fonte
C # (compilador interativo do Visual C #) , 41 bytes
Lança uma exceção se falsa, nada se for verdade.
Experimente online!
fonte
Perl 6 , 19 bytes
Experimente online!
fonte
Java, (36 bytes)
TIO
fonte
(?> *)
, usando grupo atômica para coincidir com o espaço no início e bactracking pevent. apenas `*` não funciona porque, após falhas nas correspondências, retornará `*` para corresponder à sequência vazia