2D सूचियाँ

Python सूचियाँ विभिन्न प्रकार के तत्वों को शामिल कर सकती हैं। इनमें पूर्णांक (integers), स्ट्रिंग्स (strings), फ्लोटिंग-पॉइंट नंबर आदि हो सकते हैं। ये अन्य सूचियों को भी समाहित कर सकती हैं:

l = [4, 5, 'hi', 3.14, ['how', 'are', 'you', '?'], 64]
print(l[2])       # hi
print(l[2][0])    # h
print(l[-1])      # 64
print(l[4])       # ['how', 'are', 'you', '?']
inner = l[4]
print(inner[1])   # are
print(l[4][1])    # are

यह एक उदाहरण है जिसमें Python की एक सूची के अंदर एक अन्य सूची है। नेस्टेड सूचियों के साथ ऑपरेशन्स बाहरी सूची की तरह ही काम करते हैं। आप append के साथ तत्व जोड़ सकते हैं, या pop के साथ हटा सकते हैं। इसलिए इंडेक्सिंग उसी तरह काम करेगी जैसे हम एक सूची के भीतर से नेस्टेड सूची तक पहुंच रहे हों।

स्ट्रिंग्स की एक सूची होने के समान, जहां हम प्रत्येक तत्व को [index] का उपयोग करके पहुंच सकते हैं:

greetings = [
    'hi',
    'hello',
    'hey there',
    'hey!'
]


print(greetings[0])
# hi
print(greetings[2])
# hey there

हम इस तरह से संख्याओं की एक मैट्रिक्स भी रख सकते हैं:

multiplication_table = [
    [1, 2,  3,  4,  5,  6,  7,  8,  9],
    [2, 4,  6,  8,  10, 12, 14, 16, 18],
    [3, 6,  9,  12, 15, 18, 21, 24, 27],
    [4, 8,  12, 16, 20, 24, 28, 32, 36],
    [5, 10, 15, 20, 25, 30, 35, 40, 45],
    [6, 12, 18, 24, 30, 36, 42, 48, 54],
    [7, 14, 21, 28, 35, 42, 49, 56, 63],
    [8, 16, 24, 32, 40, 48, 56, 64, 72],
    [9, 18, 27, 36, 45, 54, 63, 72, 81]
]

print(multiplication_table[0])
# [1, 2, 3, 4, 5, 6, 7, 8, 9]
print(multiplication_table[2])
# [3, 6, 9, 12, 15, 18, 21, 24, 27]

इस तरह, हम प्रत्येक पंक्ति को अलग-अलग पहुंच सकते हैं। इसके बाद, हम पंक्ति के प्रत्येक तत्व को उसी तरह पहुंच सकते हैं जैसे हम किसी सूची के तत्व तक पहुंचते हैं:

print(multiplication_table[2])     # [3, 6, 9, 12, 15, 18, 21, 24, 27]

l = multiplication_table[2]        # अब l है [3, 6, 9, 12, 15, 18, 21, 24, 27]
print(l[0])                        # 3
print(l[1])                        # 6
print(l[-1])                       # 27

# या सीधे तत्वों तक पहुंचें
print(multiplication_table[2][0])  # 3
print(multiplication_table[2][1])  # 6
print(multiplication_table[2][-1]) # 27

पहला इंडेक्स उस "पंक्ति" को दर्शाता है जिसे हम मैट्रिक्स से चुनते हैं, जबकि दूसरा इंडेक्स "स्तंभ" को दर्शाता है। इसलिए, 2D सूची में किसी तत्व को एक्सेस करने का सिंटैक्स है two_d[row][column]

चुनौती

दिए गए पूर्णांक n के लिए, आकार की एक 2D वर्गीय सूची बनाएं। आपको वर्ग को 3 भागों में विभाजित करना है: विकर्ण के ऊपर का हिस्सा, विकर्ण पर का हिस्सा, और विकर्ण के नीचे का हिस्सा।

विकर्ण के ऊपर वाले क्षेत्रों को 0 से भरना चाहिए, विकर्ण पर वाले क्षेत्रों को 1 से, और नीचे वाले क्षेत्रों को 2 से।

कार्यक्रम का इनपुट एकल पूर्णांक n है - वर्ग का आकार।

कार्यक्रम का आउटपुट पेंट किया हुआ वर्ग होना चाहिए।

Input

Output

4

1 0 0 0
2 1 0 0
2 2 1 0
2 2 2 1

Constraints

Time limit: 1.6 seconds

Memory limit: 512 MB

Output limit: 1 MB