नंबर लॉकर!


25

एक सकारात्मक पूर्णांक को देखते हुए <100 (1 से 99 तक, 1 और 99 सहित), कई लॉकर्स को आउटपुट करता है।

एक लॉकर को निम्नलिखित के रूप में परिभाषित किया गया है:

+----+
|    |
|    |
|    |
| nn |
+----+

जहाँ nnलॉकर संख्या है, आधार १० में। यदि १-अंकीय संख्या है, तो उसके सामने ० के साथ व्यक्त किया जाता है। उदाहरण के लिए, लॉकर नंबर 2 नंबर प्रदर्शित करता है 02

लॉकर्स को स्टैक किया जा सकता है, लेकिन केवल 2 उच्च तक:

+----+
|    |
|    |
|    |
| on |
+----+
|    |
|    |
|    |
| en |
+----+

onएक विषम संख्या, एक सम संख्या को दर्शाता है en। लॉकर्स को एक दूसरे के बगल में भी रखा जा सकता है।

+----+----+
|    |    |
|    |    |
|    |    |
| 01 | 03 |
+----+----+----+
|    |    |    |
|    |    |    |
|    |    |    |
| 02 | 04 | 05 |
+----+----+----+

ध्यान दें कि लॉकर नंबर 5 एक विषम संख्या वाला लॉकर है जो सबसे नीचे है। ऐसा इसलिए है क्योंकि जब आपके पास विषम-संख्या वाले इनपुट होते हैं, तो अंतिम लॉकर को फर्श पर रखा जाना चाहिए (क्योंकि एक हॉवरिंग लॉकर की लागत बहुत अधिक होती है)। इसलिए उपरोक्त उदाहरण n = 5 के लिए अपेक्षित आउटपुट है। n = 0 को कुछ भी नहीं लौटना चाहिए।

नियम: इनपुट / आउटपुट के मानक तरीके। किसी भी सुविधाजनक प्रारूप में इनपुट, एक स्ट्रिंग के रूप में आउटपुट। मानक खामियां लागू होती हैं।

परीक्षण के मामलों:

Input
Output
---------------------
1






+----+
|    |
|    |
|    |
| 01 |
+----+
--------------------- (newlines optional in case 1)
4
+----+----+
|    |    |
|    |    |
|    |    |
| 01 | 03 |
+----+----+
|    |    |
|    |    |
|    |    |
| 02 | 04 |
+----+----+
---------------------
5
+----+----+
|    |    |
|    |    |
|    |    |
| 01 | 03 |
+----+----+----+
|    |    |    |
|    |    |    |
|    |    |    |
| 02 | 04 | 05 |
+----+----+----+
---------------------
16
+----+----+----+----+----+----+----+----+
|    |    |    |    |    |    |    |    |
|    |    |    |    |    |    |    |    |
|    |    |    |    |    |    |    |    |
| 01 | 03 | 05 | 07 | 09 | 11 | 13 | 15 |
+----+----+----+----+----+----+----+----+
|    |    |    |    |    |    |    |    |
|    |    |    |    |    |    |    |    |
|    |    |    |    |    |    |    |    |
| 02 | 04 | 06 | 08 | 10 | 12 | 14 | 16 |
+----+----+----+----+----+----+----+----+

यह , इसलिए सबसे छोटा कोड जीतता है!



15
यह बिल्डरों को यह बताने का समय है कि नीचे की ओर विषम लॉकर लगाए जाएं।
mbomb007

3
क्या मामले की नई रूपरेखा को आउटपुट 1किया जाना है?
dzaima

@ComradeSparklePony ने मुझे बिल्कुल प्रभावित नहीं किया :)। उपयोग किए गए कठोर स्वर के बारे में क्षमा करें, बस मदद करने की कोशिश कर रहा है।
मैजिक ऑक्टोपस Urn

जवाबों:



6

पायथन 2, 201 191 185 175 171 166 164 163 बाइट्स

n=input()
for j in 0,1:c=n/2+n%2*j;m='+----'*c+'+\n';print['\n',m+('|    '*c+'|\n')*3+''.join('| %02d '%-~i for i in range(j,n-n%2,2)+n%2*j*[~-n])+'|\n'+m*j][c>0],

इसे ऑनलाइन आज़माएं!


यह वर्तमान में पहले परीक्षण के मामले में विफल रहता है।
कॉमरेड स्पार्कलपनी

@ComradeSparklePony फिक्स्ड
गणित नशेड़ी

4

PHP, 191 बाइट्स

for(;a&$k="01112344453"[$i++];print"$l\n")for($l="",$b="+||"[$k%3],$n=0;$n++<$a=$argn;)$l.=$i<6&$n%2&$n!=$a|$i>5&($n%2<1|$n==$a)?($l?"":"$b").["----+","    |",sprintf(" %02d |",$n)][$k%3]:"";

इसे ऑनलाइन आज़माएं!

PHP, 235 बाइट्स

