ประเภทโปเกมอนที่ทนทานที่สุด


9

พื้นหลัง

คำถามนี้จะคล้ายกับคนนี้ ฉันได้ให้ข้อมูลทั้งหมดที่จำเป็นด้านล่าง หากคุณคุ้นเคยกับความท้าทายอื่น ๆ โปรดทราบว่าเราจัดอันดับการป้องกันทั้งหมดแทนที่จะดูประสิทธิภาพของการโจมตีเพียงครั้งเดียว สิ่งนี้สำคัญเนื่องจากหมายความว่าตารางเป็นผกผันซึ่งกันและกันและเป้าหมายของการท้าทายนี้คือต้องไม่มีผู้ใช้ป้อนข้อมูล

ในโปเกมอนมีทั้งหมด 18 ชนิด:

Normal    Fighting  Flying  Poison  Ground  Rock
Bug       Ghost     Steel   Fire    Water   Grass
Electric  Psychic   Ice     Dragon  Dark    Fairy

โปเกมอนมีประเภทที่ไม่ซ้ำกันหนึ่งหรือสองอย่างที่กำหนดไว้ ("การรวมประเภท") ตัวอย่างเช่น Bulbasaur มีการผสมผสานประเภท Grass / Poison (มีสองประเภทคือ Grass และ Poison) และ Charmander มีการรวมประเภท Fire (มีเพียงหนึ่งประเภท) ลำดับของประเภทไม่สำคัญ (เช่นหญ้า / พิษเหมือนกันกับพิษ / หญ้า)

ประเภทเหล่านี้ล้วนมีจุดแข็งและจุดอ่อน:

  • ประเภทอาจอ่อนแอต่อประเภทอื่น ไฟอ่อนต่อน้ำ ส่งผลให้เกิดเพลิงไหม้โดยเพิ่มทวีคูณเป็น 2 เท่าเมื่อเทียบกับน้ำ
  • ประเภทสามารถทนต่อประเภทอื่น น้ำทนต่อน้ำ ส่งผลให้น้ำมี 0.5 เท่าคูณกับน้ำ
  • ประเภทสามารถภูมิคุ้มกันต่อประเภทอื่น การบินเป็นภูมิคุ้มกันต่อพื้นดิน สิ่งนี้ส่งผลให้ Flying มีตัวคูณ 0 ×เทียบกับกราวด์

สิ่งใดก็ได้รับตัวคูณ 1 ×มาตรฐาน ปกติกับปกติจะส่งผลให้ตัวคูณ 1 ×เป็นตัวอย่างของสิ่งนี้ จุดแข็งและจุดอ่อนเหล่านี้สามารถทบต้นหรือคัดค้านได้เช่นกัน ตัวอย่างเช่นไฟจะอ่อนแอต่อน้ำ แต่ไฟ / น้ำสองประเภทจะมีตัวคูณ 1 ต่อน้ำตั้งแต่จุดอ่อนจากไฟจะลบความต้านทานจากน้ำ สำหรับตารางเต็มและคำอธิบายเพิ่มเติมดูด้านล่าง

วัตถุประสงค์

เป้าหมายที่นี่คือการส่งออกรายการชุดค่าผสมทุกประเภทเรียงตามลำดับความสามารถในการป้องกันและรายการหมายเลข (ความต้านทาน + ภูมิต้านทาน) จุดอ่อนและอัตราส่วนระหว่างสิ่งเหล่านี้ โดยเฉพาะอย่างยิ่งลำดับการเรียงจะเป็นดังนี้: การผสมประเภทที่มีอัตราส่วนที่ดีที่สุดของ (ความต้านทาน + ภูมิคุ้มกัน) ต่อความอ่อนแอมีการระบุไว้เป็นอันดับแรกและหากมีการเสมอกันการผสมประเภทที่มีความต้านทานและภูมิคุ้มกันมากที่สุดจะชนะการเบรค คุณสามารถสร้างรายการนี้ได้ด้วยวิธีการใด ๆ (วิธีที่ชัดเจนคือการคำนวณประสิทธิภาพการพิมพ์กับชุดค่าผสมแต่ละประเภท แต่คุณได้รับอนุญาตให้เก็บเอาต์พุตที่คำนวณล่วงหน้าหรือคำนวณล่วงหน้าบางส่วนในโปรแกรมของคุณหากทำเช่นนี้จะทำให้สั้นลง)

พิมพ์ตารางประสิทธิผล

