Seseorang memiliki dua nama depan jika nama belakang mereka juga merupakan nama depan yang umum. Anda ditugaskan menentukan nama lengkap mana dalam daftar yang merupakan dua nama depan.
John Smith
John Doe
Luke Ryan
Ryan Johnson
Jenna Jackson
Tom John
Nama apa pun yang muncul di kolom nama depan berpotensi merupakan nama depan. Jika jumlah kemunculan nama di kolom nama depan lebih besar dari jumlah kemunculan di kolom nama belakang, sudah pasti nama depan.
Dalam daftar di atas, John
muncul dua kali dalam nama depan dan sekali dalam nama belakang sehingga jelas merupakan nama depan.Ryan
muncul sekali di depan dan di belakang jadi itu (mungkin) nama depan.
Karena itu, Tom John
pasti punya dua nama depan danLuke Ryan
mungkin memang demikian.
Dengan daftar di atas, kode Anda harus menampilkan yang berikut:
Luke Ryan has two first names
Tom John definitely has two first names
Memasukkan
Seperti disebutkan di atas, kode Anda akan mengambil daftar nama lengkap (dari input standar, satu per baris) yang dipisahkan oleh spasi. Nama dapat menyertakan tanda hubung atau apostrof, tetapi Anda tidak akan pernah diberi nama depan atau belakang yang mencakup spasi (yaitu tidak Liam De Rosa
, tetapi Liam De-Rosa
atau Liam De'Rosa
merupakan permainan yang adil. Dengan kata lain, nama akan cocok dengan[-'A-Za-z]+
.
Setiap nama lengkap akan unik (yaitu John Smith
tidak akan muncul dua kali).
Keluaran
Cetak nama lengkap nama (satu kali per baris) diikuti oleh salah satu has two first names
ataudefinitely has two first names
jika memenuhi kriteria di atas. Nama hanya boleh dicetak satu kali.
Nama yang bukan dua nama depan tidak perlu dicetak.
Anda harus menjaga kasing dan karakter khusus nama.
Contohnya
Memasukkan
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
Keluaran
Riley Hudson definitely has two first names
Ryan Scott has two first names
Memasukkan
Owen Parker
Daniel Hall
Cameron Hall
Sofia Watson
Mia Murphy
Ryan Jones
Emily Ramirez
Keluaran
[no output]
Memasukkan
Olivia Robinson
Jacob van-Dyke
Jacob Ella
Brayden De'Rosa
Levi Brook
Brook Bella
Ella Hill
Ella Anderson
Brook-Anne van-Dyke
Keluaran
Jacob Ella definitely has two first names
Levi Brook has two first names
Catatan dan Penilaian
- Ini golf kode. Skor terendah (byte) menang.
- celah standar berlaku.
Semoga berhasil!
Johnson
dihitung sebagaiJohn
, atau berbeda?Johnson
akan berbeda dariJohn
. Nama harus sama persis.definitely has two first names
danhas two first names
? Itu bisa selalu salah satunya?definitely
jika nama tersebut muncul lebih sering di kolom nama depan daripada kolom nama belakang. Kasing ini menimpa, jadi hanya ditampilkandefinitely has two first names
. Lihatlah contoh-contohnya.Jawaban:
Java (OpenJDK 8) ,
238222221220212 byteCobalah online!
sumber
k=j=q=0
. Juga, itu tidak akan menyelamatkan Anda bytes apapun tapi Anda bisa mengganti keduax+=y?1:0
denganif(y)x++
. Jika Anda ingin mengoptimalkan keterbacaan setelah lama seperti yang saya lakukan, itu mungkin cara yang harus dilakukan.String
danint
secara langsung (dalam 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 byte-2 byte terima kasih kepada @JonathanFrech
Cobalah online!
sumber
-c<1
bisa~c
, karenac
tampaknya tidak pernah menjadi positif.AWK ,
127123 byteMenyimpan 1 byte dengan tidak menggunakan nilai bawaan
NR
.Cobalah online!
sumber
Perl 5 ,
120118 + 2 (-al
) = 120 byteCobalah online!
sumber
Ruby ,
105129 byte+24 byte karena saya melewatkan bagian dari spec
Cobalah online!
sumber
Python 2 ,
140127122131 byteCobalah online!
sumber
05AB1E, 144 byte (Bekerja dalam proses)
sumber
05AB1E ,
5351 byteCobalah online!
Penjelasan
Atau
5149 byte, dengan asumsi Aturan I / O standar (input dan output sebagai array)Cobalah online!
sumber
PHP, 172 byte
mengambil nama sebagai argumen baris perintah terpisah.
Jalankan dengan
-nr
atau coba online .sumber
Python 3, 187 byte
sumber
R , 207 byte
Cobalah online!
sumber
JavaScript (ES6), 149 byte
I / O termasuk trailing newline. Sangat terinspirasi oleh jawaban @ RobertoGraham.
sumber
Haskell ,
144140139 byteCobalah online!
sumber
PowerShell, 176 byte
sumber