Osoba ma dwa imiona, jeśli ich nazwisko jest również imieniem zwyczajnym. Twoim zadaniem jest określenie, które pełne nazwiska na liście to dwa imiona.
John Smith
John Doe
Luke Ryan
Ryan Johnson
Jenna Jackson
Tom John
Każda nazwa występująca w kolumnie imienia jest potencjalnie imieniem. Jeśli liczba wystąpień nazwy w kolumnie imienia jest większa niż liczba wystąpień w kolumnie imienia, to na pewno jest to imię.
Na powyższej liście John
pojawia się dwa razy w imionach i raz w nazwiskach, więc jest to zdecydowanie imię. Ryan
pojawia się raz w pierwszym i raz w ostatnim, więc jest to (prawdopodobnie) imię.
Dlatego Tom John
zdecydowanie ma dwa imiona i Luke Ryan
prawdopodobnie tak.
Biorąc pod uwagę powyższą listę, kod powinien wyświetlać następujące informacje:
Luke Ryan has two first names
Tom John definitely has two first names
Wejście
Jak wspomniano powyżej, twój kod pobierze listę pełnych nazw (ze standardowego wejścia, po jednym w wierszu) oddzielonych spacjami. Nazwy mogą zawierać łączniki lub apostrofy, ale nigdy nie otrzymasz imienia lub nazwiska, które zawiera spacje (tj. Nie Liam De Rosa
, ale Liam De-Rosa
lub Liam De'Rosa
są fair game. Innymi słowy, nazwy będą pasować [-'A-Za-z]+
.
Każde pełne imię i nazwisko będzie unikalne (tj. John Smith
Nie pojawi się dwukrotnie).
Wynik
Wydrukuj pełne nazwy nazwisk (raz w wierszu), a następnie jedno z nich has two first names
lub definitely has two first names
jeśli spełniają one powyższe kryteria. Nazwiska należy wydrukować tylko raz.
Imiona, które nie są dwoma imionami, nie muszą być drukowane.
Musisz zachować wielkość liter i znaki specjalne nazwy.
Przykłady
Wejście
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
Wynik
Riley Hudson definitely has two first names
Ryan Scott has two first names
Wejście
Owen Parker
Daniel Hall
Cameron Hall
Sofia Watson
Mia Murphy
Ryan Jones
Emily Ramirez
Wynik
[no output]
Wejście
Olivia Robinson
Jacob van-Dyke
Jacob Ella
Brayden De'Rosa
Levi Brook
Brook Bella
Ella Hill
Ella Anderson
Brook-Anne van-Dyke
Wynik
Jacob Ella definitely has two first names
Levi Brook has two first names
Notatki i punktacja
- To jest kod golfowy. Najniższy wynik (w bajtach) wygrywa.
- obowiązują standardowe luki .
Powodzenia!
Johnson
liczy sięJohn
, czy jest inaczej?Johnson
byłoby inaczej niżJohn
. Nazwy muszą dokładnie pasować.definitely has two first names
ihas two first names
? Zawsze może być jednym z nich?definitely
wtedy, gdy nazwa pojawia się więcej razy w kolumnie imienia niż w kolumnie imienia. Ten przypadek zastępuje, więc wyświetla się tylkodefinitely has two first names
. Sprawdź przykłady.Odpowiedzi:
Java (OpenJDK 8) ,
238222221220212 bajtówWypróbuj online!
źródło
k=j=q=0
. Also, it won't save you any bytes but you could replace the latterx+=y?1:0
withif(y)x++
. If you like to optimize readability after length like I do, that's probably the way to go.String
andint
directly (in the for-loop):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 thanks to @JonathanFrech
Try it online!
źródło
-c<1
can be~c
, asc
does not appear to ever get positive.AWK,
127123 bytesSaving 1 byte by not using the built-in
NR
value.Try it online!
źródło
Perl 5,
120118 + 2 (-al
) = 120 bytesTry it online!
źródło
Ruby,
105129 bytes+24 bytes because I missed part of the spec
Try it online!
źródło
Python 2,
140127122131 bytesTry it online!
źródło
05AB1E, 144 bytes (Work in progress)
źródło
05AB1E,
5351 bytesTry it online!
Explanation
Or
5149 bytes, assuming standard I/O Rules (input and output as arrays)Try it online!
źródło
PHP, 172 bytes
takes names as separate command line arguments.
Run with
-nr
or try it online.źródło
Python 3, 187 bytes
źródło
R, 207 bytes
Try it online!
źródło
JavaScript (ES6), 149 bytes
I/O includes trailing newline. Largely inspired by @RobertoGraham's answer.
źródło
Haskell,
144140139 bytesTry it online!
źródło
PowerShell, 176 bytes
źródło