ภาษาอังกฤษและภาษาการเขียนโปรแกรมส่วนใหญ่เขียนและอ่านจากซ้ายไปขวาบนลงล่าง แต่ไม่จำเป็นเลย
ในความเป็นจริงสำหรับบล็อกข้อความ
ABC
DEF
ฉันสามารถคิดถึงวิธีที่เกี่ยวข้องแปดวิธีที่อาจถูกอ่าน:
- จากซ้ายไปขวา, จากบนลงล่าง (LTR-TTB):
ABCDEF
- จากบนลงล่างซ้ายไปขวา (TTB-LTR):
ADBECF
- จากซ้ายไปขวา, จากบนลงล่าง (LTR-BTT):
DEFABC
- จากล่างขึ้นบน, จากซ้ายไปขวา (BTT-LTR):
DAEBFC
- จากขวาไปซ้าย, จากบนลงล่าง (RTL-TTB):
CBAFED
- จากบนลงล่างขวาไปซ้าย (TTB-RTL):
CFBEAD
- จากขวาไปซ้าย, จากบนลงล่าง (RTL-BTT):
FEDCBA
- จากล่างขึ้นบน, จากขวาไปซ้าย (BTT-RTL):
FCEBDA
ท้าทาย
เขียนบล็อกสี่เหลี่ยมของข้อความที่สามารถอ่านได้ในแปดวิธีข้างต้นเป็นโปรแกรมบรรทัดเดียวแปดรายการในภาษาที่คุณเลือก แต่ละโปรแกรมเหล่านี้ควรแสดงผลเป็นจำนวนเต็มที่แตกต่างกันจากหนึ่งถึงแปด
ไม่สำคัญว่าทิศทางการอ่านจะแสดงผลที่หมายเลขใด แต่ไม่จำเป็นต้องจับคู่กับตัวเลขด้านบน ตัวอย่างเช่นหากบล็อกข้อความของคุณยังอยู่
ABC
DEF
แล้วโปรแกรมABCDEF
การส่งออกอาจ5
และFEDCBA
การส่งออกอาจ2
และอื่น ๆ หกโปรแกรมที่จะส่งออก1
, 3
, 4
, 6
, 7
และ8
ในการสั่งซื้อบางส่วน
บล็อกข้อความอาจจะมีตัวอักษรใด ๆ ยกเว้นจุดสิ้นสุดบรรทัด
ผลลัพธ์ควรไปที่ stdout หรือทางเลือกอื่นที่คล้ายกันหากภาษาของคุณไม่มี stdout ที่เหมาะสม ไม่มีอินพุต คุณอาจถือว่าโปรแกรมทำงานในสภาพแวดล้อม REPL
Pietu1998เขียนJSFiddle อย่างเอาเป็นเอาตายที่ให้ 8 โปรแกรมบรรทัดเดียวที่แตกต่างกันเมื่อได้รับบล็อกข้อความ ฉันได้ทำให้มันเป็นตัวอย่างสแต็ก:
<script>function f(n){n=n.split("\n");var e=n.map(function(n){return n.length}).sort()[n.length-1];n=n.map(function(n){return(n+Array(e+1).join(" ")).substring(0,e)});var t=n[0].split("").map(function(e,t){return n.map(function(n){return n[t]}).join("")});n=[n.join(""),n.reverse().join(""),t.join(""),t.reverse().join("")],n=n.concat(n.map(function(n){return n.split("").reverse().join("")})),document.getElementById("a").innerHTML=n.map(function(n,e){return document.getElementById("b").checked?n+" "+"LLTTRRBB"[e]+"T"+"RRBBLLTT"[e]+"-"+"TBLRBTRL"[e]+"T"+"BTRLTBLR"[e]:n}).join("\n")}</script><textarea onkeyup="f(this.value)" id="c" placeholder="Code"></textarea><br/><input type="checkbox" id="b" onchange="f(document.getElementById('c').value)" checked/> <label for="b">Show directions</label><br/><pre id="a"></pre>
คุณยังสามารถหามาร์ตินรุ่น CJam ที่นี่
เกณฑ์การให้คะแนน
คะแนนของคุณคือพื้นที่ของบล็อกข้อความ (ความกว้างคูณความสูง) การส่งที่มีคะแนนต่ำสุดชนะ (โดยพื้นฐานแล้วรหัสที่เล็กที่สุดจะเป็นผู้ชนะดังนั้นรหัส tag -golf ) Tiebreaker จะไปยังการส่งที่โพสต์ก่อนหน้านี้
ตัวอย่างคือ 2 โดย 3 ดังนั้นคะแนนของมันคือ 6 คะแนนน้อยกว่า 4 (2 โดย 2) เป็นไปไม่ได้เพราะโปรแกรม 8 โปรแกรมบางโปรแกรมจะเหมือนกันและไม่สามารถแสดงค่าที่แตกต่างกันสองค่า
String.prototype.repeat()
จะยังใหม่อยู่ ยังยืนยันว่าจะทำงานใน IE ทันที ซอใหม่