Lisp chung (SBCL), 52 byte
(format`,t"~[Programming Puzzles~;Code~@TGolf~]"0 1)
Bản in Programming Puzzles
(format`,t"~[ProgrammingPuzzles~;Code~@TGolf~]"01)
Bản in Code Golf
Ung dung:
(format t "~[Programming Puzzles~;Code Golf~]" 0 1)
Giải thích:
Bí quyết cơ bản đến từ cách #'format
hoạt động trong Common Lisp.
Trong CL, hầu hết các khoảng trắng có thể được bỏ qua miễn là không có sự mơ hồ về nơi mã thông báo bắt đầu hoặc kết thúc. Thủ thuật đầu tiên là phân tách các biểu tượng format
và t
. Tôi đã phải kết thúc rõ ràng format
biểu tượng mà không thay đổi cách t
giải thích. May mắn thay, `trong CL kết thúc mã thông báo trước đó trước khi nó được xử lý và ,
hủy bỏ hiệu ứng của` (` được sử dụng để thực hiện tạo khuôn mẫu, trong đó biểu thức tiếp theo sau nó được "trích dẫn", nhưng bất kỳ biểu thức con nào có tiền tố,
đều được đánh giá và kết quả được bao gồm trong khuôn mẫu, vì vậy `, gần như không có).
Đối số thứ ba format
là chuỗi mẫu.format
tương tự như printf trong C, nhưng có các chỉ thị định dạng mạnh hơn nhiều và sử dụng ~ để chỉ ra chúng thay vì%. ~ [và ~] cho phép bạn chọn giữa nhiều tùy chọn để in, với ~; tách chúng ra Một đối số bổ sung được cung cấp cho định dạng - chỉ mục số mà bạn muốn in. Để đảm bảo rằng "" trong Code Golf tồn tại, tôi đã sử dụng chỉ thị lập bảng ~ T, được sử dụng để chèn khoảng trắng, thường để căn chỉnh văn bản vào các cột. ~ @ T là một biến thể chỉ chèn một số khoảng trắng nhất định, mặc định là 1.
Cuối cùng, có hai đối số định dạng- 0 và 1. Trước khi xóa khoảng trắng, 0 được sử dụng bởi ~ [~; ~] để chọn "Câu đố lập trình" và bỏ đối số định dạng bổ sung (1) không chắc chắn làm thế nào tiêu chuẩn bỏ các đối số định dạng bổ sung, nhưng điều này hoạt động trên Steel Bank Common Lisp). Sau khi khoảng trắng được xóa, chỉ có một đối số (01) chọn "Code Golf" thay thế.
Code Golf
cũng sẽ được loại bỏ, những gì về một trongProgramming Puzzles
.