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, Johnaparece dos veces en los nombres y una vez en los apellidos, por lo que definitivamente es un nombre. Ryanaparece una vez en el primero y una vez en el último, por lo que es (probablemente) un primer nombre.
Por lo tanto, Tom Johndefinitivamente tiene dos nombres y Luke Ryanprobablemente 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-Rosao Liam De'Rosason 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 nameso definitely has two first namessi 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!

JohnsonCuenta comoJohno es diferente?Johnsonsería diferente aJohn. Los nombres deben coincidir exactamente.definitely has two first namesyhas two first names? ¿Puede ser siempre uno de esos?definitelysi 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:0conif(y)x++. Si desea optimizar la legibilidad después de la longitud como lo hago yo, ese es probablemente el camino a seguir.Stringyintdirectamente (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<1puede serlo~c, yacque no parece ser nunca positivo.AWK ,
127123 bytesGuardar 1 byte al no usar el
NRvalor 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
-nro 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