Por esse motivo, você precisa de uma maneira melhor de resolver se uma frase é um acrônimo de uma palavra. Você também acha que vale a pena ver se a frase e a palavra em questão são acrônimos recursivos.
Sua tarefa:
Dada uma palavra e, em seguida, uma frase separada por uma linha, produza se a frase for um acrônimo e, em seguida, se for um acrônimo recursivo . (A frase contém o que significa)
- A entrada comporá caracteres alfabéticos, bem como espaços.
- Seu programa não deve fazer distinção entre maiúsculas e minúsculas.
Exemplo de entrada / saída:
Caso 1:
Entrada:
Acronyms
Acronyms can really obviously narrow your message sensors
Saída:
True
True
Caso 2:
Entrada:
FAQ
frequently asked questions
Saída:
True
False
Caso 3:
Entrada:
foo
bar baz
Saída:
False
False
Caso 4:
Entrada:
GNU
GNU is not Unix
Saída:
False
False
Caso 5:
Entrada:
Aha
A huge Aha
Saída:
True
True
Respostas:
Pitão,
1918Este imprime o resultado em um formato bastante estranho, como:
TrueFalse
.Você pode experimentá-lo online ou executar o Conjunto de Testes .
Explicação:
fonte
Python 3, 89
Economizou um monte de bytes graças ao SOPython.
A parte mais complicada desta solução é
h=tuple(a)==next(zip(*d))
.Isso descompacta a lista
d
no zip e, em seguida, chamanext
para retornar uma tupla do primeiro elemento de cada iterável passado para ozip
qual é comparada com uma tupla de cada letra em um (tuple(a)
).fonte
[0]==l
para.startswith(l)
.CJam,
2120 bytesExperimente este violino no intérprete CJam ou verifique todos os casos de teste de uma só vez.
Como funciona
fonte
Haskell,
8180 bytesO formato de saída não é estritamente definido, então retorno um par de booleanos, por exemplo
p "Aha\na huge arm"
- ->(True,False)
.fonte
<-
) - obrigado!Scala,
135110108 bytesEconomizou alguns bytes usando argumentos de linha de comando (graças a J Atkin pela dica), colocando os booleanos como um tupel, usando em
mkString
vez denew String
e imprima em vez de println.EDIT: interpretou mal a pergunta e teve que reimplementar a solução
fonte
Python 3, 106 bytes
Bem, pelo menos, venceu Scala;)
fonte
AppIeScript,
302301297293 BytesAh, inferno, sim. Nem mesmo incomodado com a perda, isso é competitivo para o AppleScript.
Saídas como:
Ou qualquer que seja a resposta.
fonte
PHP, 120 bytes
Não fazer distinção entre maiúsculas e minúsculas é muito pesado (26 bytes). Passou em todos os casos de teste:
Gera dois valores booleanos neste formulário:
Lê dois argumentos da linha de comando, como:
Ungolfed
fonte
Rubi,
7774 bytesfonte
Ruby, 52 bytes
Exemplo:
fonte
Matlab, 90 bytes
Exemplo (observe que o Matlab exibe
true
/false
como1
/0
):fonte
JavaScript ES6,
9592 bytesInsira as duas strings como parâmetros. Gera uma matriz com dois valores: um para cada booleano.
fonte
.indexOf
. Bom trabalho! Talvezr=eval(`/^${a}$/i`)
funcione no lugar da suar
configuração atual .eval
umRegExp
encurtador de objeto. Obrigado pela dica!GNU sed, 118 bytes
Requer
-r
sinalizador, incluído na pontuação como +1. Observe que estou usando\b
para uma correspondência de limite de palavras, mesmo que não possa encontrar isso documentado no GNU sed. Ele funciona para mim ...Expandido:
fonte
Groovy, 91 bytes
O formato de saída é
[bool, bool]
. Isso recebe sua entrada da linha de comando args.fonte
Lua 5.3, 182 bytes
fonte
R, 93 bytes
Uso:
fonte
awk
137 bytesT="True";F="False"
para simplificar a saída.NR*NF<2{a=tolower($1)}
: definidoa
apenas se a primeira linha tiver apenas um campo.END{...}
: assumindo apenas duas linhas ...for(i=1;i<=NF;i++)b=b substr(tolower($i),1,1)
: constrói acrônimo recursivo.print(a==b?T:F)"\n"(a==tolower($1)?T:F)
: imprime a saída das duas comparaçõesa==b
ea==tolower($1)
.Se alguém souber otimizar a construção da sigla recursiva, fique à vontade para sugerir.
fonte
SpecBAS - 144 bytes
A conversão das 2 x entradas em maiúsculas salva caracteres vs. conversão em minúsculas. Agora pode ter várias atribuições feitas em uma
LET
declaração, o que também ajuda. ETEXT
salva um personagemPRINT
.Usa 1/0 para mostrar verdadeiro / falso (o apóstrofo apenas move a saída para a próxima linha).
fonte
Perl5, 90 bytes
trapaceando um pouco: 0 = tudo falso, 1 = um verdadeiro, 2 = ambos verdadeiros. Eu não sou um jogador de golfe, mas estou chateado porque o perl está ausente enquanto navega!
fonte
JavaScript (ES6) 93
Teste a execução do snippet abaixo em qualquer navegador compatível com EcmaScript 6
fonte
JavaScript (ES6),
899695 bytesShucks ... Eu pensei que tinha tudo resolvido, mas aparentemente eu estava errado.
Isso define uma função anônima que recebe entrada como duas cadeias e retorna e matriz de dois itens booleanos. O primeiro item é calculado comparando a primeira string em todas as minúsculas com o primeiro caractere de cada palavra na segunda string. O segundo item é calculado simplesmente verificando se a segunda string contém a primeira.
Aqui está outra solução para o segundo item; 2 bytes mais curtos, mas poucos navegadores suportam:
fonte
GNU: Gnus nettle unicorns
ReferenceError: l is not defined
(faltandol=
antestoLowerCase
)'GNU','GNU is not unix'
(caso de teste 4) deve ser falso, falsal=
tempo procurando um bug e esqueci de colocá-lo de volta. Obrigado por trazer isso à tona! O outro caso de teste também deve ser corrigido.Pyke (sem título quando publicado), (não competitivo), 20 bytes
Você pode encontrar o código fonte aqui , a linguagem é completamente instável (primeiro desafio de teste), portanto, não espere que ela funcione no futuro (commit 8)
Ou 18 bytes (estável)
Experimente aqui!
fonte