ให้กำหนดกระบวนการในการบดขยี้อาร์เรย์ของตัวเลข ในความสนใจเราอ่านอาร์เรย์จากซ้ายไปขวา หาก ณ จุดที่เราพบสององค์ประกอบเดียวกันในแถวที่เราลบหนึ่งและสองครั้งที่สอง ตัวอย่างเช่นที่นี่เป็นกระบวนการของการบดขยี้อาร์เรย์ต่อไปนี้
[5,2,2,3]
^
[5,2,2,3]
^
[5,2,2,3]
^
[5,4,3]
^
[5,4,3]
^
ยกตัวอย่างเช่นองค์ประกอบเดียวกันสามารถยุบได้หลายครั้ง [1,1,2]
กลายเป็น[4]
เมื่อบด
เราจะเรียกใช้อาร์เรย์ที่ไม่สามารถย่อยสลายได้เมื่อกระบวนการบดอัดอาร์เรย์นั้นไม่เปลี่ยนแปลง ตัวอย่างเช่น[1,2,3]
ยัง[1,2,3]
หลังจากถูกบด
งานของคุณคือการใช้อาร์เรย์และกำหนดจำนวนของทับที่จำเป็นในการทำให้ไม่สามารถย่อยสลายได้ คุณต้องรองรับเฉพาะจำนวนเต็มในช่วง0ถึง2 32 -1
นี่คือ code-golfดังนั้นคำตอบจะได้คะแนนเป็นไบต์โดยไบต์น้อยจะดีขึ้น
กรณีทดสอบ
[1] -> 0
[1,1] -> 1
[2,1,1] -> 2
[4,2,1,1] -> 3
[2,2,2,1,1] -> 3
[0,0,0,0] -> 1
[4,0,0,0,4] -> 1
[4,0,0,0,0,4] -> 1
[] -> 0
0,0,0,0
1
มันอาจเป็นความคิดที่จะพูดถึงที่อื่นอย่างชัดเจนว่าเรากำลังนับจำนวนครั้งที่เราต้องวนรอบอาร์เรย์เพื่อบดขยี้มันอย่างเต็มที่และไม่ใช่อย่างที่ฉันคิดไว้ในตอนแรก
[1,1,2,4,8]
ส่งคืน 1 หรือ 4 หรือไม่