जब छात्रों को पहली बार गणितीय प्रेरण की प्रूफ तकनीक के बारे में पढ़ाया जाता है , तो एक सामान्य उदाहरण एल आकार वाले ट्रोमिनो के साथ 2 एन × 2 एन ग्रिड को टाइल करने की समस्या है , जिससे एक पूर्व निर्धारित ग्रिड स्थान खाली हो जाता है। (एन कुछ nonnegative पूर्णांक है।)
यदि आप पहले से ही इसे नहीं जानते हैं तो मैं आपको प्रमाण पर जाने के लिए इसे छोड़ दूंगा। कई संसाधन हैं जो इस पर चर्चा करते हैं।
आपका काम यहां एक प्रोग्राम लिखना है जो N के लिए एक मूल्य लेता है, साथ ही ग्रिड स्पेस के निर्देशांक खाली छोड़ने के लिए, और परिणामस्वरूप ट्रॉमिनो टाइल के ग्रिड के ASCII प्रतिनिधित्व को प्रिंट करता है।
चरित्र O
खाली जगह को भर देगा, और हमारे ट्रोमिनो के 4 घुमाव इस तरह दिखाई देंगे:
|
+-
|
-+
-+
|
+-
|
(हां, यह अस्पष्ट हो सकता है जो कि कुछ व्यवस्थाओं के लिए और +
जिसके साथ जाता है , लेकिन यह ठीक है।)-
|
आपका प्रोग्राम N = 0 (1 × 1 ग्रिड के लिए) के लिए कम से कम N = 8 (256 × 256 ग्रिड के लिए) तक काम करना चाहिए। इसे x और y मान दिए जाएंगे जो इसके लिए निर्देशांक हैं O
:
- x क्षैतिज अक्ष है। x = 1 बाईं ग्रिड एज है, x = 2 N दायां ग्रिड एज है।
- y ऊर्ध्वाधर अक्ष है। y = 1 शीर्ष ग्रिड एज है, y = 2 N निचला ग्रिड एज है।
X और y दोनों हमेशा [1, 2 N ] श्रेणी में होते हैं।
तो किसी दिए गए N, x, और y के लिए, आपके प्रोग्राम को 2 N × 2 N ग्रिड प्रिंट करना चाहिए , L- आकार के ट्रोमिनो के साथ पूरी तरह से टाइल किया हुआ होगा, x को छोड़कर, y ग्रिड समन्वय करेंगे जो कि एक होगा O
।
उदाहरण
यदि N = 0 है, तो x और y दोनों का 1 होना चाहिए। आउटपुट बस है
O
यदि N = 1, x = 1, और y = 2, तो आउटपुट होगा
-+
O|
N = 2, x = 3, y = 2:
+--+
||O|
|+-|
+--+
N = 2, x = 4, y = 1:
+-|O
||+-
|+-|
+--+
N = 3, x = 3, y = 6 ( इस पृष्ठ पर चित्र ):
+--++--+
|+-||-+|
||+--+||
+-|-+|-+
+--+||-+
||O|-+||
|+-||-+|
+--++--+
विवरण
- आप एक फंक्शन लिख सकते हैं जो पूरे प्रोग्राम को लिखने के बजाय 3 पूर्णांक लेता है। इसे ग्रिड स्ट्रिंग को प्रिंट या वापस करना चाहिए।
- स्टड, कमांड लाइन से इनपुट लें, (या फ़ंक्शन लिखता है तो फ़ंक्शन आर्गन्स)।
- आउटपुट में वैकल्पिक रूप से एक एकल प्रशिक्षण नई पंक्ति हो सकती है।
- आपको उस टाइलिंग विधि का उपयोग करने की आवश्यकता नहीं है जो सामान्य रूप से सुझाव देती है। यह केवल मायने रखता है कि ग्रिड एल के आकार के ट्रोमिनो से भर जाता है
O
। (ट्रोमिनो को ग्रिड सीमा से काटा या नहीं जा सकता है।)
बाइट्स में सबसे छोटा कोड जीतता है। टाईब्रेकर पहले की पोस्ट है। ( हैंडी बाइट काउंटर। )
if p!=i
; अंदर की सूची की.join()
जरूरत नहीं है[]
;(1-i%2)
के रूप में किया जा सकता है~i%2
; आप केt,l,a=[],...
रूप में लिखने के लिए iterable unpacking का उपयोग कर सकते हैं*t,l,a=...
; क्योंकि नकारात्मक नहीं हो सकता केif n==0
रूप में जाँच की जा सकती है ; फाइनल शायद प्रत्येक तत्व को प्रिंट करके किया जा सकता है, क्योंकि सामान्य नियम रिटर्न के स्थान पर प्रिंटिंग की अनुमति देते हैं; हो सकता है क्योंकि नॉनजरो वैल्यूज़ ट्रू हैं।if n<1
n
"\n".join
if p!=i
if p-i