Jenis Pokemon Paling Tahan Lama

9

Latar Belakang

Pertanyaan ini mirip dengan yang ini . Saya telah memberikan semua informasi yang dibutuhkan di bawah ini. Jika Anda terbiasa dengan tantangan lain maka catat bahwa kami memberi peringkat semua pertahanan alih-alih melihat efektivitas serangan tunggal. Ini penting karena itu berarti bahwa tabel adalah kebalikan dari satu sama lain dan tujuan dari tantangan ini adalah tanpa masukan pengguna.

Di Pokemon ada 18 jenis:

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

Pokemon memiliki satu atau dua tipe unik yang mendefinisikannya ("kombinasi tipe"). Misalnya, Bulbasaur memiliki kombinasi jenis Rumput / Racun (memiliki dua jenis, Rumput dan Racun) dan Charmander memiliki kombinasi tipe Api (hanya memiliki satu jenis). Urutan jenis tidak masalah (yaitu Rumput / Racun sama dengan Racun / Rumput).

Semua tipe ini memiliki kekuatan dan kelemahan:

  • Suatu tipe bisa menjadi lemah untuk tipe yang lain. Api lemah terhadap Air. Ini menghasilkan Api yang memiliki pengali 2 × terhadap Air.
  • Suatu tipe bisa tahan terhadap tipe yang lain. Air tahan terhadap Air. Ini menghasilkan Air yang memiliki pengali 0,5 × terhadap Air.
  • Suatu tipe dapat kebal terhadap tipe lain. Terbang kebal terhadap Ground. Ini menyebabkan Flying memiliki pengali 0 × terhadap Ground.

Yang lainnya menerima pengali 1 × standar. Normal terhadap Normal akan menghasilkan pengali 1 × adalah contohnya. Kekuatan dan kelemahan ini dapat diperparah atau dinegasikan juga. Sebagai contoh, Api lemah untuk Air tetapi api / Water tipe ganda akan memiliki 1 × pengganda terhadap Air karena kelemahan dari Api akan meniadakan resistensi dari Air. Untuk tabel lengkap dan penjelasan lebih lanjut, lihat di bawah.

Objektif

Tujuannya di sini adalah untuk menampilkan daftar semua kombinasi jenis, diurutkan dalam urutan kemampuan defensif mereka, dan daftar jumlah mereka (resistensi + kekebalan), kelemahan, dan rasio di antara mereka. Secara khusus, urutan pengurutan adalah sebagai berikut: kombinasi jenis dengan rasio terbaik (resistensi + kekebalan) terhadap kelemahan terdaftar terlebih dahulu, dan jika ada seri, kombinasi jenis dengan resistensi paling banyak dan kekebalan akan memenangkan tiebreak. Anda dapat membuat daftar ini melalui cara apa pun (metode yang jelas adalah melakukan perhitungan keefektifan jenis terhadap setiap kombinasi jenis, tetapi Anda diizinkan untuk menyimpan hasil yang dihitung atau sebagian yang telah dihitung sebelumnya dalam program Anda jika hal itu membuatnya lebih pendek.)

Ketik tabel efektivitas

Untuk tabel yang dapat dibaca manusia, lihat basis data Pokemon. Catatan: kolom daftar ini adalah apa yang kami pertimbangkan. Tapi untuk berjaga-jaga, inilah tabel yang saya pikirkan dalam matriks efektivitas ramah komputer yang terkompresi. Saya telah mengalikan setiap nilai dengan 2 sehingga kami tidak harus berurusan dengan desimal sial:

           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

Contoh

Jika masalah ini hanya meminta output untuk kombinasi tipe tunggal, maka output yang valid akan terlihat seperti ini:

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

Namun, program Anda juga perlu mencantumkan semua kombinasi tipe ganda dalam output, sehingga outputnya akan jauh lebih lama.

Semoga berhasil! Kode terpendek dalam byte menang.

Devin White
sumber
2
Terkait
Martin Ender
3
Dan selamat datang di PPCG! :)
Martin Ender
1
Saya pikir ini memiliki masalah yang jelas bahwa jawabannya lebih kecil dari data yang dibutuhkan untuk menyelesaikan pertanyaan, dan dengan demikian solusi yang menang hanya akan membuat hardcode output. Untuk mengatasi masalah ini, Anda mungkin perlu mengubah tantangan untuk mengambil matriks efektivitas jenis sebagai input pada saat runtime.
@ ais523 Saya percaya mengompresi matriks seharusnya menjadi inti dari tantangan, dan pada prinsipnya saya tidak melihat ada yang salah dengan itu (walaupun dalam kasus ini, sayangnya, tabel yang tepat ini telah menjadi subjek tantangan sebelumnya).
Martin Ender
2
@ MartinEnder Ini lebih dari terkait ... Jika Anda melihat pengantar itu 100% disalin dan kemudian diubah agar tidak terlihat seperti disalin. Ini mengikuti struktur yang sama persis, tipe awal berada dalam urutan yang sama, diformat sama. Itu hanya menjiplak secara terang-terangan tanpa menyebutkannya dan berusaha menyembunyikannya.
orlp

Jawaban:

2

Python 2, 784 byte

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

Output:

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
TFeld
sumber
Luar biasa. Tepat seperti yang saya inginkan. Terima kasih sobat!
Devin White