EDIT: Nếu bạn đang sử dụng Lisp, tôi đã đưa ra một số hướng dẫn ở phía dưới trong việc đếm byte.
Mục tiêu: Tạo hàm ngắn nhất phân tách một chuỗi ở dạng không có chữ số và trả về một mảng chỉ gồm các chữ số trong mỗi chuỗi, không sử dụng bất kỳ biểu thức chính quy nào. Các số 0 đứng đầu sẽ được bao gồm trong mỗi chuỗi.
Bảng xếp hạng hiện tại (được phân loại trong danh mục):
- C / C ++ / C # / Java: 68 (C) ....
- GolfScript / APL / J: 13 (APL)
- Tất cả những người khác: 17 (Bash, sử dụng
tr
), 24 (Ruby)
Quy tắc:
(Tôi xin lỗi vì sự dài dòng)
- Định dạng phải là một hàm với một đối số chuỗi đơn. Có thể thêm tối đa hai đối số bổ sung nếu cần thiết cho sự trở lại đúng của mảng (ví dụ: sh / csh / DOS Batch cần một tham chiếu biến phụ để trả về, v.v.).
- Khai báo hàm chính không tính và cũng không nhập các thư viện chuẩn khác. `# bao gồm`, `import` và` using` không được tính. Mọi thứ khác làm. Điều này không bao gồm các hàm `# định nghĩa và hàm trợ giúp. Xin lỗi vì sự nhầm lẫn. Hãy xem đây là một hướng dẫn hữu ích về những gì không / không tính (được viết bằng cú pháp kiểu C)
// không được tính vào tổng số, có thể được bỏ qua trừ khi // không rõ ràng, giống như một nửa thư viện chuẩn của Java. #inc loại <stdio.h> nhập một số.builtin.Class // không được tính, xem ở trên #define printf p // tính vào tổng số / * Bất kỳ chỉ thị tiền xử lý nào khác, v.v. * / int i = 0; // đếm một số chức năng (); // đếm char [] [] myMainSplitFunction (char [] [] mảng) {// không được tính // Mọi thứ ở đây đều có giá trị return returnArray; // Ngay cả điều này cũng được tính. } // không tính / * Mọi thứ ở đây đều được tính, bao gồm cả khai báo * / char [] [] someHelperFunction (char [] chuỗi) { // đồ đạc } // thậm chí số này còn được tính
- Đầu ra phải là một chuỗi chuỗi hoặc tương tự (Danh sách mảng trong Java và tương tự đều được chấp nhận). Ví dụ về sản lượng được chấp nhận:
String[]
,char[][]
,Array
,List
, vàArray
(object). - Mảng phải chỉ chứa các nguyên hàm chuỗi có độ dài thay đổi hoặc các đối tượng chuỗi. Không có chuỗi trống nào có mặt trong phần trả về, với ngoại lệ bên dưới. Lưu ý: các chuỗi phải chứa một chuỗi các kết quả khớp liên tiếp, chẳng hạn như đầu vào và đầu ra ví dụ bên dưới.
- Nếu không có kết quả khớp, thì thân hàm sẽ trả về
null
, một mảng / danh sách trống hoặc một mảng / danh sách chứa một chuỗi rỗng. - Không cho phép thư viện bên ngoài.
- Kết thúc dòng DOS được tính là một byte, không phải hai (đã được bao phủ trong meta, nhưng cần nhấn mạnh)
- Và quy tắc lớn nhất ở đây: không cho phép biểu thức chính quy.
Đây là một câu hỏi mã golf , vì vậy kích thước nhỏ nhất sẽ thắng. Chúc may mắn!
Và đây là một số ví dụ đầu vào và đầu ra (với lối thoát kiểu C):
Đầu vào: "abc123def456" Đầu ra: ["123", "456"] Đầu vào: "aitew034snk582: 3c" Đầu ra: ["034", "582", "3"] Đầu vào: "as5493tax54 \\ 430-52@g9.fc" Đầu ra: ["5493", "54", "430", "52", "9"] Đầu vào: "sasprs] xé \" re \\ forz " Đầu ra: null, [], [""] hoặc tương tự
Vui lòng đặt bao nhiêu byte được sử dụng bởi câu trả lời của bạn và như mọi khi, chơi golf vui vẻ!
Hướng dẫn cho Lisp
Đây là những gì không và không được tính trong phương ngữ Lisp:
;;; lựa chọn 1 (defun trích xuất chuỗi (ab); Không tính (đồ đạc) ;;; Mọi thứ ở đây đều có giá trị ); Không tính ;;; Lựa chọn 2 (defun trích xuất chuỗi (chuỗi & phụ (bắt đầu 0) (kết thúc 0)); Không tính (đồ đạc) ;;; Mọi thứ ở đây đều có giá trị ); Không được tính.Tất cả các lambdas khác hoàn toàn được tính vào số byte.