Eu não sei sobre todos vocês, mas não estou me preparando para o Halloween - nunca nunca soube - mas meu vizinho é, então vamos ajudá-la.
Ela precisa de ajuda para descobrir qual tipo de doce ela tem, mas ela tem tantos doces que não conseguiria terminar antes do Halloween.
Ela tem:
- Snickers
- KitKat
- Starburst
- GummyBears
- Twix
Entrada
Uma sequência multilinha (ou qualquer outra forma razoável) contendo apenas letras e espaços.
Resultado
Um valor falso se não for um doce válido ou qual é o doce se for um doce.
Como decidir qual doce é
Um doce é válido se houver uma das marcas acima. No entanto, não é tão simples, porque este é um doce válido:
K i t
K a
t
Um doce válido é aquele em que:
- as letras estão em ordem da esquerda para a direita
- as letras são maiúsculas corretamente
- as letras, indo da esquerda para a direita, não tanto subir e descer
- as letras com espaços em branco removidos formam uma das marcas acima
Isso é código-golfe , então o código mais curto em bytes ganha!
Exemplos
Truthys:
1.
kers
c
i
n
S
2.
Kit K a t
3.
St a
r b u
r st
4.
Bear s
G ummy
5.
T w i
x
Falsys:
1.
SNICKERS
2.
C n
a d y
3.
xiwT
4.
S C I
ss o
r s
5.
Kit
Kat
Respostas:
Pitão - 72 bytes
Espero ter pego todos os casos extremos. Base irá comprimir lista de doces.
Conjunto de Teste .
fonte
JavaScript (ES6),
221218216212208205201 bytesExperimente aqui.
fonte
Snick
,ears|T
etc. Acho que você pode corrigir isso adicionando.split('|')
antes.indexOf
.ears|T
problema não é esse, porque somente letras são permitidas nos casos de teste. No entanto, você está certo, porSnick
.Raquete 446 bytes
Ungolfed:
Teste:
Resultado:
fonte
JavaScript (ES6), 139 bytes
Aceita entrada como uma matriz de cadeias de caracteres preenchidas com espaço.
fonte
R, 199 caracteres
A entrada está na forma de uma matriz de caracteres.
match
cuida de qual doce é (verifica também a capitalização).Para verificar se as letras são uma sequência "ascendente" ou "descendente", basta verificar se os locais do primeiro caractere não espacial (se houver) em cada linha estão aumentando ou diminuindo. Para fazer isso, nós
apply
diff
. Isso pode ter algum zero, caso contrário, deve ser tudo positivo ou tudo negativodiff
z
e leve o produto externo consigo. Se o diff tiver entradas positivas e negativas mistas, haverá uma entrada negativa em algum lugar do produto externo. Nesse caso, retorne FALSE.Observe que casos como
retornará um vetor de caractere vazio (em particular não "Twix"), pois
match
estará tentando corresponder a "Twxi".fonte
Python 2.7, 254 bytes
Tenho certeza que isso pode ser jogado mais. Entrada é uma matriz de linhas
s
.Experimente aqui!
fonte