จำนวนภาษาการเขียนโปรแกรมสร้างจำนวนเต็มขนาดใหญ่ผ่าน 'การต่อข้อมูล' ตัวเลขจนถึงจุดสิ้นสุดของจำนวนที่มีอยู่ ยกตัวอย่างเช่นเขาวงกตหรือปรับ ด้วยการต่อตัวเลขกับจุดสิ้นสุดฉันหมายถึงว่าถ้าจำนวนที่มีอยู่คือและหลักคือผลลัพธ์จะเป็น )
ตัวเลขที่สร้างคือจำนวนที่สามารถสร้างวิธีนี้ผ่านการใช้ทวีคูณของตัวเลขหลักเดียว: , 9 AKA องค์ประกอบในหนึ่งใน 9 ลำดับดังนี้:
เพื่อให้ตัวอย่างของวิธีการลำดับมีการสร้างที่นี่เป็นวิธีลำดับสำหรับ= 3ในการสร้าง:
และรวมแสดงให้เห็นถึงเมื่อ 100 มีจุดจำนวนมากเพื่อเว้นวรรค
อาจยังไม่ชัดเจนว่าลำดับเหล่านี้ถูกสร้างขึ้นอย่างไรดังนั้นนี่คือสองวิธีที่แตกต่างกันในการทำความเข้าใจ:
แต่ละลำดับเริ่มต้นจากหลักเดียว พบคำต่อไปโดยการคูณหลายหลักถัดไปของการคูณคำก่อนหน้าด้วยและเพิ่มหลายตัว ในแง่ของลำดับ:
โดยที่คือตัวเลขหลักเดียว ( ถึง )
แต่ละองค์ประกอบที่จุดใด ๆ ในลำดับ (ใช้เป็นต้น) เป็นทวีคูณของจากที่จะที่ถูกสร้างโดย
ดังนั้นค่าแรกคือ , ส่วนที่สองคือ , ฯลฯ
งานของคุณคือนำตัวเลขที่สร้างขึ้นมาเป็นอินพุตและเอาต์พุตตัวเลขเริ่มต้นที่ใช้สร้าง คุณสามารถสันนิษฐานได้ว่าการป้อนข้อมูลที่มักจะเป็นตัวเลขที่สร้างขึ้นและจะมีค่ามากกว่า0อาจเป็นตัวเลขหลักเดียวซึ่งแผนที่กลับไปที่ตัวเอง
คุณอาจป้อนข้อมูลในลักษณะที่สมเหตุสมผลรวมถึงรายการตัวเลขเป็นสตริง ฯลฯ เป็นที่ยอมรับได้ (แต่ไม่แนะนำให้ใช้) เพื่อป้อนข้อมูลแบบไม่พร้อมเพรียงหรือฐานอื่น ๆ ที่คุณเลือก
นี่คือรหัสกอล์ฟเพื่อให้ได้รหัสที่สั้นที่สุดชนะ!
กรณีทดสอบ
u_n => a
37035 => 3
6172839506165 => 5
5 => 5
246913580244 => 2
987654312 => 8
61728395061720 => 5
1111104 => 9
11111103 => 9
111111102 => 9
2469134 => 2
98760 => 8
8641975308641962 => 7
หรือเป็นสองรายการ:
[37035, 6172839506165, 5, 246913580244, 987654312, 61728395061720, 1111104, 11111103, 111111102, 2469134, 98760, 8641975308641962]
[3, 5, 5, 2, 8, 5, 9, 9, 9, 2, 8, 7]
เมื่อฉันโพสต์ความท้าทายนี้ฉันไม่ได้ตระหนักว่ามันอาจจะง่ายขึ้นมากโดยวิธีการที่ใช้ในคำตอบของ Grimyและดังนั้นจึงมีความสนใจในคำตอบที่ใช้วิธีการทางคณิตศาสตร์มากขึ้นในการแก้ปัญหานี้มากกว่า 'หลัก' เคล็ดลับ (เห็นได้ชัดว่าคำตอบที่ถูกต้องทั้งหมดมีความถูกต้องเท่าเทียมกันสิ่งที่ฉันสนใจจะเห็น)