สำหรับตารางที่มนุษย์อ่านได้ให้ดูฐานข้อมูลโปเกมอน หมายเหตุ: คอลัมน์ของรายการนี้คือสิ่งที่เรากำลังพิจารณา แต่ในกรณีนี้นี่คือตารางที่ฉันนึกถึงในเมทริกซ์ประสิทธิภาพที่เป็นมิตรกับคอมพิวเตอร์ที่ถูกบีบอัด ฉันคูณทุกค่าด้วย 2 เราจึงไม่ต้องจัดการกับทศนิยมที่น่ารำคาญ:

           Attacking type
            (same order)
   Nor   222222422222202222
   Fir   214211224221422211 
D  Wat   211441222222222212
e  Ele   222122224122222212
f  Gra   241114241424222222
e  Ice   242221422222422242 
n  Fig   222222222441122124  
d  Poi   222212114241222221
i  Gro   224044212222122222 
n  Fly   222414120221422222  
g  Psy   222222122214242422 
   Bug   242212121422422222 
T  Roc   114242414122222242
y  Gho   022222012221242422
p  Dra   211114222222224224   
e  Dar   222222422204212124
   Ste   142211404111121211  
   Fai   222222142221220142

ตัวอย่าง

หากปัญหานี้มีการร้องขอเอาท์พุทสำหรับชุดค่าผสมชนิดเดียวเท่านั้นผลลัพธ์ที่ถูกต้องจะมีลักษณะดังนี้:

Steel -> 11/3 = 3.66
Electric -> 3/1 = 3
Poison -> 5/2 = 2.5
Fire -> 6/3 = 2
Water -> 4/2 = 2
Ghost -> 4/2 = 2
Fairy -> 4/2 = 2
Fly -> 4/3 = 1.333
Dragon -> 4/3 = 1.333
Fighting -> 3/3 = 1
Normal -> 1/1 = 1
Ground -> 3/3 = 1
Psychic -> 2/2 = 1
Bug -> 3/3 = 1
Dark -> 3/3 = 1
Grass -> 4/5 = 0.8
Rock -> 4/5 = 0.8
Ice -> 1/4 = 0.25

อย่างไรก็ตามโปรแกรมของคุณจะต้องแสดงรายการชุดค่าผสมสองชนิดทั้งหมดในเอาต์พุตดังนั้นเอาต์พุตของมันจะยาวขึ้นอย่างมาก

ขอให้โชคดี! รหัสที่สั้นที่สุดเป็นไบต์ชนะ



3
และยินดีต้อนรับสู่ PPCG! :)
Martin Ender

1
ฉันคิดว่านี่เป็นปัญหาที่เห็นได้ชัดว่าคำตอบนั้นมีขนาดเล็กกว่าข้อมูลที่จำเป็นสำหรับการแก้ปัญหาดังนั้นการแก้ปัญหาที่ชนะจะทำให้รหัสออกยากขึ้น เพื่อแก้ไขปัญหาคุณอาจต้องเปลี่ยนความท้าทายเพื่อใช้เมทริกซ์ประสิทธิผลประเภทเป็นอินพุตที่รันไทม์

@ ais523 ฉันเชื่อว่าการบีบอัดเมทริกซ์น่าจะเป็นแกนหลักของความท้าทายและในหลักการฉันเห็นว่าไม่มีอะไรผิดปกติ (แม้ว่าในกรณีนี้โชคไม่ดีที่ตารางที่แน่นอนนี้เป็นเรื่องที่ท้าทายมาก่อน)
Martin Ender

2
@ มาร์ตินเอนเดอร์มันเกี่ยวข้องมากกว่า ... ถ้าคุณแนะนำมากกว่านี้มันถูกคัดลอก 100% แล้วเปลี่ยนเป็นไม่คัดลอกเลย มันเป็นไปตามโครงสร้างเดียวกันที่แน่นอนประเภทเริ่มต้นอยู่ในลำดับเดียวกันจัดรูปแบบเดียวกัน มันเป็นเพียงการลอกเลียนแบบโดยไม่เอ่ยถึงและพยายามซ่อนมันไว้
orlp

คำตอบ:


2

Python 2, 784 ไบต์

i=['Normal','222222422222202222'],['Fire','214211224221422211'],['Water','211441222222222212'],['Electric','222122224122222212'],['Grass','241114241424222222'],['Ice','242221422222422242'],['Fighting','222222222441122124'],['Poison','222212114241222221'],['Ground','224044212222122222'],['Flying','222414120221422222'],['Psychic','222222122214242422'],['Bug','242212121422422222'],['Rock','114242414122222242'],['Ghost','022222012221242422'],['Dragon','211114222222224224'],['Dark','222222422204212124'],['Steel','142211404111121211'],['Fairy','222222142221220142']
L=[]
for x,X in i:
 for y,Y in i[i.index([x,X]):]:
  S=W=0.
  for a,b in zip(X,Y):A=int(a)*int(b);W+=A>4;S+=A<4
  L+=[([x+'/'+y,x][x==y]+' -> %d/%d'%(S,W),S/W)]
