পিরামিড স্কিমস


13

মায়ান পিরামিডগুলি প্রাচীন স্থাপত্যের একটি গুরুত্বপূর্ণ অংশ ছিল (এবং তারা), যা সাধারণত ধর্মীয় উদ্দেশ্যে ব্যবহৃত হত।

এগুলি সাধারণত ধাপের পিরামিড ছিল তবে প্রত্যেকটির ধাপগুলি আরোহণের পক্ষে খুব খাড়া ছিল। পুরোহিতরা অনুষ্ঠানগুলি করার জন্য বিকল্প সিঁড়ি দিয়ে তাদের শীর্ষে উঠতেন to পিরামিডগুলি উচ্চতার কারণে ল্যান্ডমার্ক হিসাবেও ব্যবহৃত হত এবং কখনও কখনও উচ্চ স্তরের কর্মকর্তাদের সমাধিস্থল হিসাবেও ব্যবহৃত হত।


চ্যালেঞ্জ

এমন একটি প্রোগ্রাম লিখুন যা ব্যবহারকারীর স্পেসিফিকেশনের উপর ভিত্তি করে একটি পিরামিড স্কিম্যাটিক মুদ্রণ করতে পারে (নীচে দেখুন)।


আবশ্যকতা

  • দুটি স্পেস-বিভাজিত ভেরিয়েবলের ইনপুট নিন।

  • এসটিডিআইএন (বা নিকটতম বিকল্প) এর মাধ্যমে ইনপুট গ্রহণ করতে হবে।

  • আউটপুট অবশ্যই STDOUT (বা নিকটতম বিকল্প) এর মাধ্যমে হওয়া উচিত।


ইনপুট

  • যেকোন ধনাত্মক পূর্ণসংখ্যা হিসাবে উচ্চতা। এটি বেস স্তরের প্রস্থ হিসাবে (ব্লকগুলিতে) ব্যবহৃত হয়। পিরামিড প্রত্যেকটি সফল স্তর প্রস্থ হয়েছে n - 1যেখানেn পূর্ব তলটির প্রস্থ (ব্লকগুলিতে) রয়েছে।

  • ব্লকের আকার যা 1 বা কোনও বিজোড়, ধনাত্মক পূর্ণসংখ্যা ≤ (এর চেয়ে কম) 10 হবে।


ব্লক

প্রদত্ত ব্লকের আকার প্রতিটি পৃথক অংশের প্রস্থ (এবং উচ্চতা) নির্ধারণ করে। মূলত, i^2দৃশ্যমান বাক্সের ভিতরে যেখানে স্পেস রয়েছেi ব্লকের আকার রয়েছে।

একটি 1x1 ব্লকটি দেখতে এমন হবে:

+++
| |
+++

5x5 ব্লকটি দেখতে এইরকম হবে:

+++++++
|     |
|     |
|     |
|     |
|     |
+++++++

অনুভূমিকভাবে সংলগ্ন ব্লক

অনুভূমিকভাবে পাশাপাশি পাশের ব্লকগুলি অবশ্যই আবশ্যক তাদের মাঝের দেয়ালগুলি একের মধ্যে মিশ্রিত করা ।

আপনার অবশ্যই এটি থাকতে হবে :

+++++
| | |
+++++

এর মতো কিছু পরিবর্তে:

++++++
| || |
++++++

উল্লম্বভাবে সংলগ্ন ব্লক (-5% বোনাস)

উল্লম্বভাবে পাশাপাশি পাশের ব্লকগুলির একটি বিশেষ ব্যতিক্রম রয়েছে: মাঝের প্রাচীরটি একের মধ্যে একীভূত করা যেতে পারে।

সুতরাং, 1x1 ব্লকের পরিবর্তে দেখতে দেখতে:

 +++
 | |
 +++
+++++
| | |
+++++

তারা এ জাতীয় দেখতে পারে :

 +++
 | |
+++++
| | |
+++++

উদাহরণ

Input: 3 1

Output:

  +++
  | |
  +++
 +++++
 | | |
 +++++
+++++++
| | | |
+++++++

OR

  +++
  | |
 +++++
 | | |
+++++++
| | | |
+++++++

Input: 2 3

