En Dayanıklı Pokemon Çeşitleri


9

Arka fon

Bu soru benzer bu bir . Aşağıda gerekli tüm bilgileri sağladım. Diğer mücadeleye aşina iseniz, tek bir saldırının etkinliğini görmek yerine tüm savunmaları sıraladığımızı unutmayın. Bu önemlidir, çünkü tabloların birbirinin tersi olduğu ve bu zorluğun amacı kullanıcı girdisi olmadan olmaktır.

Pokemon'da 18 tip vardır:

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

Pokemon, onları tanımlayan bir veya iki benzersiz türe sahiptir ("tip kombinasyonu"). Örneğin, bir Bulbasaur çim / Zehir tip kombinasyonuna sahiptir (Çim ve Zehir iki tiptir) ve Charmander Yangın tip kombinasyonuna sahiptir (sadece bir tip). Türlerin sırası önemli değildir (yani Çim / Zehir, Zehir / Çim ile aynıdır).

Bu türlerin hepsinin güçlü ve zayıf yönleri vardır:

  • Bir tür, başka bir türe zayıf olabilir. Ateş suya karşı zayıftır. Bu, Yangının Suya karşı 2 kat çarpanı ile sonuçlanır.
  • Bir tür, başka bir türe dayanıklı olabilir. Su suya dayanıklıdır. Bu, suya karşı 0,5 × çarpanına sahip Su ile sonuçlanır.
  • Bir tip, başka bir tipe bağışık olabilir. Uçmak, Yere bağışıktır. Bu, Uçmanın Yere karşı 0 × çarpanına sahip olmasıyla sonuçlanır.

Başka herhangi bir şey standart 1 × çarpan alır. Normal, Normal'e karşı 1 × çarpanı ile sonuçlanır bunun bir örneğidir. Bu güçlü ve zayıf yönler de bileşik veya olumsuzlanabilir. Örneğin, Ateş Su'ya karşı zayıftır, ancak Ateş / Su ikili tipinin Suya karşı 1 kat çarpanı olacaktır, çünkü Ateşten gelen zayıflık Sudan gelen direnci olumsuz etkileyecektir. Tam bir tablo ve daha fazla açıklama için aşağıya bakın.

Amaç

Buradaki amaç, savunma yeteneklerine göre sıralanan her türlü kombinasyonun bir listesini çıkarmak ve sayılarını (dirençler + bağışıklıklar), zayıflıklarını ve bunlar arasındaki oranı listelemek. Özellikle, sıralama düzeni şu şekildedir: ilk önce (dirençler + bağışıklıklar) zayıflıklara en iyi orana sahip tip kombinasyonları listelenir ve bir kravat varsa, en fazla direnç ve bağışıklığa sahip tip kombinasyonları tiebreak kazanır. Bu listeyi herhangi bir yolla üretebilirsiniz (bariz bir yöntem, her tür kombinasyonuna karşı bir tür etkinlik hesaplaması yapmaktır, ancak bunu yaparsanız programınızda önceden hesaplanmış veya kısmen önceden hesaplanmış çıktıları depolamanıza izin verilir.)

Tip etkililik tablosu

Okunabilir bir tablo için Pokemon veritabanına bakın. Not: Bu listenin sütunları bizim düşündüğümüz şeydir. Ama her ihtimale karşı, sıkıştırılmış bilgisayar dostu bir etkinlik matrisinde düşündüğüm tablo. Her değeri 2 ile çarptım, bu yüzden sinir bozucu ondalıklarla uğraşmak zorunda değiliz:

           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

Misal

Bu sorun yalnızca tek tip tip kombinasyonlar için çıktı talep etseydi, geçerli bir çıktı şöyle görünür:

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

Bununla birlikte, programınızın çıktıdaki tüm çift tip kombinasyonlarını listelemesi gerekir, böylece çıktısı oldukça uzun olacaktır.

İyi şanslar! Bayt cinsinden en kısa kod kazanır.



3
Ve PPCG'ye hoş geldiniz! :)
Martin Ender

1
Bunun sorunun cevabı soruyu çözmek için gereken verilerden daha küçük olduğu açık bir sorunu olduğunu düşünüyorum ve bu nedenle kazanan bir çözüm sadece çıktıyı sabit kodlayacaktır. Sorunu çözmek için, muhtemelen tür etkililik matrisini çalışma zamanında girdi olarak almak için zorluğu değiştirmeniz gerekir.

@ ais523 Matrisin sıkıştırılmasının zorluğun çekirdeği olması gerektiğine inanıyorum ve prensipte bununla ilgili yanlış bir şey görmüyorum (bu durumda ne yazık ki, bu kesin tablo daha önce bir zorluğun konusu oldu).
Martin Ender

2
@MartinEnder İlgili olmaktan daha fazlası ... Eğer tanıtımın üzerine giderseniz,% 100 kopyalanır ve kopyalanmış gibi görünmeyecek şekilde değiştirilir. Tam olarak aynı yapıyı izler, başlangıç ​​türleri aynı sırada, aynı şekilde biçimlendirilir. Bahsetmeden ve saklamaya çalışırken açık bir intihal.
orlp

Yanıtlar:


2

Python 2, 784 bayt

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

Çıktılar:

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

Muhteşem. Tam olarak ne istediğimi. Teşekkürler dostum!
Devin White
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.