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.