for l in sorted(L, key=lambda l:-l[1]):print'%s = %.2f'%l

ขาออก:

Bug/Steel -> 9/1 = 9.00
Steel/Fairy -> 11/2 = 5.50
Normal/Ghost -> 5/1 = 5.00
Water/Ground -> 5/1 = 5.00
Grass/Steel -> 10/2 = 5.00
Poison/Dark -> 5/1 = 5.00
Poison/Steel -> 10/2 = 5.00
Flying/Steel -> 10/2 = 5.00
Dragon/Steel -> 10/2 = 5.00
Normal/Steel -> 12/3 = 4.00
Electric/Poison -> 8/2 = 4.00
Electric/Steel -> 12/3 = 4.00
Ghost/Dark -> 4/1 = 4.00
Water/Steel -> 11/3 = 3.67
Dark/Steel -> 11/3 = 3.67
Steel -> 11/3 = 3.67
Fire/Steel -> 10/3 = 3.33
Fire/Ground -> 6/2 = 3.00
Water/Flying -> 6/2 = 3.00
Electric -> 3/1 = 3.00
Electric/Flying -> 6/2 = 3.00
Electric/Fairy -> 6/2 = 3.00
Ice/Steel -> 9/3 = 3.00
Fighting/Steel -> 9/3 = 3.00
Rock/Steel -> 9/3 = 3.00
Ghost/Steel -> 12/4 = 3.00
Fire/Electric -> 8/3 = 2.67
Water/Poison -> 8/3 = 2.67
Normal/Poison -> 5/2 = 2.50
Water/Electric -> 5/2 = 2.50
Poison -> 5/2 = 2.50
Ground/Flying -> 5/2 = 2.50
Ground/Steel -> 10/4 = 2.50
Psychic/Steel -> 10/4 = 2.50
Fire/Flying -> 7/3 = 2.33
Water/Fairy -> 7/3 = 2.33
Electric/Ghost -> 7/3 = 2.33
Normal/Electric -> 4/2 = 2.00
Normal/Fairy -> 4/2 = 2.00
Fire -> 6/3 = 2.00
Fire/Poison -> 8/4 = 2.00
Fire/Bug -> 6/3 = 2.00
Fire/Fairy -> 8/4 = 2.00
Water -> 4/2 = 2.00
Water/Ghost -> 8/4 = 2.00
Electric/Bug -> 4/2 = 2.00
Fighting/Poison -> 6/3 = 2.00
Poison/Fairy -> 6/3 = 2.00
Psychic/Ghost -> 4/2 = 2.00
Ghost -> 4/2 = 2.00
Ghost/Fairy -> 4/2 = 2.00
Dragon/Fairy -> 8/4 = 2.00
Fairy -> 4/2 = 2.00
Fire/Ghost -> 9/5 = 1.80
Normal/Fire -> 7/4 = 1.75
Fire/Rock -> 7/4 = 1.75
Fire/Dark -> 7/4 = 1.75
Poison/Dragon -> 7/4 = 1.75
Normal/Water -> 5/3 = 1.67
Fire/Water -> 5/3 = 1.67
Fire/Dragon -> 5/3 = 1.67
Water/Bug -> 5/3 = 1.67
Electric/Fighting -> 5/3 = 1.67
Ghost/Dragon -> 8/5 = 1.60
Fire/Fighting -> 6/4 = 1.50
Water/Dragon -> 3/2 = 1.50
Electric/Dragon -> 6/4 = 1.50
Electric/Dark -> 6/4 = 1.50
Poison/Ground -> 6/4 = 1.50
Poison/Flying -> 6/4 = 1.50
Poison/Rock -> 6/4 = 1.50
Poison/Ghost -> 6/4 = 1.50
Ground/Fairy -> 6/4 = 1.50
Flying/Dragon -> 6/4 = 1.50
Rock/Fairy -> 6/4 = 1.50
Fire/Psychic -> 7/5 = 1.40
Water/Fighting -> 7/5 = 1.40
Water/Dark -> 7/5 = 1.40
Grass/Fairy -> 7/5 = 1.40
Fighting/Dragon -> 7/5 = 1.40
Dragon/Dark -> 7/5 = 1.40
Normal/Flying -> 4/3 = 1.33
Fire/Grass -> 4/3 = 1.33
Fighting/Dark -> 4/3 = 1.33
Poison/Psychic -> 4/3 = 1.33
Ground/Dragon -> 4/3 = 1.33
Flying -> 4/3 = 1.33
Dragon -> 4/3 = 1.33
Dark/Fairy -> 4/3 = 1.33
Normal/Dragon -> 5/4 = 1.25
Water/Rock -> 5/4 = 1.25
Electric/Ground -> 5/4 = 1.25
Electric/Psychic -> 5/4 = 1.25
Electric/Rock -> 5/4 = 1.25
Grass/Poison -> 5/4 = 1.25
Fighting/Bug -> 5/4 = 1.25
Fighting/Ghost -> 5/4 = 1.25
Poison/Bug -> 5/4 = 1.25
Flying/Dark -> 5/4 = 1.25
Water/Psychic -> 6/5 = 1.20
Grass/Ghost -> 6/5 = 1.20
Ground/Ghost -> 6/5 = 1.20
Flying/Rock -> 6/5 = 1.20
Flying/Ghost -> 6/5 = 1.20
Flying/Fairy -> 6/5 = 1.20
Bug/Ghost -> 6/5 = 1.20
Bug/Fairy -> 6/5 = 1.20
Normal -> 1/1 = 1.00
Normal/Fighting -> 4/4 = 1.00
Normal/Ground -> 4/4 = 1.00
Normal/Psychic -> 2/2 = 1.00
Normal/Bug -> 3/3 = 1.00
Normal/Rock -> 5/5 = 1.00
Normal/Dark -> 3/3 = 1.00
Fire/Ice -> 4/4 = 1.00
Water/Grass -> 3/3 = 1.00
Electric/Grass -> 4/4 = 1.00
Grass/Fighting -> 6/6 = 1.00
Grass/Dark -> 7/7 = 1.00
Ice/Poison -> 5/5 = 1.00
Ice/Ghost -> 5/5 = 1.00
Ice/Fairy -> 4/4 = 1.00
Fighting -> 3/3 = 1.00
Fighting/Flying -> 5/5 = 1.00
Fighting/Fairy -> 5/5 = 1.00
Ground -> 3/3 = 1.00
Ground/Bug -> 4/4 = 1.00
Ground/Rock -> 6/6 = 1.00
Ground/Dark -> 6/6 = 1.00
Psychic/Dragon -> 6/6 = 1.00
Psychic/Fairy -> 3/3 = 1.00
Bug -> 3/3 = 1.00
Bug/Dragon -> 5/5 = 1.00
Bug/Dark -> 5/5 = 1.00
Rock/Ghost -> 6/6 = 1.00
Rock/Dark -> 7/7 = 1.00
Dark -> 3/3 = 1.00
Grass/Psychic -> 6/7 = 0.86
Fighting/Rock -> 6/7 = 0.86
Normal/Grass -> 5/6 = 0.83
Grass/Bug -> 5/6 = 0.83
Fighting/Ground -> 5/6 = 0.83
Ground/Psychic -> 5/6 = 0.83
Rock/Dragon -> 5/6 = 0.83
Grass -> 4/5 = 0.80
Grass/Flying -> 4/5 = 0.80
Flying/Psychic -> 4/5 = 0.80
Flying/Bug -> 4/5 = 0.80
Rock -> 4/5 = 0.80
Electric/Ice -> 3/4 = 0.75
Grass/Ground -> 3/4 = 0.75
Ice/Flying -> 3/4 = 0.75
Ice/Bug -> 3/4 = 0.75
Psychic/Rock -> 5/7 = 0.71
Grass/Dragon -> 4/6 = 0.67
Ice/Rock -> 4/6 = 0.67
Ice/Dark -> 4/6 = 0.67
Fighting/Psychic -> 2/3 = 0.67
Psychic -> 2/3 = 0.67
Psychic/Bug -> 4/6 = 0.67
Bug/Rock -> 2/3 = 0.67
Ice/Dragon -> 3/5 = 0.60
Grass/Ice -> 4/7 = 0.57
Normal/Ice -> 2/4 = 0.50
Water/Ice -> 2/4 = 0.50
Grass/Rock -> 2/4 = 0.50
Ice/Fighting -> 3/6 = 0.50
Psychic/Dark -> 1/2 = 0.50
Ice/Ground -> 2/5 = 0.40
Ice/Psychic -> 2/6 = 0.33
Ice -> 1/4 = 0.25

น่ากลัว สิ่งที่ฉันต้องการ ขอบคุณเพื่อน!
Devin White
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.