Inspirado por esta mensagem de bate-papo
Sua tarefa será pegar uma palavra e encontrar a posição média de suas letras no teclado como uma letra.
Layout do teclado
Como os layouts variam de teclado para teclado, usaremos um padrão baseado no meu próprio teclado nesta pergunta.
O teclado possui 3 linhas, a linha superior da esquerda para a direita contém as teclas
QWERTYUIOP
A segunda linha contém as letras
ASDFGHJKL
A linha final contém
ZXCVBNM
Cada letra tem 1 unidade na horizontal do vizinho para a esquerda. Isso significa que W
está 1 de distância Q
e E
1 de distância W
e assim por diante.
As teclas no início de cada linha têm as posições:
Q : 0,0
A : 1/3,1
Z : 2/3,2
Isso significa que as linhas são separadas uma unidade verticalmente e as duas linhas inferiores são deslocadas em um terço da linha acima delas.
Você deve usar uma palavra como entrada e produzir a letra mais próxima da posição média das letras em sua palavra. A média de um conjunto de vetores é
(average x value, average y value)
Quando duas teclas estão equidistantes da média, você pode exibir a tecla "mais próxima".
Isso é código-golfe, então as respostas serão pontuadas em bytes, com menos bytes sendo melhores.
Solução de exemplo
Vamos calcular a média de APL
.
Convertemos cada letra em um vetor
A -> (1/3,1)
P -> (9,0)
L -> (8 1/3,1)
Nós adicionamos esses três vetores para obter (17 2/3, 2)
. Em seguida, dividimos cada coordenada por 3 (o número de letras da palavra) para obter (5 8/9, 2/3)
.
A letra mais próxima de (5 8/9, 2/3)
está J
em, (6 1/3,1)
portanto, nosso resultado é J
.
Casos de teste
APL -> J
TEXT -> R
PPCG -> J
QQQQ -> Q
ZZZZ -> Z
PPPP -> P
MMMM -> M
QQSS -> A or W
F
não parece ser uma saída mais permitidos ...Java (OpenJDK 8) ,
452431424400389324322296285281276274260258257 bytesAlgo para começar a jogar golfe
Experimente online!
fonte
TEXT
.Mathematica, 234 bytes
fonte