ท้าทาย:
สร้างโปรแกรมที่รับอินพุตของจำนวนเต็มบวกที่ไม่เป็นศูนย์และส่งออกตัวเลข 4 ตัวถัดไปตามลำดับที่อธิบายด้านล่าง
หมายเหตุ: การตรวจสอบว่าอินพุตเป็นจำนวนเต็มบวกที่ไม่เป็นศูนย์จริงหรือไม่ไม่จำเป็น
ลำดับ:
ทุกหมายเลขในลำดับนี้ (นอกเหนือจากตัวแรกซึ่งคืออินพุต) จะประกอบด้วยตัวเลข n โดยที่ n คือจำนวนคู่ หากเราแบ่งตัวเลขเป็น n / 2 คู่สำหรับแต่ละคู่หลักแรกควรเป็นจำนวนครั้งที่ตัวเลขสองปรากฏในหมายเลขก่อนหน้า
คำอธิบายภาพ :
ลองพิจารณาตัวอย่างนี้ "ลำดับเริ่มต้น" หรืออินพุต6577
หมายเลขถัดไปในลำดับควรมีลักษณะเช่นนี้161527
เนื่องจากอินพุตมี 1 "6", 1 "5" และ 2 "7" s
หากอินพุตมีตัวเลขมากเกินไป (มากกว่า 9 หลักเดียว) คุณจะไม่สามารถรับเอาต์พุตที่ถูกต้อง
ตัวอย่าง: 111111111111
(12 1's)
หมายเลขถัดไปในลำดับจะต้องอธิบาย 12 1 ของ ดังนั้นเราจึงแบ่งเป็น 9 1 และ 3 1 (รวม 9 + 3 = 12)
หมายเลขถัดไป:9131
คุณควรวนซ้ำ 4 ครั้งสำหรับอินพุทและเอาท์พุทมัน (กลับรายการ / อาร์เรย์ของจำนวนเต็ม 4 หรือส่งออกโดยแยกพวกเขาด้วยช่องว่างบรรทัดใหม่ก็ยอมรับได้)
"ตัวเลขสามารถเขียนได้หลายวิธีฉันจะเขียนได้อย่างไร" :
ถ้าคุณคิดเกี่ยวกับมันตัวอย่างอินพุต6577
สามารถเขียนเป็น 271516 (สอง 7 ของ, หนึ่ง 5, หนึ่งหก) อย่างไรก็ตามนี่เป็นเอาต์พุตที่ไม่ถูกต้อง คุณควรทำซ้ำหมายเลขจากซ้ายไปขวา ดังนั้น 161527 ถ้าเป็น7657
คุณจะย้ำจำนวน 7 ของแล้วจำนวน 6 จากนั้นจำนวน 5 ดังนั้นผลลัพธ์ที่ถูกต้องจะเป็น271615
ตัวอย่าง I / O:
อินพุต: 75
เอาต์พุต:1715 211715 12311715 4112131715
อินพุต: 1
เอาต์พุต:11 21 1211 3112
อินพุต: 111111111111
(12 1's)
เอาต์พุต:9131 192113 31191213 23411912
นี่ไม่เหมือนกับคำถาม "พูดในสิ่งที่คุณเห็น" เนื่องจากลำดับต่างกัน: https://oeis.org/A005150 <- อันนี้ส่งกลับตัวเลขดังนี้:
อินพุต: 1211 เอาท์พุท: 111221
ขณะที่ลำดับที่ฉันขอ จะทำ
อินพุต: 1211 ผลลัพธ์: 3112
ลำดับที่สองต่างกันและต้องการอัลกอริธึมที่แตกต่างกัน
ลำดับที่ฉันถาม: https://oeis.org/A063850ลำดับ
"เป็นไปได้ซ้ำกัน": https://oeis.org/A005150
ข้อกำหนดที่สำคัญ:
เนื่องจากมันไม่ชัดเจนพอสำหรับบางคนที่พยายามตอบคำถามนี้ผลลัพธ์ที่ถูกต้องสำหรับ k chars ที่ k> 9 ไม่ใช่ "kc" (โดยที่ c เป็น char) แต่ 9c (k-9) c เป็นต้นดังนั้นผลลัพธ์ที่ถูกต้องสำหรับ 12 1 ไม่ใช่121
(12 1) แต่9131
(9 1, (12-9) 1 และอื่น ๆ )
หากมีข้อสงสัยรหัสของคุณผิดถ้ามันส่งออกจำนวนที่มีจำนวนคี่ (เช่น 121) ก็ควรจะมีการส่งออกของตัวเลขที่เป็นเลขคู่เนื่องจากลักษณะของลำดับ
นี่คือcode-golfดังนั้นโค้ดที่มีจำนวนไบต์น้อยที่สุดจะเป็นผู้ชนะ
23411912
แทน23411219
?
1111111111111111111
(19) 1's )