for(;$i++<$a=$argn;)$r[$i==$a|1-$i&1][]=($p=str_pad)($i,2,0,0);for(;$j<6;)$l[]=($a<2&$j<3?"":[$p("+",$c=($j<3?floor:ceil)($a/2)*5+1,"----+"),$p("|",$c,"    |"),"| ".join(" | ",$r[$j/3])." |"])[$j++%3]."\n";echo strtr("01112344453",$l);

केस 1 वैकल्पिक newlines के साथ

इसे ऑनलाइन आज़माएं!

विस्तारित

for(;$i++<$a=$argn;)
  $r[$i==$a|1-$i&1][]=($p=str_pad)($i,2,0,0); # make an 2D array 0:odd values 1:even values and last value  
for(;$j<6;) # create 6 strings for each different line
  $l[]=($a<2&$j<3 # if last value =1 and line number under 3 
    ?"" # make an empty string empty [] as alternative
    :[$p("+",$c=($j<3 # else make the 0 or 3 line and store the count for next line
      ?floor # if line number =0 count=floor ($a/2)  multiply 5 and add 1
      :ceil)($a/2)*5+1,"----+") # else count= ceil($a/2) multiply 5 and add 1
    ,$p("|",$c,"    |") # make lines 1 and 4
    ,"| ".join(" | ",$r[$j/3])." |"])[$j++%3]."\n"; #make lines 2 odd values and 5 even values and last value
echo strtr("01112344453",$l); # Output after replace the digits with the 6 strings

PHP, 300 बाइट्स

for(;$i++<$a=$argn;)$r[$i==$a||!($i%2)][]=($p=str_pad)($i,2,0,0);echo strtr("01112344453",($a>1?[$p("+",$c=($a/2^0)*5+1,"----+")."\n",$p("|",$c,"    |")."\n","| ".join(" | ",$r[0])." |\n"]:["","",""])+[3=>$p("+",$c=ceil($a/2)*5+1,"----+")."\n",$p("|",$c,"    |")."\n","| ".join(" | ",$r[1])." |\n"]);

की जगह ["","",""]के साथ ["\n","\n","\n"]अगर आप मामले के लिए नई-पंक्तियों चाहते1

इसे ऑनलाइन आज़माएं!


2

रूबी, 256 239 201 191 183 बाइट्स

n=gets.to_i;a=n/2;z=a+n%2;t=a*2;q="+----+";r=->x{q*x+?\n+("|    |"*x+?\n)*3+"| n |"*x+?\n};u=r[a]+r[z]+q*z;n.times{|i|j=2*i+1;u[?n]="%02d"%(i<a ?j:i>=t ?j-t:j-t+1)};puts u.squeeze'+|'

यह भयानक रूप से लंबा है। मैं इसे और अधिक गोल्फ पर काम करूँगा।


2

C (gcc) , 426 335 300 294 282 252 249 246 244 237 बाइट्स

यह वास्तव में नीचे गोल्फ की जरूरत है

#define L puts("")
#define P(s)printf(&s[i>1]
#define F(x)for(i=0;i++<x;)P(
#define O(x,y)F(x)"+----+"));for(j=0;L,j++<3;)F(x)"|    |"));j=y;F(x)"| %02d |")
e,i,j;f(n){e=n/2+n%2;O(n/2,-1),j+=2);L;O(e,0),j+=i^e?2:2-n%2);L;F(e)"+----+"));}

इसे ऑनलाइन आज़माएं!


-~n/2इसके बजाय सुझाव देंn/2+n%2
छत

1

बैच, 305 बाइट्स

@echo off
set/a"n=%1&-2
if %1 gtr 1 call:l %n% 1
call:l %1 2
echo %s: =-%
exit/b
:l
set s=+
set "t=|
for /l %%i in (%2,2,%n%)do call:c %%i
if %1 gtr %n% call:c %1
for %%s in ("%s: =-%" "%s:+=|%" "%s:+=|%" "%s:+=|%" "%t%")do echo %%~s
exit/b
:c
set s=%s%    +
set i=0%1
set "t=%t% %i:~-2% |

+----+और | |दोनों समान हैं + +कि वे एक एकल प्रतिस्थापन के माध्यम से उत्पन्न हो सकते हैं, और यह उन्हें अलग से उत्पन्न करने की तुलना में थोड़ा कम हो जाता है ( |एस के लिए आवश्यक अतिरिक्त उद्धरण मदद नहीं करता है)।


1

पायथ - 97 74 86 80 75 बाइट्स

V3K+:?&NtQ2 1Q2?NQYIlK+*+\+*\-4lK\+IqN2BFTU4+sm?qT3.F"| {:02d} "d+\|*\ 4K\|

इसे यहाँ आज़माएँ


1
क्षमा करें, लेकिन यह वर्तमान में 1 के इनपुट पर विफल है
कॉमरेड स्पार्कलपनी

@ComradeSparklePony ने इसे ठीक किया। धन्यवाद।
मारिया

1

जावास्क्रिप्ट ईएस 6, 224 बाइट्स