Output:

  +++++
  |   |
  |   |
  |   |
  +++++
+++++++++
|   |   |
|   |   |
|   |   |
+++++++++

OR

  +++++
  |   |
  |   |
  |   |
+++++++++
|   |   |
|   |   |
|   |   |
+++++++++

স্কোরবোর্ড

স্কোরবোর্ডে স্থান পেতে, আপনার উত্তরটি এই ফর্ম্যাটে রাখুন:

# Language, Score

বা বোনাস পেলে -৫%:

# Language, Score (Bytes - 5%)

আপনার স্কোর কেবল একটি সম্পূর্ণ সংখ্যা। আপনার স্কোর যদি এক দশমিক হয় তবে পুরো সংখ্যাটি নিয়ে গোল করুন।


সর্বনিম্ন ইনপুট কি? 1 1?
mınxomaτ

হ্যাঁ, যা একক ব্লক হবে। @minxomat এটি "ইনপুট" বিভাগের অধীনে ব্যাখ্যা করা হয়েছে।
জাচ গেটস

ইনপুট কি 3 2উত্পাদন করবে?
হ্যান্ড-ই-ফুড

"ইনপুট" বিভাগের অধীনে দ্বিতীয় বুলেট অনুসারে, দ্বিতীয় ইনপুট পূর্ণসংখ্যা অবশ্যই বিজোড় হতে হবে। @ হ্যান্ড-ই-ফুড যদি আপনি জিজ্ঞাসা করতে চান যে কোনও ইনপুটটির জন্য কী ঘটতে 2 3পারে তবে ব্লকগুলিতে পূর্বের তলটির প্রস্থ n - 1 = 0কোথায় nথাকে তা বেরিয়ে আসবে ।
জাচ গেটস

@ জ্যাচগেটস, ধন্যবাদ! আমার কিছু মনে করবেন না। স্পষ্টতই কফি আমাকে ব্যর্থ করেছে।
হ্যান্ড-ই-ফুড

উত্তর:


1

পাইথ, 45 (47 বাইট - 5%)

