นี่คือรหัสกอล์ฟ ผู้ชนะคือรหัสที่ถูกต้องและมีจำนวนไบต์น้อยที่สุด
ท้าทาย
รับอินพุตMและN , ความกว้างและความสูงของตารางสี่เหลี่ยมของสี่เหลี่ยม, ส่งออกรูปหลายเหลี่ยมที่ตรงตามต่อไปนี้:
- ขอบรูปหลายเหลี่ยมสร้างขึ้นจากขอบสี่เหลี่ยมเท่านั้น:ไม่มีขอบทแยงมุม - ทั้งหมดเป็นแนวตั้งหรือแนวนอน
- รูปหลายเหลี่ยมไม่มีรู:สี่เหลี่ยมด้านนอกของรูปหลายเหลี่ยมนั้นอาจถึงได้โดยขั้นตอนมุมฉากบนสี่เหลี่ยมนอกรูปหลายเหลี่ยมเริ่มจากสี่เหลี่ยมนอกรูปหลายเหลี่ยมบนขอบเขตด้านนอกของรูปสี่เหลี่ยมผืนผ้า
- รูปหลายเหลี่ยมนั้นไม่มีจุดตัดเอง:จากการที่ขอบจตุรัสพบกันที่จุดยอดไม่เกิน 2 อาจเป็นส่วนหนึ่งของเส้นรอบวงรูปหลายเหลี่ยม
- รูปหลายเหลี่ยมถูกเชื่อมต่อ:สี่เหลี่ยมใด ๆ ในรูปหลายเหลี่ยมจะต้องสามารถเข้าถึงได้จากตารางอื่น ๆ ในรูปหลายเหลี่ยมผ่านขั้นตอนมุมฉากที่อยู่ภายในรูปหลายเหลี่ยม
- รูปหลายเหลี่ยมมีขอบเขตสูงสุดที่เป็นไปได้:ตามสูตรที่แสดงด้านล่าง
รหัสของคุณจะต้องใช้กับMและN ได้ตั้งแต่ 1 ถึง 255
สูตรสำหรับปริมณฑลสูงสุด
ความท้าทายที่นี่คือการค้นหาความสามารถในการเล่นกอล์ฟของรูปหลายเหลี่ยมที่มีขอบเขตสูงสุด ขอบเขตสูงสุดนั้นถูกกำหนดโดยสูตรเสมอ:
สิ่งนี้เป็นจริงเพราะในขอบเขตสูงสุดทุกจุดสุดยอดของรูปสี่เหลี่ยมจัตุรัสจะต้องอยู่บนเส้นรอบวง สำหรับจำนวนจุดยอดที่เป็นไปไม่ได้นี้เป็นไปไม่ได้และสิ่งที่ดีที่สุดที่สามารถบรรลุได้คือจุดยอดหนึ่งที่น้อยกว่า (เนื่องจากเส้นรอบวงอยู่เสมอ)
เอาท์พุต
แสดงรูปร่างเป็นสตริงของอักขระที่คั่นด้วยบรรทัดใหม่ ( แถวNของอักขระM ทั้งหมด ) ที่นี่ฉันกำลังใช้พื้นที่สำหรับสี่เหลี่ยมนอกรูปหลายเหลี่ยมและ '#' สำหรับกำลังสองภายในรูปหลายเหลี่ยม แต่คุณสามารถใช้อักขระสองตัวที่แตกต่างกันได้โดยให้ความหมายสอดคล้องกับอินพุตทั้งหมด
คุณสามารถรวมบรรทัดใหม่ชั้นนำได้หนึ่งรายการและขึ้นบรรทัดใหม่ต่อท้ายหนึ่งรายการ
หากคุณต้องการคุณสามารถส่งออกแถวM ที่มีอักขระทั้งหมดNตัวและคุณอาจเลือกMเอาต์พุต by Nสำหรับอินพุตบางตัวและเอาต์พุตNโดยMสำหรับผู้อื่น
ตัวอย่าง
ไม่ถูกต้องเนื่องจากมีรู:
###
# #
###
ไม่ถูกต้องเนื่องจากจุดตัด (สัมผัสแนวทแยงมุม - จุดยอดที่มีขอบสี่เหลี่ยมจตุรัส 4 อันบนขอบเขต) และโดยบังเอิญเป็นรู:
##
# #
###
ไม่ถูกต้องเนื่องจากถูกตัดการเชื่อมต่อ:
#
# #
#
รูปหลายเหลี่ยมที่ถูกต้องของขอบเขตสูงสุด:
# #
# #
###
เครดิต
ตอนแรกฉันประเมินค่าต่ำสุดว่าสามารถคำนวณค่าขอบเขตสูงสุดได้เร็วเพียงใดและจะถามค่านั้นเป็นผลลัพธ์ ขอขอบคุณผู้คนที่เป็นประโยชน์อย่างยิ่งในการแชทเพื่ออธิบายวิธีการใช้ขอบเขตสูงสุดสำหรับ N และ M โดยพลการและช่วยให้สิ่งนี้กลายเป็นความท้าทายที่จะคงอยู่นานกว่าหนึ่งคำตอบ ...
ขอขอบคุณเป็นพิเศษกับ: