Lý lịch
Ốp lát Fibonacci là một lát gạch của dòng (1D) sử dụng hai phân đoạn: một đoạn ngắn, S và một đoạn dài, L (tỷ lệ chiều dài của chúng là tỷ lệ vàng, nhưng không liên quan đến thách thức này). Để ốp lát sử dụng hai prototile này để thực sự là một lát gạch Fibonacci, các điều kiện sau đây phải được đáp ứng:
- Ốp lát không được chứa SS sau đó .
- Ốp lát không được chứa LLL sau đó .
- Nếu một lát gạch mới được tạo bằng cách thực hiện tất cả các thay thế sau đây, kết quả vẫn phải là một lát gạch Fibonacci:
- LL → S
- S → L
- L → (chuỗi trống)
Hãy xem xét một số ví dụ:
SLLSLLSLLSLS
Điều này trông giống như một ốp lát hợp lệ, bởi vì nó không chứa hai * S * s hoặc ba * L * s nhưng hãy thực hiện bố cục:
LSLSLSLL
Điều đó vẫn có vẻ tốt, nhưng nếu chúng ta sáng tác lại, chúng ta sẽ nhận được
LLLS
đó không phải là một lát gạch Fibonacci hợp lệ. Do đó, hai chuỗi trước đó cũng không hợp lệ.
Mặt khác, nếu chúng ta bắt đầu với
LSLLSLSLLSLSLL
và liên tục soạn nó thành các chuỗi ngắn hơn
LSLLSLLS
LSLSL
LL
S
tất cả các kết quả là độ nghiêng Fibonacci hợp lệ, bởi vì chúng tôi không bao giờ có được SS hoặc LLL ở bất kỳ đâu trong các chuỗi đó.
Để đọc thêm, có một luận án sử dụng ốp này như một tương tự 1D đơn giản với nghiêng Penrose.
Các thách thức
Viết chương trình hoặc hàm, với một số nguyên N không âm , trả về tất cả các giá trị Fibonacci hợp lệ dưới dạng các chuỗi chứa N ký tự (đang S
hoặc L
).
Bạn có thể nhận đầu vào thông qua đối số chức năng, STDIN hoặc ARGV và trả lại hoặc in kết quả.
Đây là mã golf, câu trả lời ngắn nhất (tính bằng byte) sẽ thắng.
Ví dụ
N Output
0 (an empty string)
1 S, L
2 SL, LS, LL
3 LSL, SLS, LLS, SLL
4 SLSL, SLLS, LSLS, LSLL, LLSL
5 LLSLL, LLSLS, LSLLS, LSLSL, SLLSL, SLSLL
...
8 LLSLLSLS, LLSLSLLS, LSLLSLLS, LSLLSLSL, LSLSLLSL, SLLSLLSL, SLLSLSLL, SLSLLSLL, SLSLLSLS
LSLSL
->LL
?