Mở đầu là một ngôn ngữ lập trình bí truyền, có rất ít, nhưng bất thường, những hạn chế về những gì cấu thành một chương trình hợp lệ. Bất kỳ khối văn bản ASCII có thể in nào ("khối" có nghĩa là các dòng của ASCII có thể in được phân tách bằng các dòng mới - 0x0A) là hợp lệ với điều kiện:
- Mỗi cột (dọc) của văn bản chứa tối đa một
(
và)
. - Bỏ qua vị trí thẳng đứng của chúng,
(
và)
được cân bằng, nghĩa là, mỗi cái(
được ghép với chính xác một)
bên phải của nó và ngược lại.
Viết chương trình hoặc hàm, được cung cấp một chuỗi chứa ASCII có thể in và dòng mới, xác định xem nó có cấu thành chương trình Prelude hợp lệ hay không. Bạn có thể nhận đầu vào thông qua STDIN (hoặc thay thế gần nhất), đối số dòng lệnh hoặc đối số hàm. Kết quả có thể được trả về hoặc in thành STDOUT, sử dụng bất kỳ hai giá trị trung thực / giả mạo cố định nào bạn chọn.
Bạn không được cho rằng đầu vào là hình chữ nhật.
Đây là mã golf, vì vậy bài nộp ngắn nhất (tính bằng byte) sẽ thắng.
Ví dụ
Sau đây là các chương trình Prelude hợp lệ (trên thực tế, chúng thậm chí là các chương trình Prelude thực sự ):
?1-(v #1)-
1 0v ^(# 0)(1+0)#)!
(#) ^#1-(0 #
1(# 1) v # - 1+)
vv (##^v^+
? v-(0 # ^ #)
?
1+ 1-!
Và đây là một số đầu vào, tất cả đều không hợp lệ :
#(#(##)##)##(
)##(##(##)#)#
#(#)
)###
#(##
(##)
(##)
(#)#
(##)
(###
#(#)
(##)
#(#)
###)
#()#
()##
#(#)##
###
###(#)
)
và 2 (
. Không nên chỉ là 1 trên mỗi dòng?