อลิซเป็นผู้ฝึกงานใน บริษัท ที่ใช้ Brainfuck เป็นภาษาหลักสำหรับการพัฒนาลูกค้าและฝั่งเซิร์ฟเวอร์ อลิซเพิ่งเขียนโค้ดแรกของเธอและเธอก็กังวลเล็กน้อยเมื่อเธอเตรียมพร้อมสำหรับการทบทวนรหัสครั้งแรก
อลิซต้องการที่จะทำให้รหัสของเธอในรูปแบบที่ถูกต้องและดูดี แต่เธอก็มีเวลาในการอ่านคู่มือ 328 หน้า บริษัท รหัสลักษณะไม่มีดังนั้นเธอจึงตัดสินใจที่จะจัดรูปแบบเป็นตารางที่สมบูรณ์ อนิจจาความยาวโค้ดอาจไม่เพียงพอในการสร้างสี่เหลี่ยมดังนั้นเธอจึงตัดสินใจทิ้งช่องว่างสี่เหลี่ยมไว้ตรงกลาง ช่องว่างจะต้องอยู่กึ่งกลางอย่างสมบูรณ์และใกล้กับตารางมากที่สุด
ตัวอย่าง
++++++ +++++ +++++ +++++ +++++ +++++
++++++ +++++ +++++ + ++ ++ ++ +++++
++++++ ++ ++ + + + ++ + +
++++++ +++++ +++++ +++++ ++ ++ +++++
++++++ +++++ +++++ +++++ +++++ +++++
Perfect OK Acceptable Unacceptable No way! Nope.
เขียนโปรแกรมหรือฟังก์ชั่นเพื่อช่วยอลิซ กำหนดรหัสของอลิซเป็นสตริงอินพุตให้จัดรูปแบบรหัสอย่างถูกต้องตามที่อธิบายไว้ด้านล่างหากเป็นไปได้ หากการจัดรูปแบบเป็นไปไม่ได้ให้ส่งอีโมจิ:~(
ออกมา
นี่คือcode-golfดังนั้นคำตอบจะได้คะแนนเป็นไบต์โดยมีจำนวนไบต์น้อยกว่าที่เป็นเป้าหมาย
ข้อ จำกัด
- โปรแกรมหรือฟังก์ชั่นของคุณควรใช้สายอักขระเดียวเป็นอินพุตและเอาต์พุตข้อความหนึ่งบรรทัดหรือมากกว่านั้น (หรือส่งคืนสตริงแบบหลายบรรทัดหรืออาร์เรย์ของสตริงหากคุณใช้ฟังก์ชัน)
- สตริงอินพุตอาจมีอักขระ ASCII ใด ๆ รวมถึง whitespaces
- ช่องว่างทั้งหมดในอินพุตต้องถูกละเว้น พวกเขาไม่ควรนับความยาวรหัสและไม่ควรใช้ในผลลัพธ์
- สตริงอินพุตมีอักขระที่ไม่ใช่ช่องว่างอย่างน้อยหนึ่งตัว
- รหัสที่จัดรูปแบบต้องมีอักขระที่ไม่ใช่ช่องว่างเดียวกันในลำดับเดียวกันกับในรหัสที่ป้อน
- รหัสที่จัดรูปแบบแล้วจะต้องเป็นสี่เหลี่ยมจัตุรัสที่สมบูรณ์แบบเช่นทุกบรรทัดควรมีความยาวเท่ากันและจำนวนบรรทัดควรเท่ากับความยาวของเส้น
- รหัสที่จัดรูปแบบอาจมีช่องว่างตรงกลาง
- สามารถใช้อักขระช่องว่างเท่านั้น (รหัส ASCII 32) ในช่องว่าง
- ช่องว่าง (ถ้ามี) จะต้องเป็นสี่เหลี่ยม
- บรรทัดของโค้ดที่จัดรูปแบบทุกบรรทัดต้องมีอักขระที่ไม่ใช่ช่องว่างอย่างน้อยหนึ่งตัวนั่นคือความกว้างของช่องว่างจะต้องน้อยกว่าความกว้างของตารางอย่างเคร่งครัด (ช่องว่าง 5x1 ไม่สามารถใช้ได้สำหรับ 5x5 ตาราง)
- ช่องว่างควรเป็นแนวนอนกล่าวคือความกว้างของช่องว่างควรมากกว่าหรือเท่ากับความสูงของช่องว่าง
- ช่องว่างจะต้องอยู่กึ่งกลางอย่างสมบูรณ์แบบ
- ดังนั้นความกว้างของช่องว่างและความเท่าเทียมกันของความสูงควรเท่ากับความกว้างของช่องสี่เหลี่ยม (เช่นช่องว่าง 5x5 อาจเป็น 1x1, 3x1 หรือ 3x3)
- ถ้าเป็นไปได้ให้เอาท์พุทสแควร์โดยไม่มีช่องว่างเลย
- ในกรณีที่มีการแก้ปัญหาหลายอย่างให้เลือกอันที่มีช่องว่างใกล้กับสแควร์มากที่สุดนั่นคือความแตกต่างระหว่างความกว้างของช่องว่างและความสูงของช่องว่างนั้นน้อยที่สุด (ตัวอย่างเช่นช่องว่าง 10x10 จะดีกว่า 8x6 และ 8x6
- หากยังคงมีเน็คไทให้เลือกโซลูชันที่มีพื้นที่ช่องว่างน้อยที่สุด (เช่นช่องว่าง 2x2 เป็นที่นิยมมากกว่า 4x4)
:~(
ถ้ามันเป็นไปไม่ได้ที่จะจัดรูปแบบรหัสที่ทุกคนเอาท์พุท- ขึ้นบรรทัดใหม่หลังจากบรรทัดสุดท้ายเป็นตัวเลือก
- [ใหม่]คุณอาจสันนิษฐานได้อย่างปลอดภัยว่าอักขระใด ๆ ที่มีรหัสต่ำกว่า 33 คือ white-space ฉันหวังว่ามันจะช่วยคุณในการเล่นกอล์ฟ
การทดสอบ
Input Output Code length Comment
+++++++++ +++ 9 Alice is lucky,
+++ her code perfectly fits a square.
+++
++++++++ +++ 8 Though code length isn't enough for a square,
+ + a small gap fixes it.
+++
++++++ :~( 6 No luck, code cannot be formatted.
Hello, Hell 12 Input may contain any ASCII characters,
World! o , but whitespaces in input should be ignored.
W o
rld!
+++++ + +++++ +++++ 22 Gap is not required to be a square,
+++++ + +++++ +++++ it can be a rectangle.
+ +
+++++
+++++
+++ + +++ ++++++++ 28 There exists another solution:
+++ + +++ + + 6x6 square with 4x2 gap,
+++ + +++ + + but in Alice's opinion square gap
+++ + +++ + + makes code more readable.
+ +
+ +
+ +
++++++++
การทดสอบที่ยุ่งยาก
This must be Thism 24 7x7 with 5x5 gap looks good,
5x5 with 1x1 ustbe but 5x5 with 1x1 gap is better,
gap. 5x 5w because gap area is smaller.
ith1x
1gap.
+++ +++ +++ :~( 18 In case you tried 5x5 square
+++ +++ +++ with 7x1 gap ;)
ทรัพยากร
เพื่อประหยัดพื้นที่คุณสามารถค้นหารหัสตัวอย่างและกรณีทดสอบเพิ่มเติมได้ที่ tio.run
[ใหม่]คุณอาจจะดูที่ตารางของการแก้ปัญหาที่ได้รับการยอมรับสำหรับปัจจัยการผลิตไม่เกิน 100 ตัวอักษร ฉันสลับความกว้างและความสูงเนื่องจากดูเหมือนว่าจะฉลาดยิ่งขึ้น
แรงบันดาลใจจาก: ข้อความหนึ่งตาราง
การเปลี่ยนแปลง
เพิ่มการทดสอบ 2 รายการแก้ไขข้อผิดพลาดในโค้ดตัวอย่าง
เพิ่มตารางของโซลูชันมากถึง 100 เพิ่มการเพิ่มความชัดเจนของ white-space