สองชื่อแรก


14

บุคคลที่มีสองชื่อหากนามสกุลของพวกเขายังเป็นชื่อสามัญ คุณได้รับมอบหมายให้กำหนดชื่อเต็มในรายชื่อสองชื่อแรก

John Smith
John Doe
Luke Ryan
Ryan Johnson
Jenna Jackson
Tom John

ชื่อใด ๆ ที่เกิดขึ้นในคอลัมน์ชื่ออาจเป็นชื่อแรก หากจำนวนการเกิดขึ้นของชื่อในคอลัมน์ชื่อแรกที่มีมากขึ้นกว่าจำนวนของเหตุการณ์ที่เกิดขึ้นในคอลัมน์ชื่อสุดท้ายก็เป็นที่แน่นอนชื่อแรก

ในรายการด้านบนJohnจะปรากฏสองครั้งในชื่อแรกและอีกครั้งในชื่อสุดท้ายดังนั้นจึงเป็นชื่อจริง Ryanปรากฏขึ้นครั้งแรกในครั้งแรกและครั้งสุดท้ายจึงเป็นชื่อ

ดังนั้นจึงTom Johnมีชื่อจริงสองชื่อและLuke Ryanอาจเป็นเช่นนั้น

รับรายการด้านบนรหัสของคุณควรส่งออกต่อไปนี้:

Luke Ryan has two first names
Tom John definitely has two first names

อินพุต

ตามที่กล่าวไว้ข้างต้นรหัสของคุณจะอยู่ในรายการชื่อเต็ม (จากอินพุตมาตรฐานหนึ่งรายการต่อบรรทัด) คั่นด้วยช่องว่าง ชื่อสามารถรวมยัติภังค์หรือ apostrophes แต่คุณจะไม่ได้รับชื่อหรือนามสกุลที่มีช่องว่าง (คือไม่มีLiam De Rosaแต่Liam De-RosaหรือLiam De'Rosaมีความยุติธรรมเกม. ในคำอื่น ๆ [-'A-Za-z]+จะตรงกับชื่อ

ชื่อเต็มแต่ละชื่อจะไม่ซ้ำกัน (เช่นJohn Smithจะไม่ปรากฏสองครั้ง)

เอาท์พุต

พิมพ์ชื่อเต็ม (หนึ่งครั้งต่อบรรทัด) ตามด้วยhas two first namesหรือdefinitely has two first namesถ้าตรงตามเกณฑ์ข้างต้น ชื่อควรพิมพ์ครั้งเดียวเท่านั้น

ชื่อที่ไม่ใช่ชื่อสองชื่อไม่จำเป็นต้องพิมพ์

คุณต้องสงวนกรณีและอักขระพิเศษของชื่อ

ตัวอย่าง

อินพุต

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

เอาท์พุต

Riley Hudson definitely has two first names
Ryan Scott has two first names

อินพุต

Owen Parker
Daniel Hall
Cameron Hall
Sofia Watson
Mia Murphy
Ryan Jones
Emily Ramirez

เอาท์พุต

[no output]

อินพุต

Olivia Robinson
Jacob van-Dyke
Jacob Ella
Brayden De'Rosa
Levi Brook
Brook Bella
Ella Hill
Ella Anderson
Brook-Anne van-Dyke

เอาท์พุต

Jacob Ella definitely has two first names
Levi Brook has two first names

หมายเหตุและเกณฑ์การให้คะแนน

โชคดี!


ไม่Johnsonนับเป็นJohnหรือมันแตกต่างกันอย่างไร
NoOneIsHere

2
JohnsonJohnจะแตกต่างกันมากกว่า ชื่อต้องตรงกันทุกประการ
Moose

1
เราเลือกระหว่างdefinitely has two first namesและhas two first namesอย่างไร มันสามารถเป็นหนึ่งในนั้น?
Rod

แสดงต่อdefinitelyเมื่อชื่อเกิดขึ้นหลายครั้งในคอลัมน์ชื่อมากกว่าคอลัมน์สุดท้าย definitely has two first namesกรณีนี้แทนที่เพื่อให้แสดงเฉพาะ ลองดูตัวอย่าง
Moose

2
รูปแบบอินพุตมีความยืดหยุ่นเพียงใด มันสามารถเป็นชุดของสตริงได้หรือไม่ต่อหนึ่งคน? หรืออาร์เรย์ของสตริง 2D?
Luis Mendo

คำตอบ:


6

Java (OpenJDK 8) , 238 222 221 220 212 ไบต์

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");}}

