ระบบจำนวนปัจจัยที่เรียกว่า factoradic เป็นระบบเลข Radix ผสม แฟคทอเรียลกำหนดค่าสถานที่ของตัวเลข
ในระบบนี้ตัวเลขที่ถูกต้องที่สุดอาจเป็น 0 หรือ 1 หลักขวาสุดที่สองสามารถเป็น 0, 1 หรือ 2 และอื่น ๆ ซึ่งหมายความว่าn
ตัวเลขตัวประกอบตัวเลขสามารถมีค่าสูงสุด(n + 1)!
ได้
ตัวอย่างเช่นในการแปลงจำนวนตัวประกอบ24201
ให้เป็นทศนิยมคุณต้องดำเนินการดังนี้
2 * 5! = 240
4 * 4! = 96
2 * 3! = 12
0 * 2! = 0
1 * 1! = 1
240 + 96 + 12 + 0 + 1 = 349
ดังนั้นจำนวน factoradic 24201
เป็นฐาน349
10
ในการแปลงตัวเลขทศนิยม (พร้อม349
ตัวอย่าง) เป็นตัวเลขตัวประกอบคุณต้องทำดังนี้
ใช้แฟกทอเรียลที่ใหญ่ที่สุดน้อยกว่าจำนวน ในกรณีนี้มันเป็นหรือ120
5!
349 / 5! = 2 r 109
109 / 4! = 4 r 13
13 / 3! = 2 r 1
1 / 2! = 0 r 1
1 / 1! = 1 r 0
ดังนั้น349
ฐานเป็นจำนวน10
factoradic24201
ความท้าทายของคุณคือการสร้างโปรแกรมหรือฟังก์ชั่นที่สั้นที่สุดที่แปลงหมายเลขอินพุตไปยังฐานอื่น
อินพุตจะเป็นการแทนสตริงของจำนวนเต็มที่ไม่เป็นลบ ตัวเลขตัวประกอบจะถูกนำหน้าด้วย!
(เช่น!24201
) ในขณะที่ตัวเลขทศนิยมจะไม่นำหน้าด้วยอะไร คุณอาจจะคิดว่าการป้อนข้อมูลสูงสุดที่จะเป็น10! - 1
- 3628799
ในทศนิยมและ987654321
ใน factoradic ซึ่งหมายความว่าตัวอักษรจะไม่ปรากฏในอินพุต / เอาต์พุตตัวประกอบ
โปรแกรมไม่จำเป็นต้อง!
เพิ่มเอาท์พุตที่เป็นตัวประกอบและอาจส่งออกสตริงหรือจำนวนเต็ม อินพุตอาจอยู่ในรูปแบบที่สมเหตุสมผล
กรณีทดสอบ:
Input: 1234
Output: 141120
Input: 746
Output: 101010
Input: !54321
Output: 719
Input: !30311
Output: 381
⍴⍵∩'!'
ด้วย'!'∊⍵
เพื่อบันทึกตัวละคร