जावा, 318 312 297 294 260 258 बाइट्स
15 बाइट्स को बचाने के लिए धन्यवाद क्लिफरॉट !
interface a{static void main(String[]A){int b=Byte.valueOf(A[0]),B=Byte.valueOf(A[1]),C=3+b*2;String c="";if(b<2&B<2)c="o";else{for(;C-->0;)c+="_";for(;B-->0;){c+="\n|";for(C=b;C-->0;)c+=" o";c+=" |";}c+="\n";for(C=3+b*2;C-->0;)c+="-";}System.out.print(c);}}
यह कमांड लाइन तर्कों के साथ काम करता है।
मानव-पठनीय रूप में अनगुल्फेड :
interface a {
static void main(String[] A) {
int b = Byte.valueOf(A[0]),
B = Byte.valueOf(A[1]),
C = 3 + b*2;
String c = "";
if (b < 2 & B < 2)
c = "o";
else {
for (; C-- > 0;)
c += "_";
for (; B-- > 0;) {
c += "\n|";
for (C = b; C-- >0;)
c += " o";
c += " |";
}
c += "\n";
for(C = 3 + b*2; C-- >0;)
c += "-";
}
System.out.print(c);
}
}
हां, यह समझना अभी भी मुश्किल है कि कार्यक्रम के अनफॉलो होने पर भी क्या हो रहा है। तो यहाँ चरण दर चरण स्पष्टीकरण दिया गया है:
static void main(String[] A)
पहले दो कमांड लाइन तर्क-जो हम आयाम प्राप्त करने के लिए उपयोग करेंगे- को प्रोग्राम में A[0]
और A[1]
(क्रमशः) में उपयोग किया जा सकता है ।
int b = Byte.valueOf(A[0]),
B = Byte.valueOf(A[1]),
C = 3 + b*2;
String c = "";
b
स्तंभों B
की संख्या है, पंक्तियों की संख्या है और लूप C
में उपयोग के लिए समर्पित एक चर for
है।
c
लेगो टुकड़ा है। हम इसे पंक्तियों को जोड़ देंगे और फिर इसे अंत में प्रिंट करेंगे।
if (b < 2 & B < 2)
c = "o";
else {
यदि मुद्रित किया जाने वाला टुकड़ा 1x1 है, तो दोनों b
(स्तंभों की संख्या) और B
(पंक्तियों की संख्या) 2 से छोटा होना चाहिए। इसलिए हम बस c
एक ही सेट करते हैं o
और फिर कथन को छोड़ देते हैं कि System.out.print
यदि मामला है तो।
for (; C-- > 0; C)
c += "_";
यहाँ, हम को (integerValueOfA[0] * 2) + 3
रेखांकित करते हैं c
। यह सभी छेदों के ऊपर सबसे ऊपरी पंक्ति है।
for (; B > 0; B--) {
c += "\n|";
for(C = b; C-- > 0;)
c+=" o";
c += " |";
}
यह लूप है जहां हम एक बार में एक पंक्ति का निर्माण करते हैं। अंदर क्या चल रहा है बिना उदाहरण के समझाना असंभव है। मान लीजिए कि टुकड़ा 4x4 है:
Before entering the loop, c looks like this:
___________
After the first iteration (\n denotes a line feed):
___________\n
| o o o o |
After the second iteration:
___________\n
| o o o o |\n
| o o o o |
After the third iteration:
___________\n
| o o o o |\n
| o o o o |\n
| o o o o |
।
c += "\n";
for (C = 3 + b*2; C-- > 0;)
c += "-";
यहां, हम (integerValueOfA[0] * 2) + 3
टुकड़े को हाइफ़न जोड़ते हैं । यह सभी छेदों के नीचे, बहुत नीचे की पंक्ति है।
4x4 टुकड़ा जिसका उपयोग मैंने उस for
लूप को समझाने के लिए किया था जहाँ वास्तव में इस टुकड़े का निर्माण किया गया था अब इस तरह दिखता है:
___________\n
| o o o o |\n
| o o o o |\n
| o o o o |\n
| o o o o |\n
-----------
System.out.print(c);
और अंत में, हम टुकड़ा प्रिंट करते हैं!