n=>(r=(s,k)=>s.repeat(k),s="",[0,1].map(i=>(c=(n/2+n%2*i)|0,c&&(s+="+"+r(l="----+",c)+`
|`+r(r("    |",c)+`
|`,3),[...Array(c).keys()].map(j=>s+=` ${(h=2*j+(i+!(i&j>c-2&n%2)))>9?h:"0"+h} |`),s+=`
`+(i?`+${r(l,c)}
`:"")))),s)

गणित जंकी के पायथन जवाब से कुछ विचारों का उपयोग किया

टेस्ट स्निपेट

f=
n=>(r=(s,k)=>s.repeat(k),s="",[0,1].map(i=>(c=(n/2+n%2*i)|0,c&&(s+="+"+r(l="----+",c)+`
|`+r(r("    |",c)+`
|`,3),[...Array(c).keys()].map(j=>s+=` ${(h=2*j+(i+!(i&j>c-2&n%2)))>9?h:"0"+h} |`),s+=`
`+(i?`+${r(l,c)}
`:"")))),s)

O.innerHTML=f(I.value);
<input id="I" value="5" type="number" min="0" max="99" oninput="O.innerHTML=f(this.value)">
<pre id="O"></pre>

सफाई की

n => {
    r=(s,k)=>s.repeat(k);
    s="";
    [0,1].map(i => {
        c = (n/2 + n%2 * i)|0;
        if (c) {
            s += "+" + r(l="----+", c) + "\n|" + r(r("    |",c) + "\n|", 3);
            [...Array(c).keys()].map(j => {
                s += ` ${(h = 2*j + (i + !(i & j>c-2 & n%2))) > 9 ? h:"0"+h} |`;
            });
            s += "\n" + (i ? `+${r(l,c)}\n` : "");
        }
    });
    return s;
};

PPCG में आपका स्वागत है!
caird coinheringaahing

0

चारकोल , 37 बाइट्स

NθF…·¹θ«F⁵¿﹪ι²¿⁼ιθ→↗↓B⁶±⁶↗→→0P←⮌Iι←←↙

इसे ऑनलाइन आज़माएं! लिंक कोड के वर्बोज़ संस्करण के लिए है। स्पष्टीकरण:

Nθ

लॉकर की संख्या में इनपुट करें q

F…·¹θ«

लॉकर्स 1को qसमावेशी से ऊपर लूप करें ।

F⁵¿﹪ι²¿⁼ιθ→↗↓

अगले लॉकर को दिशा की गणना करें, और 5 बार दोहराएं (जंप आंदोलनों का उपयोग करने की तुलना में गोल्फर)।

B⁶±⁶

निचले बाएं कोने से शुरू करते हुए, लॉकर खींचें। (नीचे दायाँ कोना भी 4 बाइट्स लेता है जबकि शीर्ष दायें कोना 5. लेता है। ऊपरी बाएँ कोना केवल 3 बाइट्स लेता है, लेकिन तब लॉकर संख्या को खींचने में अधिक समय लगेगा।)

↗→→0

यदि आवश्यक हो तो लॉकर नंबर के अग्रणी शून्य को ड्रा करें।

P←⮌Iι

लॉकर संख्या को उल्टा और दाएं-बाएं छोड़ें, प्रभावी रूप से इसे सही ठहराते हुए।

←←↙

अगले लॉकर की दिशा की गणना करने के लिए तैयार निचले बाएं कोने पर वापस जाएं।

संपादित करें: चारकोल के बाद के संस्करण इस 32-बाइट समाधान का समर्थन करते हैं:

F⪪…·¹N²«F⮌ι«↗→→0P←⮌Iκ↖↖↖↑UR⁶»M⁵χ

इसे ऑनलाइन आज़माएं! लिंक कोड के वर्बोज़ संस्करण के लिए है। स्पष्टीकरण:

F⪪…·¹N²«

संख्याओं 1को इनपुट संख्या समावेशी जोड़ो से लें। (यदि इनपुट संख्या विषम है तो अंतिम सरणी में केवल एक तत्व होगा।)

F⮌ι«

प्रत्येक जोड़ी को रिवर्स ऑर्डर में लूप करें।

↗→→0

यदि आवश्यक हो तो लॉकर नंबर के अग्रणी शून्य को ड्रा करें।

P←⮌Iι

लॉकर संख्या को उल्टा और दाएं-बाएं छोड़ें, प्रभावी रूप से इसे सही ठहराते हुए।

↖↖↖↑UR⁶

लॉकर के शीर्ष बाईं ओर ले जाएं और इसे आकर्षित करें। यह अगले लॉकर का निचला भाग भी है, इसलिए यदि लागू हो तो हम जोड़ी के दूसरे लॉकर को तैयार करने के लिए तैयार हैं।

»M⁵χ

लॉकर्स की अगली जोड़ी पर जाएं। (यह 1 बाइट की बचत के लिए आंतरिक लूप से पहले होना चाहिए लेकिन चारकोल 1 कारण के लिए 1 इनपुट के लिए गलत आउटपुट उत्पन्न करता है।)

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.