Dada uma palavra (ou qualquer sequência de letras) como entrada, você deve interpolar entre cada letra para que cada par de letras adjacente no resultado também seja adjacente a um teclado QWERTY, como se você digitasse a entrada andando em um teclado gigante. Por exemplo, ' sim ' pode se tornar ' y tr es ', ' gato ' pode tornar-se ' c xz um wer t '.
Regras:
Este é o formato do teclado que você deve usar:
q
w
e
r
t
y
u
i
o
p
a
s
d
f
g
h
j
k
l
z
x
c
v
b
n
m
Qualquer par de teclas que toque nesse layout é considerado adjacente. Por exemplo, 's' e 'e' são compatíveis, mas 's' e 'r' não.
- A entrada "palavra" consistirá em qualquer sequência de letras. Ele terá apenas letras, então você não precisa lidar com caracteres especiais.
- A entrada pode estar em qualquer forma conveniente: stdin, uma string, uma lista etc. A caixa de letras não importa; você pode pegar o que for mais conveniente.
- A saída pode estar em qualquer forma conveniente: stdout, uma string, uma lista etc. A caixa de letras não importa e não precisa ser consistente.
- Qualquer caminho através do teclado é válido, exceto que você não pode cruzar a letra anterior novamente antes de chegar à próxima letra. Por exemplo, ' oi ' pode se tornar ' h j i ' ou ' h jnbgyu i ', mas não ' h b h u i '.
- Uma carta não é adequada a si mesma; portanto, ' enquete ' não pode se tornar ' enquete '. Em vez disso, precisaria se tornar algo como ' pol k l '.
- Nenhuma letra de saída é permitida antes ou depois da palavra. Por exemplo, ' was ' não pode se tornar 'tre was ' ou ' was dfg'.
Isso é código de golfe, a resposta mais curta em bytes vence.
dewqwerty
é um caminho válido parady
. Você poderia confirmar isso?Respostas:
Japonês
-g
, 23 bytesExperimente online!
Aceita entrada como uma matriz de letras maiúsculas. Muito semelhante às outras respostas, caso contrário.
Explicação:
fonte
Python 2 , 83 bytes
Experimente online!
Anda no teclado inteiro até que a palavra seja escrita.
fonte
import re
vem depois do código, não antes?re.findall
Seria avaliado quando o lambda for executado, portanto, importar após a definição do lambda está ok. Dito isto, é mais clara para importar antes, simplesmente não há necessidade dePython 2 , 274 bytes (solução ideal)
296300302308315319324327328430432bytes-4 bytes graças ao mypetlion
Experimente online!
Esta solução oferece a menor saída possível. O teclado é transformado em um gráfico usado para encontrar o caminho mais curto para calcular a sequência de saída:
fonte
JavaScript (ES6), 70 bytes
A mesma estratégia do TFeld.
Experimente online!
fonte
05AB1E , 43 bytes
Não é o idioma certo para esse desafio, pois ele não pode usar regex como as outras respostas.
Experimente online ou verifique todos os casos de teste .
Explicação:
fonte
Carvão , 48 bytes
Experimente online! Link é a versão detalhada do código. Explicação:
Pegue a string
qwertyuioplkmjnhbgvfcdxsza
.Encontre a posição do primeiro caractere da palavra. Normalmente, esse índice está além do caractere atingido, mas esse valor falsifica a primeira iteração do loop para imprimir o primeiro caractere da palavra.
Faça um loop sobre cada caractere.
Calcule quantos caracteres imprimir para incluir o próximo caractere da palavra e loop tantas vezes.
Imprima o próximo caractere indexado ciclicamente e aumente o índice.
fonte