पृष्ठभूमि
फाइबोनैचि टाइलिंग दो खंडों का उपयोग करके (1D) लाइन की एक टाइलिंग है: एक छोटा, S और एक लंबा, L (उनकी लंबाई का अनुपात स्वर्णिम अनुपात है, लेकिन यह इस चुनौती के लिए प्रासंगिक नहीं है)। इन दो प्रोटोटाइल्स का उपयोग करके वास्तव में एक फिबोनाची टाइलिंग करने के लिए, निम्नलिखित शर्तों को पूरा करना होगा:
- टाइलिंग में बाद का एसएस शामिल नहीं होना चाहिए ।
- टाइलिंग में एलएलएल नहीं होना चाहिए ।
- यदि निम्नलिखित सभी बारीकियों को पूरा करते हुए एक नया टाइलिंग बनाया जाता है, तो परिणाम अभी भी एक फिबोनाची टाइलिंग होना चाहिए:
- एलएल → एस
- एस → एल
- एल → (खाली स्ट्रिंग)
आइए कुछ उदाहरण देखें:
SLLSLLSLLSLS
यह एक मान्य टाइलिंग की तरह दिखता है, क्योंकि इसमें दो * S * s या तीन * L * s शामिल नहीं हैं, लेकिन चलो रचना करते हैं:
LSLSLSLL
यह अभी भी ठीक लग रहा है, लेकिन अगर हम इसे फिर से बनाते हैं, तो हम प्राप्त करते हैं
LLLS
जो एक वैध फाइबोनैचि टाइलिंग नहीं है। इसलिए, पिछले दो अनुक्रम या तो मान्य झुकाव नहीं थे।
दूसरी ओर, अगर हम शुरुआत करते हैं
LSLLSLSLLSLSLL
और बार-बार इसे छोटे दृश्यों के लिए लिखें
LSLLSLLS
LSLSL
LL
S
सभी परिणाम वैध फाइबोनैचि झुकाव हैं, क्योंकि हम उन तारों के अंदर कहीं भी एसएस या एलएलएल प्राप्त नहीं करते हैं।
आगे पढ़ने के लिए, एक थीसिस है जो इस टाइलिंग को पेनड्रिल टिलिंग्स के लिए एक सरल 1D सादृश्य के रूप में उपयोग करता है।
चुनौती
एक प्रोग्राम या फ़ंक्शन लिखें, जो एक गैर-नकारात्मक पूर्णांक एन दिया गया है , एन अक्षर (होने S
या होने L
) वाले स्ट्रिंग्स के रूप में सभी वैध फाइबोनैचि टाइलिंग लौटाता है ।
आप फ़ंक्शन तर्क, STDIN या ARGV के माध्यम से इनपुट ले सकते हैं और परिणाम को प्रिंट या प्रिंट कर सकते हैं।
यह कोड गोल्फ है, सबसे छोटा उत्तर (बाइट्स में) जीतता है।
उदाहरण
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
?