หนึ่งในเหตุผลที่ฉันรักโปเกมอนเสมอเพราะสำหรับเกมที่ดูง่าย ๆ มันมีความซับซ้อนหลายระดับ ลองมาดูท่าซ่อนเร้นพลัง ในเกมประเภทและพลัง (อย่างน้อยก่อน Generation VI) ของ Hidden Power นั้นแตกต่างกันไปสำหรับโปเกมอนทุกตัวที่ใช้มัน! มันเจ๋งใช่มั้ย ตอนนี้คุณจะแปลกใจไหมถ้าฉันบอกคุณว่าประเภทและพลังของ Hidden Power นั้นไม่ได้สร้างแบบสุ่ม?
ในเกมโปเกมอนทุกเกมโปเกมอนทั้งหมด (ไม่ใช่แค่เกมในปาร์ตี้ของคุณ POKEMON ทั้งหมด) มีจำนวนเต็มหกที่เก็บไว้ภายใน (หนึ่งสำหรับ HP stat หนึ่งสำหรับการโจมตีสถิติหนึ่งสำหรับการป้องกันสถิติหนึ่งสำหรับการโจมตีพิเศษสถิติ หนึ่งสำหรับสถิติการป้องกันพิเศษและหนึ่งสำหรับสถิติความเร็ว) เรียกว่าค่าของแต่ละบุคคลหรือ IV ค่าเหล่านี้มีค่าอยู่ระหว่าง 0 ถึง 31 และโดยพื้นฐานแล้วเป็นหนึ่งในปัจจัยสองสามอย่างที่มีผลต่อสถานะโดยรวมของโปเกมอน อย่างไรก็ตามพวกเขายังกำหนดประเภทและพลังของ Hidden Power!
ใน Generation III ถึง V (ยุคที่อัลกอริทึมที่เราจะนำไปใช้) ประเภทของพลังที่ซ่อนอยู่จะถูกกำหนดโดยสูตรต่อไปนี้ (จดวงเล็บพื้นซึ่งหมายความว่าคุณต้องปัดเศษผลลัพธ์):
โดยที่ a, b, c, d, e และ f เป็นบิตที่สำคัญน้อยที่สุดของ HP, Attack, Defense, Speed, Sp การโจมตีและ Sp Defense IVs ตามลำดับ (บิตที่สำคัญน้อยที่สุดคือ IV mod 2) จำนวนที่สร้างที่นี่จากนั้นสามารถแปลงเป็นประเภทจริงโดยใช้แผนภูมินี้:
0 Fighting
1 Flying
2 Poison
3 Ground
4 Rock
5 Bug
6 Ghost
7 Steel
8 Fire
9 Water
10 Grass
11 Electric
12 Psychic
13 Ice
14 Dragon
15 Dark
สำหรับการใช้พลังงานจะใช้สูตรที่คล้ายกัน:
อย่างไรก็ตามที่นี่, u, v, w, x, y และ z แสดงถึงบิตที่สำคัญน้อยที่สุดของ HP, Attack, Defense, Speed, Sp โจมตีและ Sp Defense IVs (ตามลำดับนั้นอีกครั้ง) (บิตที่มีนัยสำคัญน้อยที่สุดที่สองนั้นซับซ้อนกว่าและที่สำคัญน้อยที่สุดถ้า IV mod 4 เป็น 2 หรือ 3 ดังนั้นบิตคือ 1 มิฉะนั้นก็คือ 0 หากภาษาของคุณมีการติดตั้งภายในหรืออย่างน้อยก็ฉลาดกว่า หากต้องการทำสิ่งนี้คุณควรใช้มัน)
ความท้าทายที่นี่คือการเขียนโปรแกรมที่ใช้จำนวนเต็มหกจำนวนคั่นด้วยช่องว่างผ่าน STDIN ซึ่งเป็นตัวแทนของ HP, Attack, Defense, Speed, Sp โจมตีและ Sp Defense IV ของโปเกมอน (ตามลำดับ) และแสดงประเภทและพลังของ Hidden Power ของโปเกมอนนั้น
ตัวอย่างอินพุต:
30 31 31 31 30 31
ตัวอย่างผลลัพธ์:
Grass 70
ตัวอย่างอินพุต:
16 18 25 13 30 22
ตัวอย่างผลลัพธ์:
Poison 61
นี่คือรหัส - กอล์ฟดังนั้นรหัสที่สั้นที่สุดจึงชนะ โชคดี!
(และก่อนที่ผู้คนจะถามฉันใช้อัลกอริธึม Generation V ที่นี่เพราะ Generation VI กำจัดการสุ่มพลังงานและทำให้เป็น 60 เสมอไม่เพียง แต่ฉันคิดว่านี่เป็นง่อยอย่างไม่น่าเชื่อฉันคิดว่ามันเป็นการท้าทายที่น่าสนใจมาก สำหรับจุดประสงค์ของการท้าทายเรากำลังใช้งานเกม Gen V)