ลองออนไลน์!


ดี! คุณสามารถยุบ initializations k=j=q=0ของคุณเพื่อ นอกจากนี้ก็จะไม่ได้ช่วยให้คุณประหยัดไบต์ใด ๆ แต่คุณสามารถแทนที่หลังด้วยx+=y?1:0 if(y)x++หากคุณต้องการเพิ่มประสิทธิภาพการอ่านหลังจากความยาวอย่างที่ฉันทำนั่นอาจเป็นหนทางไป
Jakob


6

Python 2 , 141 137 132 130 ไบต์

-2 ไบต์ขอบคุณ @JonathanFrech

n=map(str.split,input())
for f,l in n:
 c=cmp(*[x.count(l)for x in zip(*n)])
 if~c:print f,l,'definitely '*c+'has two first names'

ลองออนไลน์!


ฉันคิดว่า-c<1อาจเป็น~cเพราะcไม่ปรากฏว่าจะได้รับการบวก
Jonathan Frech





2

05AB1E, 144 ไบต์ (กำลังดำเนินการ)

|vy#Dθˆн})©gF®®NèQO¯®NèQO-D®¯NèQO¯¯NèQO-D.À>0›s>0›&i0›s0›&i®Nè" "¯Nè" defínítely has two fírst names"J,ë®Nè" "¯Nè" has two fírst names"J,}ë\\}}´

4
ไม่ได้ผลฉันแค่ทำงานเพื่อลดจำนวนไบต์
David Smith

2

05AB1E , 53 51 ไบต์

|UXv“€°‚•€ÛŒî“D„´Î ì)yð«ìõ¸ìXð¡øεy#θQO}`.S>sèˆ}¯õK»

ลองออนไลน์!

คำอธิบาย

|                                                       # Take inputs as array
 UX                                                     # Store in X and push X to stack
   v                                          }         # For each name, do
    “€°‚•€ÛŒî“D                                         #   Push "has two first names" twice
               „´Î ì                                    #   Prepend "definitely " to one of those
                    )yð«ì                               #   Wrap both strings in an array and prepend (name + " ") to each
                         õ¸ì                            #   Prepend " " to array
                            Xð¡øεy#θQO}`                #   Get occurences in input first and last names
                                        .S>             #   0 for not first name, 1 for first name and 2 for definitely first name
                                           sèˆ          #   Get string at that index and push to global array
                                               ¯õK»     # Output global array, 1 string per line

หรือ51 49 ไบต์สมมติว่ากฎ I / O มาตรฐาน (อินพุตและเอาต์พุตเป็นอาร์เรย์)

UXv“€°‚•€ÛŒî“D„´Î ì)yð«ìõ¸ìXð¡øεy#θQO}`.S>sèˆ}¯õK

ลองออนไลน์!


1

PHP, 172 ไบต์

for(;$s=$argv[++$i];$f[$a]++,$l[$n[]=$b]++)[$a,$b]=explode(" ",$s);for(;$b=$n[+$k++];)$f[$b]<$l[$b]||print$argv[$k].($f[$b]>$l[$b]?" definetly":"")." has two first names
";

ใช้ชื่อเป็นอาร์กิวเมนต์บรรทัดคำสั่งที่แยกต่างหาก

ทำงานด้วย-nrหรือลองออนไลน์


0

Python 3, 187 ไบต์

n={}
c=[]
while 1:
 try:a,b=input().split();n[a]=n.get(a,0)+1;n[b]=n.get(b,0)-1;c+=[[a,b]]
 except:[print(a,b,'definitely has two first names'[(n[b]>0)*11:])for a,b in c if n[b]>=0];break


0

JavaScript (ES6), 149 ไบต์

s=>s.replace(/(.*) (.*)\n/g,(_,t,u)=>g(`
${u} `)>1?t+` ${u}${v>g(` ${u}
`)?` definitely`:``} has two first names
`:``,g=u=>v=`
${s}`.split(u).length)

I / O รวมถึงการขึ้นบรรทัดใหม่ แรงบันดาลใจส่วนใหญ่มาจากคำตอบของ @ RobertoGraham



0

PowerShell, 176 ไบต์

$n=$args
$s=" has two first names"
$f=$n|%{$_.Split()[0]}
$l=$n|%{$_.Split()[1]}
$i=0
$l|%{switch(($f-match$_).count){{$_-eq1}{$n[$i]+$s}{$_-gt1}{$n[$i]+" definitely"+$s}}$i++}
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.