จบแท็บกับสงครามอวกาศ
ดังนั้นจึงมีการถกเถียงกันอย่างมากว่าจะใช้แท็บหรือช่องว่างเพื่อเยื้อง / จัดรูปแบบโค้ด คุณสามารถช่วยมหาวิทยาลัยตัดสินข้อพิพาทโดยไปที่วิธีการจัดรูปแบบที่ไม่ซ้ำกัน
อย่างบ้าคลั่งอย่างไม่น่าเชื่อ
งานของคุณคือการเขียนโปรแกรมหรือฟังก์ชั่นเต็มรูปแบบซึ่งขยายแท็บทั้งหมดออกเป็นสี่ช่องว่าง จากนั้นแทนที่ช่องว่างนำหน้าด้วย n ช่องว่างด้วย "/ (n - สองดาวที่นี่) /" คุณจะได้รับอินพุตมากกว่าหลายบรรทัดในรูปแบบที่เหมาะสม (อาเรย์สตริงเดี่ยวของสตริงสำหรับแต่ละบรรทัดใหม่อาเรย์เรียงเป็นแนว ฯลฯ )
การป้อนข้อมูลตัวอย่างที่ถูกขโมยลงคอ โปรดทราบว่าเนื่องจากแท็บขยายโดยอัตโนมัติเป็นสี่ช่องว่างใน SE ฉันจึงแสดงว่าเป็นอักขระ "^" แต่คุณต้องจัดการกับแท็บ (codepoint 0x09) เช่นกัน อักขระ "^" ทั้งหมดแสดงถึงตาราง
Calculate the value 256 and test if it's zero
If the interpreter errors on overflow this is where it'll happen
++++++++[>++++++++<-]>[<++++>-]
+<[>-<
Not zero so multiply by 256 again to get 65536
[>++++<-]>[<++++++++>-]<[>++++++++<-]
+>[>
# Print "32"
++++++++++[>+++++<-]>+.-.[-]<
<[-]<->] <[>>
# Print "16"
+++++++[>+++++++<-]>.+++++.[-]<
<<-]] >[>
# Print "8"
++++++++[>+++++++<-]>.[-]<
<-]<
# Print " bit cells\n"
+++++++++++[>+++>+++++++++>+++++++++>+<<<<-]>-.>-.+++++++.+++++++++++.<.
>>.++.+++++++..<-.>>-
Clean up used cells.
[[-]<]l
^this is preceded by a tab
^^two tabs
^^^three tabs etcetera!
ตัวอย่างผลลัพธ์
Calculate the value 256 and test if it's zero
If the interpreter errors on overflow this is where it'll happen
++++++++[>++++++++<-]>[<++++>-]
+<[>-<
/**/Not zero so multiply by 256 again to get 65536
/**/[>++++<-]>[<++++++++>-]<[>++++++++<-]
/**/+>[>
/******/# Print "32"
/******/++++++++++[>+++++<-]>+.-.[-]<
/**/<[-]<->] <[>>
/******/# Print "16"
/******/+++++++[>+++++++<-]>.+++++.[-]<
<<-]] >[>
/**/# Print "8"
/**/++++++++[>+++++++<-]>.[-]<
<-]<
# Print " bit cells\n"
+++++++++++[>+++>+++++++++>+++++++++>+<<<<-]>-.>-.+++++++.+++++++++++.<.
>>.++.+++++++..<-.>>-
Clean up used cells.
[[-]<]l
/**/this is preceded by a tab
/******/two tabs
/**********/three tabs etcetera!
เนื่องจากมหาวิทยาลัยต้องการพื้นที่ในการดาวน์โหลดทั้ง Vim และ Emacs คุณจึงได้รับอนุญาตให้ใช้พื้นที่เก็บข้อมูลเพียงเล็กน้อยสำหรับโค้ดของคุณ ดังนั้นนี่คือcode-golfและรหัสที่สั้นที่สุดชนะ คุณอาจสมมติว่าอินพุตมีรูปแบบที่ดีและบรรทัดที่มีช่องว่างน้อยกว่าสี่ช่อง (หลังจากแทนที่แท็บ) อาจส่งผลให้เกิดพฤติกรรมที่ไม่ได้กำหนด
คำปฏิเสธ
กลยุทธ์การจัดรูปแบบ "ยอดเยี่ยม" นี้ได้รับความอนุเคราะห์จาก Geobits และทำซ้ำโดยได้รับอนุญาต ไม่มีโปรแกรมเมอร์คนใดได้รับอันตรายในระหว่างการสร้างความท้าทายนี้
/*
หรืออาจสันนิษฐานได้ว่าไม่ใช่ แฟ้มแหล่ง c ++ จะได้รับการทดสอบที่ดีกว่าเพราะหลายความคิดเห็นของตน/* */
อาจจะทำลายคำตอบบางอย่างที่เข้ามาแทนที่แรกและครั้งสุดท้ายของช่องว่างนำที่มีแล้วดำเนินการต่อไปเพื่อเติมเต็มช่องว่างด้วย/
*
/* */
รหัส C ++ ที่เหมือนกันแต่คราวนี้ที่จุดเริ่มต้นของบรรทัด ตามสเป็คของคุณควรทิ้งไว้ตามที่เป็น นี่คือกับดักเป็นและเห็นคำตอบที่ผิดอยู่แล้วว่า regex เช่นพูด/\** /
ที่ใช้ในการเติมเต็มช่องว่างระหว่าง // /***/
กับดอกจันจะเปิดสายเข้า /*//*/
ผมเคยเห็นการแปลงนี้เป็นอย่างดี ฉันถือว่าทั้งคู่ไม่ถูกต้อง