Una persona tiene dos nombres si su apellido también es un nombre común. Tiene la tarea de determinar qué nombres completos en una lista son dos nombres.
John Smith
John Doe
Luke Ryan
Ryan Johnson
Jenna Jackson
Tom John
Cualquier nombre que aparezca en la columna de nombre es potencialmente un nombre de pila. Si el número de ocurrencias del nombre en la columna de nombre es mayor que el número de ocurrencias en la columna de apellido, definitivamente es un nombre.
En la lista anterior, John
aparece dos veces en los nombres y una vez en los apellidos, por lo que definitivamente es un nombre. Ryan
aparece una vez en el primero y una vez en el último, por lo que es (probablemente) un primer nombre.
Por lo tanto, Tom John
definitivamente tiene dos nombres y Luke Ryan
probablemente los tiene.
Dada la lista anterior, su código debería generar lo siguiente:
Luke Ryan has two first names
Tom John definitely has two first names
Entrada
Como se mencionó anteriormente, su código incluirá una lista de nombres completos (de entrada estándar, uno por línea) separados por espacios. Los nombres pueden incluir guiones o apóstrofes, pero nunca se le dará un nombre o apellido que incluya espacios (es decir Liam De Rosa
, no , pero Liam De-Rosa
o Liam De'Rosa
son juegos justos. En otras palabras, los nombres coincidirán [-'A-Za-z]+
.
Cada nombre completo será único (es decir John Smith
, no aparecerá dos veces).
Salida
Imprima los nombres completos (una vez por línea) seguidos de uno has two first names
o definitely has two first names
si cumplen con los criterios anteriores. Los nombres solo deben imprimirse una vez.
Los nombres que no son dos nombres no necesitan imprimirse.
Debe conservar el caso y los caracteres especiales del nombre.
Ejemplos
Entrada
Madison Harris
Riley Hudson
Addison Hills
Riley Phillips
Scott Hill
Levi Murphy
Hudson Wright
Nathan Baker
Harper Brooks
Chloe Morris
Aubrey Miller
Hudson Lopez
Samuel Owen
Wyatt Victoria
Brooklyn Cox
Nathan Murphy
Ryan Scott
Salida
Riley Hudson definitely has two first names
Ryan Scott has two first names
Entrada
Owen Parker
Daniel Hall
Cameron Hall
Sofia Watson
Mia Murphy
Ryan Jones
Emily Ramirez
Salida
[no output]
Entrada
Olivia Robinson
Jacob van-Dyke
Jacob Ella
Brayden De'Rosa
Levi Brook
Brook Bella
Ella Hill
Ella Anderson
Brook-Anne van-Dyke
Salida
Jacob Ella definitely has two first names
Levi Brook has two first names
Notas y puntaje
- Este es el código de golf. La puntuación más baja (bytes) gana.
- se aplican las lagunas estándar .
¡Buena suerte!
Johnson
Cuenta comoJohn
o es diferente?Johnson
sería diferente aJohn
. Los nombres deben coincidir exactamente.definitely has two first names
yhas two first names
? ¿Puede ser siempre uno de esos?definitely
si el nombre aparece más veces en la columna de nombre que en la columna de apellido. Este caso se anula, por lo que solo se muestradefinitely has two first names
. Mira los ejemplos.Respuestas:
Java (OpenJDK 8) ,
238222221220212 bytesPruébalo en línea!
fuente
k=j=q=0
. Además, no le guardará ningún byte, pero podría reemplazar el últimox+=y?1:0
conif(y)x++
. Si desea optimizar la legibilidad después de la longitud como lo hago yo, ese es probablemente el camino a seguir.String
yint
directamente (en el ciclo for):l->{for(String n:l){int k=0,j=0,q=0;for(String b=n.split(" ")[1];k<l.length;j+=l[k++].matches(b+" .*")?1:0)q+=l[k].endsWith(" "+b)?1:0;if(j>0)System.out.println(n+(j>q?" definitely":"")+" has two first names");}}
Python 2 ,
141137132130 bytes-2 bytes gracias a @JonathanFrech
Pruébalo en línea!
fuente
-c<1
puede serlo~c
, yac
que no parece ser nunca positivo.AWK ,
127123 bytesGuardar 1 byte al no usar el
NR
valor incorporado .Pruébalo en línea!
fuente
Perl 5 ,
120118 + 2 (-al
) = 120 bytesPruébalo en línea!
fuente
Ruby ,
105129 bytes+24 bytes porque me perdí parte de la especificación
Pruébalo en línea!
fuente
Python 2 ,
140127122131 bytesPruébalo en línea!
fuente
05AB1E, 144 bytes (Trabajo en progreso)
fuente
05AB1E ,
5351 bytesPruébalo en línea!
Explicación
O
5149 bytes, suponiendo reglas de E / S estándar (entrada y salida como matrices)Pruébalo en línea!
fuente
PHP, 172 bytes
toma nombres como argumentos de línea de comando separados.
Ejecutar
-nr
o probarlo en línea .fuente
Python 3, 187 bytes
fuente
R , 207 bytes
Pruébalo en línea!
fuente
JavaScript (ES6), 149 bytes
La E / S incluye la nueva línea final. En gran parte inspirado por la respuesta de @ RobertoGraham.
fuente
Haskell ,
144140139 bytesPruébalo en línea!
fuente
PowerShell, 176 bytes
fuente