แก้ไข: หากคุณใช้เสียงกระเพื่อมฉันได้ให้แนวทางบางอย่างที่ด้านล่างในการนับไบต์
วัตถุประสงค์:สร้างฟังก์ชันที่สั้นที่สุดที่แยกสตริงที่ไม่ใช่ตัวเลขและส่งกลับอาร์เรย์ที่ประกอบด้วยตัวเลขเท่านั้นในแต่ละสตริงโดยไม่ต้องใช้นิพจน์ทั่วไปใด ๆ เลขศูนย์นำหน้าจะรวมอยู่ในแต่ละสาย
อันดับปัจจุบัน (แยกเป็นหมวดหมู่):
- C / C ++ / C # / Java: 68 (C) ....
- GolfScript / APL / J: 13 (APL)
- อื่น ๆ ทั้งหมด: 17 (Bash, use
tr), 24 (Ruby)
กฎ:
(ฉันขอโทษสำหรับความยาว)
- รูปแบบต้องเป็นฟังก์ชันที่มีอาร์กิวเมนต์สตริงเดี่ยว อาจมีการเพิ่มอาร์กิวเมนต์เพิ่มเติมได้สองรายการหากจำเป็นสำหรับการส่งคืนอาเรย์ที่เหมาะสม (เช่น sh / csh / DOS Batch ต้องการการอ้างอิงตัวแปรเพิ่มเติมเพื่อกลับมาเป็นต้น)
- การประกาศฟังก์ชั่นหลักไม่นับรวมและจะไม่นำเข้าไลบรารีมาตรฐานอื่น ๆ `# include`s` import`s และ `using`s ไม่นับ ทุกอย่างอื่นทำ ซึ่งรวมถึงฟังก์ชั่น `# define` และผู้ช่วย ขอโทษสำหรับความสับสน. อ้างถึงสิ่งนี้เป็นคำแนะนำที่เป็นประโยชน์ว่าอะไร / ไม่นับ (เขียนในรูปแบบ C-style)
// ไม่นับรวมทั้งหมดอาจถูกละเว้นยกเว้น // ไม่ชัดเจนเหมือนครึ่งหนึ่งของไลบรารี่มาตรฐานของ Java #include <stdio.h> นำเข้า some.builtin.Class // ไม่นับดูด้านบน #define printf p // นับรวมทั้งหมด / * คำสั่งตัวประมวลผลล่วงหน้าอื่น ๆ นับรวม * / int i = 0; // นับ someFunction (); // นับ ถ่าน [] [] myMainSplitFunction (ถ่าน [] [] อาร์เรย์) {// ไม่นับ // ทุกสิ่งในที่นี้นับ return returnArray; // แม้แต่สิ่งนี้ก็นับ } // ไม่นับ / * ทุกอย่างในที่นี้นับรวมถึงการประกาศ * / ถ่าน [] [] สตริง someHelperFunction (ถ่าน []) { // stuff } // แม้แต่สิ่งนี้ก็นับ - เอาต์พุตจะต้องเป็นอาเรย์สตริงหรือคล้ายกัน (รายการ Array ใน Java และที่คล้ายกันนั้นเป็นที่ยอมรับได้) ตัวอย่างของการส่งออกได้รับการยอมรับ:
String[],char[][],Array,ListและArray(วัตถุ) - อาร์เรย์ต้องมีเพียงค่าดั้งเดิมของสตริงที่มีความยาวผันแปรหรือวัตถุสตริง ไม่ควรมีสตริงว่างในการส่งคืนโดยมีข้อยกเว้นด้านล่าง หมายเหตุ:สตริงจะต้องมีสตริงของการจับคู่แบบต่อเนื่องเช่นอินพุตตัวอย่างและเอาต์พุตด้านล่าง
- หากไม่มีการจับคู่ดังนั้นฟังก์ชั่นร่างกายควรกลับมา
nullอาร์เรย์ / รายการที่ว่างเปล่าหรืออาร์เรย์ / รายการที่มีสตริงที่ว่างเปล่า - ไม่อนุญาตให้ใช้ไลบรารีภายนอก
- จุดสิ้นสุดของบรรทัด DOS จะนับเป็นหนึ่งไบต์ไม่ใช่สอง (รวมอยู่ในเมตาดาต้า แต่ต้องการเน้น)
- และกฎที่ใหญ่ที่สุดที่นี่: ไม่อนุญาตให้มีการแสดงออกปกติ
นี่เป็นคำถามเกี่ยวกับการเล่นรหัสดังนั้นขนาดที่เล็กที่สุดชนะ โชคดี!
และนี่คือตัวอย่างอินพุตและเอาต์พุต (ที่มี Escape C-style):
อินพุต: "abc123def456" ผลลัพธ์: ["123", "456"] อินพุต: "aitew034snk582: 3c" เอาต์พุต: ["034", "582", "3"] อินพุต: "as5493tax54 \\ 430-52@g9.fc" เอาท์พุท: ["5493", "54", "430", "52", "9"] อินพุต: "sasprs] tore \" re \\ forz " เอาต์พุต: null, [], [""] หรือคล้ายกัน
โปรดระบุจำนวนไบต์ที่ใช้โดยคำตอบของคุณและเช่นเคยมีความสุขกับการเล่นกอล์ฟ!
แนวทางสำหรับเสียงกระเพื่อม
นี่คือสิ่งที่ไม่และไม่นับในภาษา Lisp:
;;; ตัวเลือกที่ 1 (defun แยก - สตริง (ab); ไม่นับ (เนื้อหา) ;;; ทุกสิ่งในที่นี้นับ ); ไม่นับ ;;; ตัวเลือก 2 (defun แยกสตริง (สตริง & aux (เริ่มต้น 0) (สิ้นสุด 0)) ไม่นับ (เนื้อหา) ;;; ทุกสิ่งในที่นี้นับ ); ไม่นับลูกแกะอื่น ๆ ทั้งหมดนับรวมเข้ากับจำนวนไบต์