แรงบันดาลใจจากโพสต์นี้ใน Puzzling สปอยเลอร์สำหรับจิ๊กซอว์นั้นอยู่ด้านล่าง
กำหนดจำนวนเต็มบวกสามค่าเป็นอินพุต(x, y, z)
สร้างช่วงที่รวม[x, y]
กันเชื่อมช่วงนั้นเข้าด้วยกันจากนั้นลบz
ตัวเลขที่ไม่จำเป็นต่อเนื่องเพื่อสร้างจำนวนเต็มบวกที่ใหญ่ที่สุดและเล็กที่สุดเท่าที่จะเป็นไปได้ ไม่อนุญาตเลขนำหน้า (เช่นตัวเลขต้องขึ้นต้นด้วย[1-9]
) เอาท์พุทตัวเลขทั้งสองในลำดับใด
ยกตัวอย่างเช่นจากการโพสต์น่าสงสัยสำหรับการป้อนข้อมูล(1, 100, 100)
จำนวนที่ใหญ่ที่สุดที่เป็นไปได้99999785960616263646566676869707172737475767778798081828384858687888990919293949596979899100
,
และจำนวนที่น้อยที่สุดคือ10000012340616263646566676869707172737475767778798081828384858687888990919293949596979899100
,
ต่อไปด้านล่างตรรกะจากjafe ของคำตอบโพสต์ที่นั่น
- เราไม่สามารถมีอิทธิพลต่อความยาวของตัวเลข (มีจำนวนหลักคงที่) ดังนั้นเพื่อเพิ่มค่าสูงสุดที่เราใช้กับตัวเลขสูงสุดแรกจากนั้นก็เป็นตัวเลขหลักที่สองเป็นต้น
- ลบ 84 ไม่ใช่ nonines แรก (เหลือ 16 หลักเพื่อลบ):
999995051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
- ตัวเลขที่ใหญ่ที่สุดใน 17 หลักถัดไปคือ 7 ดังนั้นจากที่นี่ตัวเลขถัดไปในคำตอบสามารถมีได้สูงสุด 7 (เราไม่สามารถลบมากกว่า 16 หลัก) ดังนั้นลบ 15 non-7's ... (เหลือ 1 หลักเพื่อลบ):
999997585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
- จากที่นี่ตัวเลขถัดไปสามารถมีได้สูงสุด 8 หลักดังนั้นลบหนึ่ง non-8 ออกจากตรงกลาง
99999785960616263646566676869707172737475767778798081828384858687888990919293949596979899100
- ตรรกะที่คล้ายกัน แต่กลับด้าน (เช่นเราต้องการลีดเดอร์
1
s แทน9
ลีดเดอร์) สำหรับจำนวนที่น้อยที่สุด
(1, 10, 5)
นี่เป็นตัวอย่างที่มีขนาดเล็กลง
เราสร้างช่วง12345678910
และกำหนดว่า5
เราสามารถลบตัวเลขใดที่มีจำนวนมากที่สุด เห็นได้ชัดว่านั่นหมายความว่าเราต้องการเพิ่มตัวเลขนำหน้าให้ได้มากที่สุดเนื่องจากเราไม่สามารถมีอิทธิพลต่อความยาวของเอาต์พุต ดังนั้นถ้าเราลบ12345
เราจะเหลือ678910
และนั่นคือสิ่งที่ใหญ่ที่สุดที่เราสามารถทำได้ การทำให้สิ่งที่เล็กที่สุดนั้นเป็นเรื่องที่ยากขึ้นเพราะเราสามารถถอนตัวเลขออกจากตรงกลางแทน123410
ได้
สำหรับ(20, 25, 11)
ผลที่ได้คือค่อนข้างน่าเบื่อเป็นและ5
1
สุดท้ายที่จะออกกฎคำตอบที่พยายามศูนย์ชั้นนำ(9, 11, 3)
ให้91011
ซึ่งอัตราผลตอบแทนในการเปิด91
และ10
เป็นที่ใหญ่ที่สุดและมีขนาดเล็กที่สุด
I / O และกฎ
- ถ้าง่ายกว่า / สั้นกว่าคุณสามารถเขียนรหัสโปรแกรม / ฟังก์ชั่นได้สองรายการอันหนึ่งสำหรับที่ใหญ่ที่สุดและอีกอันสำหรับที่เล็กที่สุดในกรณีนี้คะแนนของคุณคือผลรวมของทั้งสองส่วน
- อินพุตและเอาต์พุตจะได้รับโดยวิธีการที่สะดวกใด ๆ
- การป้อนข้อมูลสามารถสันนิษฐานได้ว่าเหมาะสมกับประเภทของหมายเลขในภาษาของคุณอย่างไรก็ตามทั้งหมายเลขที่ต่อกันและไม่สามารถสันนิษฐานได้
- ยอมรับได้ทั้งโปรแกรมหรือฟังก์ชั่น หากฟังก์ชั่นคุณสามารถส่งคืนผลลัพธ์มากกว่าการพิมพ์
- ช่องโหว่มาตรฐานเป็นสิ่งต้องห้าม
- นี่คือรหัส - กอล์ฟเพื่อให้ใช้กฎการเล่นกอล์ฟตามปกติทั้งหมดและรหัสที่สั้นที่สุด (เป็นไบต์) ชนะ
9, 11, 3
น่าจะทำ