เมื่อเราเรียนรู้จากหมายเลขศักดิ์สิทธิ์มีตัวเลขศักดิ์สิทธิ์ 5 หลัก ( 0, 4, 6, 8, 9
) และจำนวนเต็มบวกซึ่งประกอบด้วยตัวเลขเหล่านั้นล้วนเป็นศักดิ์สิทธิ์ นอกจากนี้ความศักดิ์สิทธิ์ของตัวเลขคือผลรวมของหลุมในจำนวน ( +2
สำหรับทุกคน0
หรือ8
และ+1
อื่น ๆ )
ขณะนี้มีทรัพย์สินเพิ่มเติมที่ต้องคำนึงถึงเพื่อแสดงถึงความบริสุทธิ์ของตัวเลขอย่างแท้จริงและถูกต้อง คุณเห็นไม่ใช่แค่จำนวนของรูในหลักที่สำคัญ แต่ยังรวมถึงตำแหน่งที่มันเกิดขึ้นด้วย
88
พิจารณาจำนวน 4
โดยกฎเดิมของเราก็จะมีความศักดิ์สิทธิ์ของ แต่นั่นไม่ค่อยยุติธรรม! 8
ด้านซ้ายจะทำงานมากขึ้นกว่าที่อื่น ๆ8
- 10 ครั้งการทำงาน! ควรได้รับรางวัลสำหรับการทำงาน เราจะให้รางวัลกับความบริสุทธิ์พิเศษเท่ากับจำนวนความศักดิ์สิทธิ์ทั้งหมดของตัวเลขทางด้านขวา (รวมถึงคะแนนความบริสุทธิ์พิเศษที่ได้รับจากกฎนี้เป็นตัวเลขทางด้านขวา) ลบ 1
นี่คือตัวอย่างเพิ่มเติมที่ต้องพิจารณา:
Number: 8080
Digital holiness: (2 + 7 - 1) + (2 + 3 - 1) + (2 + 1 - 1) + (2 + 0 - 1)
Total holiness: 15
Number: 68904
Digital holiness: (1 + 5 - 1) + (2 + 2 - 1) + (1 + 1 - 1) + (2 + 0 - 1) + (1 + 0 - 1)
Total holiness: 10
ตัวเลขทั้งหมดได้รับการตอบแทนอย่างเหมาะสมสำหรับงานของพวกเขาด้วยความศักดิ์สิทธิ์พิเศษและทั้งหมดนั้นก็ดี เราจะเรียกคุณสมบัตินี้ว่า
ในภาษาไพ ธ อนที่ยิ่งใหญ่อัลกอริทึมสำหรับการคำนวณไฮเทคที่ปรับปรุงแล้วอาจมีลักษณะดังนี้:
# assumes n is a holy number
def enhanced_holarity(n):
if n < 10:
return 1 if n in [0, 8] else 0
else:
digits = list(map(int,str(n)[::-1]))
res = []
for i,x in enumerate(digits):
res.append(enhanced_holarity(x))
if i > 0:
res[i] += sum(res[:i])
return sum(res)
ความท้าทาย
รับจำนวนเต็มn > 0
ส่งออกn
หมายเลขศักดิ์สิทธิ์แรกเรียงตามการเพิ่มขึ้นของ holarity โดยใช้ค่าตัวเลขเป็น tiebreaker คุณอาจสมมติว่าอินพุตและเอาต์พุตจะไม่มากกว่าจำนวนเต็มที่แทนค่าสูงสุดในภาษาของคุณหรือ2^64 - 1
แล้วแต่จำนวนใดจะน้อยกว่า
สำหรับการอ้างอิงนี่คือตัวอย่างทดสอบ (อินพุต, ตามด้วยเอาต์พุต):
25
4, 6, 9, 44, 46, 49, 64, 66, 69, 94, 96, 99, 0, 8, 84, 86, 89, 40, 48, 60, 68, 90, 98, 80, 88
100
4, 6, 9, 44, 46, 49, 64, 66, 69, 94, 96, 99, 444, 446, 449, 464, 466, 469, 494, 496, 499, 644, 646, 649, 664, 666, 669, 694, 696, 699, 0, 8, 84, 86, 89, 844, 846, 849, 864, 866, 869, 894, 896, 899, 40, 48, 60, 68, 90, 98, 404, 406, 409, 484, 486, 489, 604, 606, 609, 684, 686, 689, 80, 88, 804, 806, 809, 884, 886, 889, 440, 448, 460, 468, 490, 498, 640, 648, 660, 668, 690, 698, 840, 848, 860, 868, 890, 898, 400, 408, 480, 488, 600, 608, 680, 688, 800, 808, 880, 888
200
4, 6, 9, 44, 46, 49, 64, 66, 69, 94, 96, 99, 444, 446, 449, 464, 466, 469, 494, 496, 499, 644, 646, 649, 664, 666, 669, 694, 696, 699, 944, 946, 949, 964, 966, 969, 994, 996, 999, 4444, 4446, 4449, 4464, 4466, 4469, 4494, 4496, 4499, 4644, 4646, 4649, 4664, 4666, 4669, 4694, 4696, 4699, 0, 8, 84, 86, 89, 844, 846, 849, 864, 866, 869, 894, 896, 899, 40, 48, 60, 68, 90, 98, 404, 406, 409, 484, 486, 489, 604, 606, 609, 684, 686, 689, 904, 906, 909, 984, 986, 989, 4044, 4046, 4049, 4064, 4066, 4069, 4094, 4096, 4099, 80, 88, 804, 806, 809, 884, 886, 889, 440, 448, 460, 468, 490, 498, 640, 648, 660, 668, 690, 698, 940, 948, 960, 968, 990, 998, 4404, 4406, 4409, 4484, 4486, 4489, 4604, 4606, 4609, 4684, 4686, 4689, 840, 848, 860, 868, 890, 898, 400, 408, 480, 488, 600, 608, 680, 688, 900, 908, 980, 988, 4004, 4006, 4009, 4084, 4086, 4089, 800, 808, 880, 888, 4440, 4448, 4460, 4468, 4490, 4498, 4640, 4648, 4660, 4668, 4690, 4698, 4040, 4048, 4060, 4068, 4090, 4098, 4400, 4408, 4480, 4488, 4600, 4608, 4680, 4688, 4000, 4008, 4080, 4088
2^64 - 1
? หากเป็นกรณีนี้อาจเป็นสิ่งที่ควรค่าแก่การพิจารณาว่าอินพุตแรกสร้างหมายเลขดังกล่าวเพื่อให้ผู้คนสามารถทดสอบคำตอบของพวกเขาได้