Las tres filas del teclado qwerty son qwertyuiop
, asdfghjkl
y zxcvbnm
. Su tarea es encontrar la palabra más larga que se puede escribir usando solo una fila del teclado, de una lista dada de palabras.
Entrada de muestra 1
artist
home
gas
writer
geology
marine
twerp
Salida
writer
(De las palabras dadas, solo gas
, writer
y twerp
se pueden escribir usando una sola fila, y writer
es la más larga)
Las palabras pueden no ser palabras reales (así que no asuma que la tercera fila no es válida). Sin embargo, puede suponer que siempre habrá exactamente una respuesta (ni más ni menos).
Entrada de muestra 2
wrhuji
bxnzmmx
gllwssjjd
vnccbb
lrkjhgfdsa
tttttt
Salida
bxnzmmx
Se pueden proporcionar signos de puntuación y espacios en blanco adicionales en la entrada (según los requisitos de idioma). Sin embargo, no se debe dar salida adicional. La entrada y la salida están en minúsculas. El código más corto gana.
Respuestas:
Python 2, 84 bytes
Encuentra el
max
de la entrada, comparándolo con menos filas de teclado distribuidas, luego en longitud creciente. El valor de la fila del teclado se extrae mediante"asdfghjklzxcvbnm".find(c)/9
, que lleva la fila central a0
, la fila inferior a1
, y la fila superior, que se excluye, a-1
, dado quefind
da-1
valores perdidos.Otros intentos
fuente
/
personaje más para Python 3;)9
yfor
...E
oe
, casi siempre4if 0else 2
es válido en 2.7.11 y 3.5.1 (y probablemente ha sido válido para algunas versiones anteriores)Japt,
3230 bytes¡Pruébelo en línea! La entrada es una matriz de cadenas.
Cómo funciona
fuente
"QWERTYUIOP\nASDFGHJKL\nZXCVBNM"
un literal predefinido? Bien jugado :-)D
está establecidoQWERTYUIOP\nASDFGHJKL\nZXCVBNM
, incluso la página a la que te refieres parece indicarVariables <...> D 13
;
al comienzo del programa restablece las variablesA-L
a varios valores.D
se establece en la cadena del teclado. Puedes encontrar más información aquí .Python 2.5+ y 3, 93 bytes
Tuve que probar cuántos golpes para este enfoque; esto utiliza el hecho de que
a.strip(b)
da como resultado una cadena vacía sia
solo consiste en caracteres que aparecen en b.La función toma una lista de cadenas y devuelve una cadena.
fuente
key
variable allí? Creo que puedes eliminarlo.key
argumento de lamax
función es solo de palabra clave.Retina , 73 bytes
Pruébalo en línea!
Conclusión: la retina necesita una etapa de clasificación.
Explicación
Esta es una etapa grep: solo mantiene líneas que coinciden con la expresión regular. Es decir, aquellos que se forman exclusivamente a partir de una de esas clases de personajes.
Ahora solo necesitamos encontrar la mayor de las cadenas restantes. Hacemos esto haciendo coincidir todas las palabras que son al menos tan largas como todas las palabras que siguen. The
1
es una nueva adición a Retina (lanzada hace dos días), que limita esta etapa del partido a considerar solo el primero. Y le!
indica a Retina que imprima el partido (en lugar de contarlo).fuente
(?<a-b>...)
sintaxis que rara vez se necesita en el golf de código.o-r
, increíble.Java,
154142 o142130 bytesPorque, ya sabes, Java.
C #, para comparar .
146 bytes si la entrada tiene que ser una sola cadena con valores separados por
\n
:134 bytes si puedo asumir la entrada como String [] en su lugar:
Ligeramente incólume:
La segunda lambda es a
Function<String[],String>
.fuente
l->l.stream().filter(g->g.matches("[wertyuio-r]*|[asdfghjkl]*|[zxcvbnm]*")).max((a,b)->a.length()-b.length()).get()
(116 caracteres)import java.util.*;
en el conteo de bytes, lo que significa que tomar una lista es -16 bytes tomando una Lista pero +19 para importar la Lista. SIN EMBARGO, atrapó allí usando enmax
lugar dereduce
una ganancia de -7 bytes.Jalea,
4034 bytesPruébalo en línea!
Cómo funciona
fuente
Pitón 3, 98
Guardado 5 bytes gracias a Kevin.
Guardado 3 bytes gracias a PM 2Ring.
Guardado 3 bytes gracias a Antti Haapala.
Brute forzándolo en este momento. Filtre las palabras solo a las contenidas en una sola fila, y luego ordeno por la longitud máxima de la cadena.
Casos de prueba:
fuente
PowerShell v2 +, 72 bytes
Toma datos a través de argumentos de línea de comandos como
$args
, luego usa el-match
operador con una expresión regular para seleccionar solo las palabras que se componen exclusivamente de una fila de teclado. Canalizamos esos resultados enSort-Object
ese tipo por la propiedadLength
. Podemos hacer esto ya que las cadenas en PowerShell son todas delSystem.String
tipo, lo que incluye.Length
como una propiedad ordenable. Esto ordena las cadenas en orden ascendente por longitud, por lo que tomamos la última con[-1]
, lo dejamos en la tubería y la salida es implícita.Ejemplo
fuente
Pyth,
4535 bytes¡Gracias a @FryAmThe Eggman por salvarme algunos bytes!
Pruébalo aquí!
Toma entrada como una lista de palabras.
Explicación
fuente
Rubí,
888269Si no se me permite tomar una lista de cadenas y debo tomar una cadena multilínea, agregue +12 a la puntuación y agregue
.split('\n')
justo antes de la.grep
llamada.Gracias CatsAreFluffy por enseñarme sobre lambdas stabby en Ruby, y otras optimizaciones de manatwork
fuente
.split('\n')
antes del.select
, ¿verdad? ¿Y por qué no hay lambdas stabby?.select
del bloque de código es compararlo con una expresión regular,.grep
es más adecuado; no es necesario poner paréntesis alrededor de los parámetros del último método en una cadena de llamadas;.length
tiene un alias más corto,.size
:->x{x.grep(/^([o-rwetyui]+|[asdfghjkl]+|[zxcvbnm]+)$/).max_by &:size}
C #, 141/112 / (120 bytes)
Contendiente por el peor lenguaje de golf, por razones obvias. Utiliza "my" locale con qwertz en lugar de qwerty, pero de lo contrario funciona bien.
Programa completo sin donde:
Solo salida sin Where:
Solo salida (original):
fuente
bash
105 bytesY varias otras utilidades, por supuesto.
fuente
awk
código se puede escribir más corto como$0=length"\t"$0
.awk,
928481 bytesahorró 3 bytes gracias a la sugerencia de @Wolfgang
fuente
[wetyuio-r]
lugar, y también dos más haciendo en/^(expr|expr|expr)$/
lugar de `/ ^ expr $ | ^ expr $ | ^ expr $ /gawk
ymawk
son felices sin ellosMATL , 54 bytes
Esto funciona con la versión actual (14.0.0) del lenguaje / compilador.
El formato de entrada es (primer ejemplo)
o (segundo ejemplo)
Pruébalo en línea!
Explicación
fuente
Perl, 81 bytes
$a=$1 if/^([wetyuio-r]+|[asdfghjkl]+|[zxcvbnm]+)$/&&1<<y///c>$a=~y///c;END{say$a}
El símbolo a la letra cuenta bastante alto.
fuente
Groovy, 65 personajes
Ejecución de muestra:
Tenga en cuenta que la expresión regular utilizada por
.grep()
no requiere anclaje, lo que permite ahorrar también la agrupación:fuente