AmvdczdVGjm.[Jh*GhHj*H?d\ \+*+2N?d\|\+\ hH;*J\+

এখানে চেষ্টা করে দেখুন ।

                                                   Implicit: z=input(), d=' '
    czd                                            Split input on spaces
 mvd                                               Evaluate each part of the above (convert to int)
A                                                  Store the pair in G,H
             Jh*GhH                                J = 1+(G*(H+1))
       VG                                          For N in [0 to G-1]:
          m                             hH;          Map d in [0 to H] to:
                                ?d\|\+                 Get '|' or '+' (vertical edges or corners)
                            *+2N                       Repeat the above (N+2) times
                      ?d\ \+                           Get ' ' or '+' (block centre or horizontal edge)
                    *H                                 Repeat the above H times
                   j                                   Join (|/+) by (   /+++)
           .[J                        \                Centrally pad the above to width J using spaces
         j                                           Join on newlines, implicit print
                                           *J\+    Get J '+'s, implicit print

1
+1 টি। কখনও না থেকে ভাল। : পি
জ্যাচ গেটস

11

জাভাস্ক্রিপ্ট (ES6), 161 (169-5%) 166 (174-5%)

টেম্পলেট স্ট্রিং ব্যবহার করে, দুটি নতুনলাইন উল্লেখযোগ্য এবং গণনা করা হয়।

নীচে একটি ইমাস্ক্রিপ্ট 6 ব্রাউজারে স্নিপেট চলমান পরীক্ষা করুন। ফায়ারফক্স ঠিক আছে, ক্রোম নয় কারণ এতে ডেস্ট্রাকচারিং অ্যাসাইনমেন্টের জন্য সমর্থন নেই ।

স্নিপেটের পরে কোডটি ব্যাখ্যা করা হয়েছে।

/*Test: redefine console.log*/ console.log=x=>O.innerHTML+=x+'\n';

for([h,b]=prompt().split` `,g='+'[R='repeat'](-~b),f=' '[R](b),n=o='';h--;o+=e+(d=g[R](++n)+`+
`)+f.replace(/./g,e+('|'+f)[R](n)+`|
`))e=' '[R](h*-~b/2);console.log(o+d)
<pre id=O></pre>

কম গল্ফড

[h, b] = prompt().split` `; // get the space separated input values
c = -~b; // Add 1 to b. As b is of string type b+1 would be a string concatenation
g = '+'.repeat(c); // top border
f = ' '.repeat(b); // inner blank row
o = ''; // initialize output string
for(n = 0; h > 0; --h) // loop on height
{
   ++n;
   e = ' '.repeat(h*c/2); // blanks for offset from left margins
   d = g.repeat(n) + `+\n`; // top border repeated, then right end and newline
   // the block body is squared, there are as many rows as columns inside
   // so I can build the right number of rows replacing the chars in a single row
   o += e + d + f.replace(/./g, e + ('|'+f).repeat(n)+`|\n`)
}
o += d // add last top border as bottom
console.log(o)    

9

রুবি, 124 (130 - 5%)

n=(g=gets).to_i
b=g[-2].to_i+1
a=(0..n*b-1).map{|i|[?+*(i/b*b+b+1),(?|+' '*(b-1))*(i/b+1)+?|][i%b<=>0].center(n*b+1)}
puts a,a[-b]

মন্তব্য সহ

n=(g=gets).to_i                                  #get input and interpret as a number for pyramid height (everything after the space is ignored)
b=g[-2].to_i+1                                   #the single-character block size is the second last character (just before the newline.) Add 1 to give the pitch between squares.
a=(0..n*b-1).map{|i|                             #run through all lines except the last one
[?+*(i/b*b+b+1),                                 #calculate number of + symbols
(?|+' '*(b-1))*(i/b+1)+?|]                       #or alternatively, pattern '|    |'
     [i%b<=>0]                                   #check if i%b is zero or positive to decide which to print
     .center(n*b+1)}                             #centre the text. It will be mapped to the array a.
puts a,a[-b]                                     #a contains the pyramid, minus its last line. Print it, and add the last line

আপনার বোনাস -5% (আপনার স্কোরটি 124 এ আনা) সম্পর্কে ভুলে যাবেন না। ভাল কাজ!
জাচ গেটস

2

পাইথন 2, 117 (123 বাইট)

h,n=map(int,raw_input().split())
p,v='+|'
while h:p+='+'*-~n;v+=' '*n+'|';h-=1;l=~n/-2*h*' ';print l+p+('\n'+l+v)*n
print p

ধারণা ইট 'টপ আপ গড়ে তোলা pযেমন +++++++++এবং পার্শ্ব vহিসাবে | | |। শীর্ষটি শুরু হয় +এবং n+1 +প্রতিটি স্তর দ্বারা বৃদ্ধি হয় । |পাশটি শুরু হয় এবং nস্পেস এবং a দ্বারা বাড়ানো হয় |। প্রতিটি স্তর, আমরা শীর্ষ এবং পাশ বৃদ্ধি করি, তারপরে একটি শীর্ষ এবং প্রিন্ট করিn পাশ ।

সেগুলি কেন্দ্র করতে, আমরা প্রথমে একটি ইনডেন্ট মুদ্রণ করি l। এটি প্রচুর স্পেস নিয়ে গঠিত যা বর্তমান উচ্চতার সাথে স্কেল করে h। এটি আপডেট করার জন্য, উচ্চতা পরিবর্তনশীল hহিট হওয়া অবধি আমরা হ্রাস করছি, 0যার পরে বর্তমান স্তরটি পর্দার বাম প্রান্তের তুলনায় ফ্লাশ হয়। নীচের স্তরটি তৈরি করতে আমরা আবার শীর্ষটি মুদ্রণ করি এবং আমরা সম্পন্ন করেছি।


0

পাইথন 2, 200 (210 - 5%)

a,b=map(int,raw_input().split());c=0;a+=1;i=a*b+a-b;e=[i*'+']
while a-1:
 v=(('|'+' '*b)*a).rstrip();p=' '*((i-len(v))/2);a-=1;c+=1
 for u in range(b):e.insert(0,p+v)
 e.insert(0,p+'+'*len(v))
print'\n'.join(e)

আমি স্ট্রিংয়ের গুণটি ব্যবহার করেছি এবং অতিরিক্ত স্থান সরিয়ে নিয়েছি।

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