নম্বর লকার!


25

ইতিবাচক পূর্ণসংখ্যা <100 (1 এবং 99 সহ 1 থেকে 99) দেওয়া হয়েছে, আউটপুট যা বহু লকার kers

একটি লকার নিম্নলিখিত হিসাবে সংজ্ঞায়িত করা হয়:

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

nn10 বেসে লকার নম্বরটি কোথায় , যদি 1-অঙ্কের সংখ্যা থাকে তবে এটি সামনে 0 দিয়ে প্রকাশ করা হয়। উদাহরণস্বরূপ, লকার নম্বর 2 নম্বরটি প্রদর্শন করে 02

লকারগুলি স্ট্যাক করা যেতে পারে তবে কেবল 2 টি পর্যন্ত উচ্চ:

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

onএকটি বিজোড় সংখ্যা, একটি সমান সংখ্যা বোঝায় en। লকারগুলি একে অপরের পাশেও রাখা যেতে পারে।

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

লক্ষ্য করুন যে 5 নম্বর লকারটি নীচে অবস্থিত একটি বিজোড় সংখ্যাযুক্ত লকার। এর কারণ এটি যখন আপনার কাছে বিজোড় সংখ্যাযুক্ত ইনপুট থাকে, শেষ লকারটি মেঝেতে রাখা উচিত (কারণ একটি হোভারিং লকারটির দাম খুব বেশি)। উপরের উদাহরণটি হ'ল এন = 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দিতে হবে?
ডিজেমা

@ কমরেডস্পার্কলপনি আমাকে তেমন প্রভাব ফেলেনি :)। ব্যবহার করা কঠোর স্বর সম্পর্কে দুঃখিত, সাহায্যের চেষ্টা করছি।
ম্যাজিক অক্টোপাস উর্ন

উত্তর:



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],

অনলাইনে চেষ্টা করে দেখুন!


এটি বর্তমানে প্রথম পরীক্ষার ক্ষেত্রে ব্যর্থ।
কমরেড স্পার্কলপনি

@ কমরেডস্পার্কলপনি ফিক্সড
গণিত জাঙ্কি

4

পিএইচপি, 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]:"";

এটি অনলাইন চেষ্টা করুন!

পিএইচপি, 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);

Caseচ্ছিক নিউলাইনগুলি সহ কেস 1

এটি অনলাইন চেষ্টা করুন!

সম্প্রসারিত

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

পিএইচপি, 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

সি (জিসিসি) , 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
ceilingcat

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% |

+----+এবং | |উভয়ই একইরকম + +যে এগুলি একক প্রতিস্থাপনের মাধ্যমে উত্পন্ন করা যায় এবং এগুলি পৃথকভাবে উত্পন্ন করার চেয়ে কিছুটা ছোট হতে দেখা যায় ( |s এর জন্য অতিরিক্ত অতিরিক্ত উদ্ধৃতি সাহায্য করে না)।



1

জাভাস্ক্রিপ্ট ES6, 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;
};

পিপিসিজিতে আপনাকে স্বাগতম!

0

কাঠকয়লা , 37 বাইট

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

এটি অনলাইন চেষ্টা করুন! লিঙ্কটি কোডটির ভার্জোজ সংস্করণ। ব্যাখ্যা:

Nθ

লকারের সংখ্যা ইনপুট করুন q

F…·¹θ«

থেকে লকার উপর লুপ 1থেকে qসমেত।

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

পরবর্তী লকারের জন্য দিকটি গণনা করুন এবং 5 বার পুনরাবৃত্তি করুন (জাম্পের চলাচলগুলি ব্যবহার করার চেয়ে গল্ফায়ার)।

B⁶±⁶

নীচে বাম কোণে শুরু করে লকারটি আঁকুন। (নীচের ডান কোণে 4 বাইট লাগবে যখন উপরের ডান কোণটি 5 নেবে Theর্ধ্ব বাম কোণটি কেবল 3 বাইট নেয় তবে লকারের সংখ্যাটি আঁকতে আরও বেশি সময় লাগবে))

↗→→0

প্রয়োজনীয় হলে লকার সংখ্যার অগ্রণী শূন্য আঁকুন।

P←⮌Iι

লকার নম্বরটি বিপরীত এবং ডান থেকে বামে অঙ্কন করুন, কার্যকরভাবে ডানদিকে এটি ন্যায়সঙ্গত করা হয়েছে।

←←↙

পরবর্তী লকারে দিকটি গণনা করতে প্রস্তুত নীচে বাম কোণে ফিরে যান।

সম্পাদনা করুন: চারকোলের পরবর্তী সংস্করণগুলি এই 32-বাইট সমাধানটিকে সমর্থন করে:

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

এটি অনলাইন চেষ্টা করুন! লিঙ্কটি কোডটির ভার্জোজ সংস্করণ। ব্যাখ্যা:

F⪪…·¹N²«

1ইনপুট নম্বর থেকে সংযুক্তি জুড়ে নম্বরগুলি নিন । (ইনপুট নম্বরটি বিজোড় হলে শেষ অ্যারেতে কেবল একটি উপাদান থাকবে have)

F⮌ι«

বিপরীত ক্রমে প্রতিটি জোড়া লুপ।

↗→→0

প্রয়োজনীয় হলে লকার সংখ্যার অগ্রণী শূন্য আঁকুন।

P←⮌Iι

লকার নম্বরটি বিপরীত এবং ডান থেকে বামে অঙ্কন করুন, কার্যকরভাবে ডানদিকে এটি ন্যায়সঙ্গত করা হয়েছে।

↖↖↖↑UR⁶

লকারের উপরের বাম দিকে সরান এবং এটি আঁকুন। এটি পরবর্তী লকারের নীচে বামও, সুতরাং প্রযোজ্য ক্ষেত্রে আমরা জোড়ার দ্বিতীয় লকার আঁকার জন্য প্রস্তুত।

»M⁵χ

লকারগুলির পরবর্তী জোড়াতে যান। (এটি 1 বাইট সংরক্ষণের জন্য অভ্যন্তরীণ লুপের আগে হওয়া উচিত তবে কাঠকয়লা কোনও কারণে 1 ইনপুটটির জন্য ভুল আউটপুট উত্পন্ন করে))

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.