บทนำ:
ฉันรวบรวมปริศนาคดเคี้ยว ส่วนใหญ่ผลิตและจำหน่ายโดย บริษัท จีน บริษัท ที่มีชื่อเสียงส่วนใหญ่ขออนุญาตจากผู้ออกแบบตัวต่อเพื่อผลิตงานออกแบบและทำงานร่วมกันเพื่อนำไปสู่ผลิตภัณฑ์ในตลาด ในกรณีนี้ผู้ออกแบบเกมปริศนานั้นมีความสุขและภูมิใจมากที่หนึ่งในปริศนาของพวกเขาเข้าสู่ตลาด
อย่างไรก็ตามยังมี บริษัท ของจีนที่สร้างปริศนาเลียนแบบ การลอกเลียนแบบเหล่านี้มีทั้งการออกแบบที่ใช้โดยไม่ได้รับอนุญาตจากผู้สร้างดั้งเดิมหรือเป็นสำเนาที่มีคุณภาพต่ำกว่าของปริศนาที่มีอยู่เดิม
ท้าทาย:
เราจะพิจารณาความสามารถในการสร้างสรรค์ของตัวเลขที่ 'ปล่อย' ตามลำดับเฉพาะ (จากซ้ายไปขวา† )
รับรายการจำนวนเต็มจัดกลุ่มและส่งออกตามความคิดริเริ่ม
ความคิดริเริ่มของตัวเลขถูกกำหนดอย่างไร?
- ตัวเลขซ้ำซ้อนกับตัวเลขก่อนหน้าหรือไม่ กลุ่ม (ต้นฉบับน้อยที่สุด) โดยที่กลุ่มต่อท้ายอยู่หลังจากกลุ่มอื่น ๆ ทั้งหมด
- เป็นตัวเลขที่ซ้ำกันของตัวเลขก่อนหน้า แต่เป็นค่าลบแทน (เช่นหมายเลขเดิมคือแต่ตอนนี้ ; หรือกลับกัน) กลุ่มX
- สามารถสร้างค่าสัมบูรณ์ของตัวเลขโดยการต่อตัวเลขสัมบูรณ์ก่อนหน้าหนึ่งหมายเลขขึ้นไปและมันไม่ได้เป็นส่วนหนึ่งของกลุ่มที่กล่าวถึงก่อนหน้านี้หรือหรือไม่? กลุ่มโดยที่คือจำนวนตัวเลขที่แตกต่างกันที่ใช้ในการต่อข้อมูล (และ )
- จำนวนไม่เหมาะสมกับกลุ่มใด ๆ ข้างต้นหรือไม่ดังนั้นจึงมีความเป็นเอกลักษณ์โดยสิ้นเชิงหรือไม่? กลุ่ม (ดั้งเดิมมากที่สุด) ซึ่งนำหน้ากลุ่มอื่นทั้งหมด
นี่อาจฟังดูไม่ชัดดังนั้นนี่เป็นตัวอย่างทีละขั้นตอน :
การป้อนข้อมูลรายการ: [34,9,4,-34,19,-199,34,-213,94,1934499,213,3,21,-2134,44449,44]
34
เป็นจำนวนครั้งแรกซึ่งมักจะเป็นต้นฉบับและในกลุ่มที่ 1ป่านนี้:[[34]]
9
เป็นต้นฉบับ:[[34,9]]
4
เป็นต้นฉบับ:[[34,9,4]]
-34
เป็นลบของตัวเลขก่อนหน้า34
ดังนั้นจึงอยู่ในกลุ่ม :[[34,9,4],[-34]]
19
เป็นต้นฉบับ:[[34,9,4,19],[-34]]
-199
สามารถสร้างขึ้นโดยตัวเลขสองตัวก่อนหน้านี้19
และ9
ดังนั้นจึงอยู่ในกลุ่ม :[[34,9,4,19],[-199],[-34]]
34
เป็นสำเนาที่แน่นอนของตัวเลขก่อนหน้าดังนั้นในกลุ่ม :[[34,9,4,19],[-199],[-34],[34]]
-213
เป็นต้นฉบับ:[[34,9,4,19,-213],[-199],[-34],[34]]
94
สามารถสร้างขึ้นโดยตัวเลขสองตัวก่อนหน้านี้9
และ4
ดังนั้นจึงอยู่ในกลุ่ม :[[34,9,4,19,-213],[-199,94],[-34],[34]]
1934499
สามารถเกิดขึ้นโดยตัวเลขสี่ตัวก่อนหน้านี้19
,34
,4
และสองครั้ง9
เพื่อให้มันอยู่ในกลุ่ม :[[34,9,4,19,-213],[19499],[-199,94],[-34],[34]]
213
เป็นลบของตัวเลขก่อนหน้า-213
ดังนั้นจึงอยู่ในกลุ่ม :[[34,9,4,19,-213],[1934499],[-199,94],[-34,213],[34]]
3
เป็นต้นฉบับ:[[34,9,4,19,-213,3],[1934499],[-199,94],[-34,213],[34]]
21
เป็นต้นฉบับ:[[34,9,4,19,-213,3,21],[1934499],[-199,94],[-34,213],[34]]
-2134
สามารถเกิดขึ้นโดยตัวเลขสองก่อนหน้านี้213
และ4
(หรือสามตัวเลขก่อนหน้านี้21
,3
และ4
แต่เรามักจะใช้จำนวนน้อยที่สุดของการเชื่อมโยงตัวเลขในการกำหนดริเริ่ม) ดังนั้นจึงเป็นเรื่องที่อยู่ในกลุ่ม :[[34,9,4,19,-213,3,21],[1934499],[-199,94,-2134],[-34,213],[34]]
44449
สามารถสร้างขึ้นโดยตัวเลขสองตัวก่อนหน้านี้สี่ครั้ง4
และ9
ดังนั้นจึงอยู่ในกลุ่ม :[[34,9,4,19,-213,3,21],[1934499],[-199,94,-2134,44449],[-34,213],[34]]
44
สามารถสร้างขึ้นด้วยหมายเลขก่อนหน้าเดียว4
ซ้ำสองครั้งดังนั้นจึงอยู่ในกลุ่ม :[[34,9,4,19,-213,3,21],[1934499],[-199,94,-2134,44449],[44],[-34,213],[34]]
ดังนั้นสำหรับการป้อนข้อมูลออกเป็น[34,9,4,-34,19,-199,34,-213,94,1934499,213,3,21,-2134,44449,44]
[[34,9,4,19,-213,3,21],[1934499],[-199,94,-2134,44449],[44],[-34,213],[34]]
กฏท้าทาย:
- I / O ยืดหยุ่นได้ คุณสามารถป้อนข้อมูลเป็นรายการ / อาร์เรย์ / สตรีมของจำนวนเต็มหรือสตริงป้อนเข้าทีละตัวผ่าน STDIN เป็นต้นผลลัพธ์สามารถเป็นแผนที่ที่มีกลุ่มเป็นคีย์รายการซ้อนเป็นตัวอย่างและกรณีทดสอบในความท้าทายนี้พิมพ์ ขึ้นบรรทัดใหม่คั่น ฯลฯ
- คุณได้รับอนุญาตให้ใช้รายการอินพุตตามลำดับที่กลับรายการ (อาจมีประโยชน์สำหรับภาษาที่ใช้สแต็ก) †ในกรณีนี้จากซ้ายไปขวาที่กล่าวถึงนั้นแน่นอนจากขวาไปซ้าย
- ที่คุณสามารถดูตัวอย่างสำหรับจำนวนเต็ม
-2134
เราเสมอกลุ่มหมายเลขที่มีการเรียงต่อกันของตัวเลขอื่น ๆ ที่มีน้อยที่สุด (ที่เกิดขึ้นจาก213
และ4
- ตัวเลขสองและไม่ได้โดย21
,3
และ4
สาม - ตัวเลข) - อย่างที่คุณเห็นในตัวอย่างสำหรับจำนวนเต็ม
1934499
คุณสามารถใช้หมายเลขก่อนหน้า (9
ในกรณีนี้) หลาย ๆ ครั้ง (คล้ายกับการ44449
ใช้สี่4
s และ a9
ในตัวอย่าง) พวกเขาจะถูกนับเพียงครั้งเดียวเพื่อพิจารณากลุ่มอย่างไรก็ตาม - คุณไม่ได้รับอนุญาตให้มีรายการภายในที่ว่างเปล่าในผลลัพธ์สำหรับกลุ่มที่ว่างเปล่า ดังนั้นกรณีทดสอบ
[1,58,85,-8,5,8585,5885,518]
อาจจะไม่ส่งผลในการ[[1,58,85,8,5],[518],[5885],[8585],[],[]]
แทนซึ่งกลุ่มที่ว่างเปล่าเป็นและและตัวอย่างข้างต้นอาจจะไม่ส่งผลในการแทนซึ่งกลุ่มที่ว่างเปล่าเป็นX-3[[34,9,4,19,-213,3,21],[1934499],[],[-199,94,-2134,44449],[44],[-34,213],[34]]
- ลำดับของกลุ่มมีความเข้มงวด (เว้นแต่คุณจะใช้แผนที่เนื่องจากกลุ่มสามารถถูกหักออกจากคีย์) แต่ลำดับของตัวเลขภายในกลุ่มสามารถอยู่ในลำดับใดก็ได้ ดังนั้น
[34,9,4,19,-213,3,21]
สำหรับกลุ่มในตัวอย่างข้างต้นยังสามารถเป็นหรือ[21,3,-213,19,4,9,34]
[-213,4,34,19,9,21,3]
- คุณรับประกันได้ว่าจะไม่มีตัวเลขใด ๆ ที่สามารถสร้างขึ้นจากตัวเลขก่อนหน้านี้ได้มากกว่าเก้าหมายเลข ดังนั้นคุณจะไม่มีกลุ่มใด ๆและจำนวนกลุ่มที่มากที่สุดที่เป็นไปได้คือ 12:
- คุณสามารถสันนิษฐานได้ว่าเลขจะเป็น 32
[−2147483648,2147483647]
บิตที่สูงสุดดังนั้นในช่วง
กฎทั่วไป:
- นี่คือcode-golfดังนั้นคำตอบที่สั้นที่สุดในหน่วยไบต์ชนะ
อย่าปล่อยให้ภาษารหัสกอล์ฟกีดกันคุณจากการโพสต์คำตอบด้วยภาษาที่ไม่ได้เข้ารหัส พยายามหาคำตอบสั้น ๆ ที่เป็นไปได้สำหรับภาษาโปรแกรม 'ใด ๆ ' - กฎมาตรฐานใช้สำหรับคำตอบของคุณด้วยกฎ I / O ที่เป็นค่าเริ่มต้นดังนั้นคุณจึงได้รับอนุญาตให้ใช้ STDIN / STDOUT ฟังก์ชั่น / วิธีพร้อมพารามิเตอร์ที่เหมาะสมและประเภทผลตอบแทนโปรแกรมเต็มรูปแบบ การโทรของคุณ
- ช่องโหว่เริ่มต้นเป็นสิ่งต้องห้าม
- หากเป็นไปได้โปรดเพิ่มลิงก์พร้อมทดสอบรหัสของคุณ (เช่นTIO )
- นอกจากนี้ขอแนะนำให้เพิ่มคำอธิบายสำหรับคำตอบของคุณ
กรณีทดสอบ:
Input: [34,9,4,-34,19,-199,34,-213,94,1934499,213,3,21,-2134,44449,44]
Output: [[34,9,4,19,-213,3,21],[1934499],[-199,94,-2134,44449],[44],[-34,213],[34]]
Input: [17,21,3,-317,317,2,3,117,14,-4,-232,-43,317]
Output: [[17,21,3,2,117,14,-4],[-317,-232,-43],[317],[3,317]]
Input: [2,4,8,10,12,-12,-102,488,10824]
Output: [[2,4,8,10,12],[10824],[-102,488],[-12]]
Input: [0,100,-100,10000,-100,1001000]
Output: [[0,100],[10000,1001000],[-100],[-100]]
Input: [1,58,85,-8,5,8585,5885,518]
Output: [[1,58,85,-8,5],[518],[5885],[8585]]
Input: [4,-4,44,5,54]
Output: [[4,5],[54],[44],[-4]]
X + 1
กลุ่มพิเศษสำหรับสำเนาที่แน่นอนและX
เป็นกลุ่มสำหรับหมายเลขอื่น ๆ ที่สามารถเกิดขึ้นได้จากสำเนาของหมายเลขเดียวเช่นการปฏิเสธ?