Các số Catalan ( OEIS ) là một chuỗi các số tự nhiên thường xuất hiện trong tổ hợp.
Số Catalan thứ n là số từ Dyck (chuỗi cân bằng của dấu ngoặc đơn hoặc dấu ngoặc như [[][]]
; được định nghĩa chính thức là một chuỗi sử dụng hai ký tự a và b sao cho bất kỳ chuỗi con nào bắt đầu từ đầu có số ký tự lớn hơn hoặc bằng số gồm b ký tự và toàn bộ chuỗi có cùng số ký tự a và b) với độ dài 2n. Số Catalan thứ n (cho n> = 0) cũng được xác định rõ ràng là:
Bắt đầu từ n = 0, 20 số Catalan đầu tiên là:
1, 1, 2, 5, 14, 42, 132, 429, 1430, 4862, 16796, 58786, 208012, 742900, 2674440, 9694845, 35357670, 129644790, 477638700, 1767263190...
Thử thách
Viết chương trình hoặc hàm đầy đủ lấy số nguyên n không âm qua STDIN hoặc một phương án thay thế chấp nhận được và xuất ra số Catalan thứ n. Chương trình của bạn phải hoạt động tối thiểu cho đầu vào 0-19.
Tôi / O
Đầu vào
Chương trình của bạn phải lấy đầu vào từ STDIN, đối số chức năng hoặc bất kỳ lựa chọn thay thế nào được chấp nhận cho mỗi bài đăng meta này. Bạn có thể đọc số được nhập dưới dạng số thập phân chuẩn, đại diện đơn nguyên hoặc byte.
- Nếu (và chỉ nếu) ngôn ngữ của bạn không thể lấy đầu vào từ STDIN hoặc bất kỳ thay thế nào được chấp nhận, nó có thể lấy đầu vào từ một biến mã hóa cứng hoặc tương đương phù hợp trong chương trình.
Đầu ra
Chương trình của bạn phải xuất số Catalan thứ n sang STDOUT, kết quả chức năng hoặc bất kỳ lựa chọn thay thế nào được chấp nhận cho mỗi bài đăng meta này. Bạn có thể xuất số Catalan trong biểu diễn thập phân tiêu chuẩn, biểu diễn đơn hoặc byte.
Đầu ra phải bao gồm số Catalan bị khủng bố, tùy ý theo sau bởi một hoặc nhiều dòng mới. Không thể tạo đầu ra nào khác, ngoại trừ đầu ra không đổi của trình thông dịch ngôn ngữ của bạn không thể bị chặn (chẳng hạn như lời chào, mã màu ANSI hoặc thụt lề).
Đây không phải là tìm ngôn ngữ ngắn nhất. Đây là về việc tìm kiếm chương trình ngắn nhất trong mọi ngôn ngữ. Do đó, tôi sẽ không chấp nhận một câu trả lời.
Trong thử thách này, các ngôn ngữ mới hơn thử thách được chấp nhận miễn là chúng có triển khai. Được phép (và thậm chí được khuyến khích) tự viết trình thông dịch này cho một ngôn ngữ chưa được thực hiện trước đó. Ngoài ra, tất cả các quy tắc tiêu chuẩn của golf-code phải được tuân theo. Đệ trình trong hầu hết các ngôn ngữ sẽ được ghi bằng byte trong một mã hóa có sẵn từ trước (thường là UTF-8). Cũng lưu ý rằng các tích hợp để tính số Catalan thứ n được cho phép.
Mục lục
Đoạn trích đoạn ở cuối bài này tạo ra danh mục từ các câu trả lời a) dưới dạng danh sách các giải pháp ngắn nhất cho mỗi ngôn ngữ và b) dưới dạng bảng xếp hạng tổng thể.
Để đảm bảo rằng câu trả lời của bạn hiển thị, vui lòng bắt đầu câu trả lời của bạn bằng một tiêu đề, sử dụng mẫu Markdown sau:
## Language Name, N bytes
nơi N
là kích thước của trình của bạn. Nếu bạn cải thiện điểm số của mình, bạn có thể giữ điểm số cũ trong tiêu đề, bằng cách đánh bại chúng thông qua. Ví dụ:
## Ruby, <s>104</s> <s>101</s> 96 bytes
Nếu bạn muốn bao gồm nhiều số trong tiêu đề của mình (ví dụ: vì điểm của bạn là tổng của hai tệp hoặc bạn muốn liệt kê riêng các hình phạt cờ của thông dịch viên), hãy đảm bảo rằng điểm thực tế là số cuối cùng trong tiêu đề:
## Perl, 43 + 2 (-p flag) = 45 bytes
Bạn cũng có thể đặt tên ngôn ngữ thành liên kết sau đó sẽ hiển thị trong đoạn trích:
## [><>](http://esolangs.org/wiki/Fish), 121 bytes