এন স্কোয়ার্ড প্রিন্ট করুন


57

এমন একটি প্রোগ্রাম বা ফাংশন লিখুন যা স্টিডিনের থেকে বা কোনও ফাংশন আর্গুমেন্ট হিসাবে একটি অ-নেতিবাচক পূর্ণসংখ্যা এন গ্রহণ করে। এটি অবশ্যই একটি ফাঁকা ASCII- আর্ট স্কোয়ারের একটি স্ট্রিং প্রিন্ট বা ফিরতে হবে যার পাশগুলির প্রতিটি এন নম্বর দিয়ে অনুলিপি করা হয়েছে।

বিশেষ করে:

যদি এন হয় 0, এন এর কোনও অনুলিপি ব্যবহার করা হয় না, সুতরাং কোনও আউটপুট (বা কেবলমাত্র একটি একক ট্রেইলিং নিউলাইন) হওয়া উচিত নয়।

যদি N হয় 1তবে আউটপুটটি হ'ল:

1

যদি এন হয় 2:

22
22

যদি এন হয় 3:

333
3 3
333

যদি এন হয় 4:

4444
4  4
4  4
4444

যদি এন হয় 5:

55555
5   5
5   5
5   5
55555

প্যাটার্ন 6মাধ্যমে চলতে থাকে 9

যদি N হয় 10তবে আউটপুটটি হ'ল:

10101010101010101010
10                10
10                10
10                10
10                10
10                10
10                10
10                10
10                10
10101010101010101010

লক্ষ্য করুন যে এটি আসলে বর্গক্ষেত্র নয়। এটি 10 ​​সারি লম্বা তবে 20 কলাম প্রশস্ত কারণ 10দুটি অক্ষর দীর্ঘ। এটা উদ্দেশ্য। মুল বক্তব্যটি হ'ল "স্কোয়ার" এর প্রতিটি পাশেই এন এর অনুলিপি রয়েছে So সুতরাং এর বাইরে সমস্ত ইনপুট 9প্রযুক্তিগতভাবে ASCII আয়তক্ষেত্র হবে।

উদাহরণস্বরূপ, যদি এন হয় 23তবে আউটপুটটি হয়:

2323232323232323232323232323232323232323232323
23                                          23
23                                          23
23                                          23
23                                          23
23                                          23
23                                          23
23                                          23
23                                          23
23                                          23
23                                          23
23                                          23
23                                          23
23                                          23
23                                          23
23                                          23
23                                          23
23                                          23
23                                          23
23                                          23
23                                          23
23                                          23
2323232323232323232323232323232323232323232323

এখানে জন্য প্রয়োজন বোধ করা আউটপুট Pastebins হয় 99, 100, 111, এবং 123(তারা একটি ব্রাউজারে ভুল মনে হতে পারে কিন্তু একটি টেক্সট এডিটরে তারা সঠিক সন্ধান করব)। 1000পেস্টবিনের জন্য আউটপুট বড় হয় তবে এটিতে 1000 সারি এবং 4000 কলাম থাকবে। 4 বা ততোধিক সংখ্যার সংখ্যাগুলিতে অবশ্যই ছোট সংখ্যার মতো কাজ করা উচিত।

বিবরণ:

  • এন অবশ্যই অবশ্যই দশমিক সংখ্যার উপস্থাপনায় লিখতে হবে, কোনও +চিহ্ন বা অন্যান্য অ-সংখ্যা সহ।
  • ফাঁকা অঞ্চলটি কেবল ফাঁকা জায়গায় পূরণ করতে হবে be
  • কোনও লাইনের নেতৃত্বাধীন বা পিছনের স্থান থাকা উচিত নয়।
  • স্কোয়ারগুলির শেষ লাইনের পরে একটি একক নিউলাইন optionচ্ছিকভাবে অনুমোদিত।
  • এই চ্যালেঞ্জটি তৈরি হওয়ার পরে লেখা ভাষাগুলি স্বাগত, তারা কেবল জয়ের যোগ্য নয়
  • বাইটের মধ্যে সংক্ষিপ্ততম কোডটি জিতেছে!

18
N = 10 এর জন্য বর্গটি n = 5 এর চেয়ে বেশি বর্গ দেখায় looks হুররে, নন-স্কোয়ার ফন্ট!
nneonneo

আমরা কি স্ট্রিং হিসাবে পূর্ণসংখ্যা নিতে পারি?
অ্যাডম

1
@ Nᴮᶻ হ্যাঁ আপনি করতে পারেন
ক্যালভিনের

উত্তর:


6

জल्फ, 31 27 25 23 বাইট

?=1i1ρρ,aii+*3έέi*li

এটি আইএসও -8859-7 এনকোডিংয়ে এনকোড হয়েছে এবং এতে ছাপ ছাড়াই রয়েছে, সুতরাং এখানে একটি হেক্সডাম্প রয়েছে:

0000000: 3f3d 3169 31f1 f12c 6169 692b 2a33 dd05  ?=1i1..,aii+*3..
0000010: dd69 052a 056c 69                        .i.*.li

অনলাইনে এই ঝাঁকুনির চেষ্টা করুন বা একবারে সমস্ত পরীক্ষার কেস যাচাই করুন (পুরো রান বোতামটি ব্যবহার করুন)

এটি n = 0 এর জন্য একটি ত্রুটি সহ প্রস্থান করে, যা ডিফল্টরূপে অনুমোদিত।

4 6 গলফ করার জন্য কনরকে প্রচুর ধন্যবাদ ! বাইট। inb4 চারটি পেরিয়ে এখনও চারটি মন্তব্যের মতো দেখাচ্ছে

ব্যাখ্যা

?=1i1ρρ,aii+*3έ\x05έi\x05*\x05li

?=1i1                             if input is 1 return 1, otherwise...
       ,aii+*3έ\x05               draw an input x input hollow box of tabs
      ρ            έi             replace all tabs with input
     ρ               \x05*\x05li  replace all spaces with spaces * length of input

আপনি কীভাবে হেক্সডাম্প তৈরি করেছেন?
কনর ও'ব্রায়েন

@ CᴏɴᴏʀO'Bʀɪᴇɴ আমি এক্সএক্সডি ব্যবহার করেছি। আপনি এটির সাথে বিপরীত করতে পারেন xxd -r
একটি স্প্যাগেটো

16

Shtriped , 317 বাইট

আমি প্রশ্নটি করার সময় আমি আমার নতুন "পিউরিস্ট" ভাষাটি প্রদর্শন করতে পারি।

@ f x
 d x
 f
 @ f x
+ x y
 +
  i x
 @ + y
 h x
} x y
 e 1
 i 1
 d y
 d 1
 d x
 } x y
e 0
e 2
i 2
i 2
e 6
+ 2 2 6
+ 2 6 6
e T
+ 2 2 T
+ 6 T T
e N
t N
e P
+ T 0 P
e L
i L
*
 e x
 *
  + P x x
 @ * T
 h x
~
 } N P 0
 d 0
 i L
 * P
 ~
~
#
 p N
-
 s 6
_
 @ - L
$
 #
 @ _ n
 #
 s 2
@ # N
e n
+ N 0 n
d n
d n
s 2
@ $ n
@ # N

(অবশ্যই v1.0.0 এ কাজ করে )

বর্ধিতকরণ এবং হ্রাস ছাড়া শিত্রিপডে কোনও গণিত ক্রিয়াকলাপ নেই। কোনও লুপিং বা শর্তসাপেক্ষও নেই, তাই প্রতিটি প্রোগ্রামে স্ক্র্যাচ থেকে এই সমস্ত কিছু তৈরি করা দরকার।

এটিই আমার প্রোগ্রামটি করে, যেমন @লুপের জন্য মূলত একটি +অতিরিক্ত ফাংশন, }তা >=। আসল আউটপুট কেবলমাত্র প্রোগ্রামের শেষ 8 লাইনে উত্পাদিত হয়।

শ্ট্রিপডে কোনও স্ট্রিং নেই। আপনি স্ট্রিংগুলি প্রিন্ট করতে এবং মুদ্রণ করতে পারেন, তবে সেগুলি অভ্যন্তরীণভাবে নির্বিচারে যথাযথ পূর্ণসংখ্যা হিসাবে উপস্থাপিত হয় যা কেবলমাত্র বৃদ্ধি এবং হ্রাসযোগ্য হতে পারে। 10স্কোয়ারের দৈর্ঘ্যের সঠিক স্থান সহ সঠিক পরিমাণে স্কোয়ার সেন্টারে পূরণের পক্ষে সহজ উপায় নেই । দশমিকের N এর দৈর্ঘ্য খুঁজতে ~কার্যকরভাবে গণনা floor(log10(N)) + 1করা ফাংশনটি আমাকে একসাথে আবদ্ধ করতে হয়েছিল।

এটি সম্ভবত সাজানোর কোথায় এবং কিভাবে যা ভেরিয়েবল ব্যবহার করা হয় দ্বারা একটি বিট আরো golfed যেতে পারে, কিন্তু না যে আরো অনেক কিছু। Shtriped অন্তর্নিহিত সীমাবদ্ধতা কাছাকাছি পেতে পারে না। (এটি কখনই কোনও গল্ফ ভাষা হিসাবে বোঝানো হয়নি))

মন্তব্য করা কোড (একটি ব্যাকস্ল্যাশ একটি মন্তব্য):

@ f x \ function that calls f() x times, returns 0
 d x
 f
 @ f x
+ x y \ returns x + y
 +
  i x
 @ + y
 h x
} x y \ returns 1 if x >= y, else 0
 e 1
 i 1
 d y
 d 1
 d x
 } x y

\ declare and set up variables for the numbers 0, 2, 6, 10
e 0 \ 0 is used to help copy values via +
e 2 \ 2 is used for printing newlines
i 2
i 2
e 6 \ 6 is used for printing spaces
+ 2 2 6
+ 2 6 6
e T \ 10 is used for finding the string length of N
+ 2 2 T
+ 6 T T

e N \ declare N
t N \ and set it to what the user inputs

\ all the code from here to the last ~ is for finding the length of N as a string

e P \ P is the current power of 10 (10, 100, 1000...), starting with 10
+ T 0 P
e L \ L will be the length of N in decimal digits
i L

* \ function that returns P times 10 by adding P to itself 10 times
 e x
 *
  + P x x
 @ * T
 h x

~ \ function that increments L and multiplies P by 10 until N < P, at which point L will be the string length of N
 } N P 0 \ the 0 variable can be used as a dummy now since we don't need it anymore
 d 0
 i L
 * P \ multiply P by 10 to 
 ~
~

\ helper functions for displaying the output
# \ simply prints N as a decimal integer
 p N
- \ prints a single space
 s 6
_ \ prints L spaces (L = digit length of N)
 @ - L
$ \ prints one of the central N-2 lines of the square
 #
 @ _ n
 #
 s 2

\ finally, call these functions to display the output
@ # N \ print N copies of N (top line of square)
e n \ declare n and set it to N - 2
+ N 0 n
d n
d n \ if N was 0 or 1 the program will end here, having printed nothing if 0 or just the top line if 1
s 2 \ print a newline
@ $ n \ print the central line of the square N-2 times
@ # N \ print N copies of N (bottom line of square)

\ the output always prints without a trailing newline

8

গুরুতরভাবে, 32 31 30 29 বাইট

╩╜ó$╝╜Dbu╜╛*n╜¬;╛l*' *╛+╛@+n(

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

ব্যাখ্যা:

╩╜ó$╝╜Dbu╜╛*n╜¬;╛l*' *╛+╛@+n(
╩                              push each input to its own register
                                 (we'll call register 0 "n")
 ╜                             push n to the stack
  ó                            terminate if 0
   $╝                          push str(n) to register 1
                                 (we'll call register 1 "s")
     ╜Dbu╜╛*n                  make min(2,n) copies of s*n (the top and bottom)
                                 (this avoids an extra copy if n is 1)
             ╜¬;               push n-2 twice
                ╛l*' *         push (n-2)*len(s) spaces
                      ╛+╛@+    put s on the front and end of the string (a middle piece)
                           n   push (n-2) total copies of the middle piece
                            (  bring the top piece to the top

5

জাভাস্ক্রিপ্ট (ES6), 73 82 78 বাইট

@ ইউজার ৮১65৫৫ এর জন্য এ 4 বাইট সংরক্ষণ করা হয়েছে

n=>(a=n[r='repeat'](n),n<2?a:a+`
${n+' '[r](n.length*(n-2))+n}`[r](n-2)+`
`+a)

একটি স্ট্রিং নেয়, ইনপুটটির জন্য একটি সংখ্যা নয়।

এটি অনলাইনে ব্যবহার করে দেখুন (সমস্ত ব্রাউজার কাজ করে)


বাইট সংরক্ষণ করতে আপনি এর *(n-2)সাথে প্রতিস্থাপন করতে পারেন *~-~-n
নিল

@ ব্যবহারকারী 81655 ধন্যবাদ, এটি এটি স্থির করে দিয়েছে
ডাউনগোট

5
@ নীল ধন্যবাদ তবে দুর্ভাগ্যক্রমে কোনও বাইট সংরক্ষণ করতে দেখা যাচ্ছে না
ডাউনগোট

দুঃখিত, আমার অবশ্যই ভুল হিসাব করা উচিত
নিল

5

এমএটিএল , 34 29 26 বাইট

:G\2<t!+gQ"@!2GVYX1GVnZ"YX

এটি ভাষা / সংকলকের বর্তমান প্রকাশের (13.0.0) সাথে কাজ করে

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

:            % array [1,2,...,N], where N is input, taken implicitly
G\           % modulo N. Gives [1,2,...,N-1,0]
2<           % smaller than 2? Gives [1,0,...,0,1]
t!           % duplicate, transpose
+            % addition with broadcast. Gives 2D array with nonzeros in the border 
             % and zeros in the interior
gQ           % convert to logical, add 1: twos in the border, ones in the interior
"            % for each column of that array (note the array is a symmetric matrix,
             % so columns and rows are the same)
  @!         %   push column. Transpose into a row        
  2GVYX      %   replace twos by the string representation of N, via regexp
  1GVnZ"YX   %   replace ones by as many spaces as length of that string, via regexp
             % end for each, implicitly
             % display stack contents, implicitly

5

টি-এসকিউএল / এসকিউএল সার্ভার 2012+, 167 161 বাইট

DECLARE @ INT = 6;

SELECT IIF(u IN(1,s),REPLICATE(s,s),CONCAT(s,REPLICATE(' ',s-2*LEN(s)),s))
FROM(SELECT @ s)z CROSS APPLY(SELECT TOP(s)ROW_NUMBER()OVER(ORDER BY 1/0)u FROM sys.messages)v

আউটপুট:

666666 
6    6 
6    6  
6    6  
6    6 
666666 

LiveDemo

পছন্দসই আকার লিখুন এবং Run queryপাঠ্য উপস্থাপনা পেতে ক্লিক করুন ।

দয়া করে নোট করুন যে এই ডেমোটি স্থির-প্রস্থের ফন্ট প্রদর্শন করে না । এর 7চেয়ে ঘন হয় 1


সম্পাদনা করুন:

যদি আমরা ইনপুটটিকে স্ট্রিং হিসাবে বিবেচনা করি:

DECLARE @ VARCHAR(10) = '7';

SELECT IIF(u IN(1,s),REPLICATE(s,s),s+REPLICATE(' ',s-2*LEN(s))+s)
FROM(SELECT @ s)z CROSS APPLY(SELECT TOP(s+0)ROW_NUMBER()OVER(ORDER BY 1/0)u FROM sys.messages)v

LiveDemo2


এটি খুব সুন্দর, আমি শিখেছি কীভাবে আমার অন্যান্য স্ক্রিপ্টগুলি কিছুটা ছোট করা যায়। 1/0 এবং sys.messages
t-clausen.dk

সাইড নোটে। বাইটগুলি গণনা করার সময় ইনপুট প্যারামিটারের ঘোষণাকে সত্যই অন্তর্ভুক্ত করা উচিত?
t-clausen.dk

@ t-clausen.dk এসকিউএল প্রয়োগ করা হলে আমি গণনা বিধি সম্পর্কে নিশ্চিত নই তবে আমি মেটা জিজ্ঞাসা করব এবং আপনাকে জানাবো।
lad2025

1
আপনি ভার্চর তৈরি করে কয়েকটি বাইট সংরক্ষণ করতে পারেন (এটি '6' এর মতো), তারপরে আপনি + এর সাথে কনক্যাট প্রতিস্থাপন করতে পারেন।
t-clausen.dk

1
দেখে মনে হচ্ছে আপনি কিছু জায়গা হারিয়েছেন। আমি বিশ্বাস করি আপনি (s-2) লিখে এটি ঠিক করতে পারবেন
t-clausen.dk

4

জুলিয়া, 78 বাইট

n->(s="$n";(p=println)(s^n);[p(s*" "^(n-2)endof(s)*s)for i=2:n-1];n>1&&p(s^n))

এটি একটি বেনাম ফাংশন যা একটি পূর্ণসংখ্যা গ্রহণ করে এবং ASCII আয়তক্ষেত্রটি STDOUT এ মুদ্রণ করে। এটি কল করতে, এটি একটি ভেরিয়েবলের জন্য বরাদ্দ করুন।

Ungolfed:

function f(n)
    # Save a string version of n
    s = "$n"

    # Print the top line
    println(s^n)

    # Print each middle line
    [println(s * " "^(n-2)endof(s) * s) for i = 2:n-1]

    # Print the last line if there is one
    n > 1 && println(s^n)
end

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


4

রুবি, 100 বাইট

->n{s="";n.times{|i|s+=(i<1||i>n-2?"#{n}"*n :"#{n}#{' '*[(n-2)*n.to_s.size,0].max}#{n}")+$/};puts s}

খুব খারাপ আমি জেএসকে মারতেও পারিনি। এটি নিচে গলফ করা আরও যে কোনও সহায়তা প্রশংসিত হবে।

এখানে আরও কম বা অল্প বয়স্ক সংস্করণ রয়েছে:

def f(n)
    n.times{|num|
        if num == 0 || num == n-1
            s += "#{n}" * n
        else
            s += "#{n}"+" "*[(n-2)*n.to_s.length,0].max+"#{n}"
        end
        s += "\n"
    }
    puts s
end

1
আপনি একটি ভেরিয়েবল বরাদ্দ করতে চাইতে পারেন n.to_sযেহেতু আপনি এটি এত বেশি ব্যবহার করেন, আপনাকে m*nপ্রথম অংশ এবং m+" "*[(n-2)*m.length,0].max+mদ্বিতীয় অংশের জন্য দেয়।
মান কালি

আমি এই উত্তরের একটি 75-বাইট সংস্করণ ভিত্তিক করেছি। (জাভাস্ক্রিপ্ট বর্তমানে by 78 বাইটে রয়েছে) এটি অনলাইনে চেষ্টা করুন!
বেনজ 2240

4

রেটিনা, 76 বাইট

.+
$0$*n$0
n(?=n*(\d+))|.
$1_
\d+_
$_¶
T`d` `(?<=¶.*_.*).(?=.*_\d.*¶\d)
\`_
[empty line]

ব্যাখ্যা আগামীকাল আসতে পারে।

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


7
কাল থেকে বেশ কিছুদিন হলো।
ক্যালকুলেটরফলাইন

কাল থেকে পুরো এক বছরেরও বেশি সময় কেটে গেছে।
Leaky নুন

4

সি ++ 14, 156 অক্ষর

আমি ভেবেছিলাম এটি একটি দুর্দান্ত সমাধান ছিল যদিও স্পষ্টতই এখানে বেশিরভাগ অন্যান্য এন্ট্রিগুলিকে বীট করতে পারে না।

#define f for(i=0;i++<n;c<<t);
[](string t){auto&c=cout;int n=stoi(t),i;f c<<'\n';for(i=0;++i<n-1;c<<t,c.width(~-n*size(t)+1),c.fill(0),c<<t+'\n');if(n-1)f}

Ungolfed:

#define f for ( i = 0; i++ < n; c << t ); // print top/bot row
[](string t) {
  auto& c = cout;
  int n = stoi(t), i;
  f // print first row
  c << '\n'; // kind of annoying but no way to get rid of (yes I tried
             // c << '\n'+t instead of c << t+'\n')
  for ( i = 0; ++i < n - 1; ) {
    c << t; // output the number
    // then we we get the width of necessary spaces
    c.width(~-n*size(t)+1); // Equivalent to (n-1)*size(t) + 1, but we save
                            // two bytes since ~- takes precedence over
                            // multiplication
    c.fill(0); // fill with spaces, ' ' == 0
    c << t+'\n';
   }
   if ( n-1 ) f // This if statement is dissapointing 
}

এবং সর্বদা মত, ফাংশন ব্যবহার কল [](string t) { ... }("10");


4

টিএসকিউএল, 112 104 বাইট

DECLARE @ varchar(10)='12'

PRINT REPLICATE(@,@)+ISNULL('
'+REPLICATE(@+ISNULL(SPACE((@-2)*len(@))+@,'')+'
',@-2)+REPLICATE(@,@),'')
1. generating first line
2. adding hollow lines + line breaks
3. adding last line(when needed)

আপনি আমাদের মধ্যে যারা টি-এসকিউএল জানেন না তাদের জন্য একটি ব্যাখ্যা যুক্ত করতে পারেন?
বিড়াল

@ কেট একটি সংক্ষিপ্ত ব্যাখ্যা লিখেছেন এবং এতে একটি
ফিডালও রয়েছে

মজার, ধন্যবাদ! দেখে মনে হচ্ছে আপনার বাইট কাউন্টটি বন্ধ রয়েছে: এখানে চেক করুন
বিড়াল

@ বিড়াল ধন্যবাদ। আমি তার জন্য একটি লিঙ্ক খুঁজছিলাম। তবে এফআরওএমের সাথে শেষ লাইনটি কেবল এক্সকে মান ঘোষণা এবং নির্ধারণ করছে, আমি শুনেছি মান নির্ধারণ এবং ভেরিয়েবলগুলি গণনা করে না। আমি ভুল হলে আমাকে সংশোধন করুন। ভেরিয়েবলের এই অ্যাসাইনমেন্টটি দিয়ে আমি কয়েকটি বাইট সংরক্ষণ করার চেষ্টা করেছি। সাধারণ ভেরিয়েবলগুলি @ এর সাথে
উপরিবর্তিত হয়,

1
@ মমজি হ্যাঁ এটি করে - ৩. শেষ লাইন যুক্ত করুন (যখন প্রয়োজন হবে)
t-clausen.dk

3

মিনকোলাং 0.15 , 57 বাইট

nd?.d1-2&N.$z01FlOz2-[lz6Z" "I2-z2-*Dz6Z$O]01F.
z[z6Z]$Of

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

ব্যাখ্যা

n                Read number from input
 d?.             Stop if n=0, continue otherwise
    d1-2&N.      Print 1 and stop if n=1, continue otherwise
           $z    Store top of stack in register (z, which is n)

01F                                   Gosub to second line
   lO                                 Print newline
     z2-                              Push value from register and subtract 2
        [                             Pop k and run body of for loop k times
                                      (Does not run if k <= 0)
         l                            Push a newline
          z6Z                         Push z and convert to string
             " "                      Push a space
                I2-                   Push length of stack minus 2
                   z2-                Push z minus 2
                      *               Pop b,a and push a,b
                       D              Pop k and duplicate top of stack k times
                        z6Z           Push z and convert to string
                           $O         Output whole stack as characters
                             ]        Close for loop
                              01F.    Gosub to second line and stop after returning.


z[   ]       For loop that runs z times
  z6Z        Push z and convert to string
      $O     Output whole stack as characters
        f    Return to position called from

3

পার্ল, 79 76 74 বাইট

$_=$.=pop;s/./ /g;print$.x$.,$/,($.,$_ x($.-2),$.,$/)x($.-2),$.>1?$.x$.:''

অনেকটাই অকপট. প্রথম কমান্ডলাইন আর্গুমেন্টটিকে সংখ্যা হিসাবে নেওয়া হয়। স্ক্রিপ্টটি কোনও ফাইলে রাখুন এবং সাথে চালান perl file.pl 1


shiftসঙ্গে প্রতিস্থাপন করা যেতে পারে pop
ওলেগ ভি। ভলকভ

3

পার্ল, 62 60 58 + 2 = 60 বাইট

for$.(1..$_){say$.>1&$.<$_?$_.$"x(y...c*($_-2)).$_:$_ x$_}

-nlEপতাকা প্রয়োজন :

$ perl -nlE'for$.(1..$_){say$.>1&$.<$_?$_.$"x(y...c*($_-2)).$_:$_ x$_}' <<< 5
55555
5   5
5   5
5   5
55555

স্পেস যোগ করার সাথে:

for$.(1..$_) {
  say(
    $. > 1 & $. < $_
      ? $_ . $"x(length$_*($_-2)) . $_
      : $_ x $_
  )
}

3

আর, 90 বাইট

x=scan();m=matrix(x,x,x);k=2:(x-1)*(x>2);m[k,k]=format("",w=nchar(x));write(m,"",n=x,s="")

এটি x*xআকারের একটি ম্যাট্রিক্স তৈরি করে এবং তারপরে আকারের স্থানগুলি পূরণ করে nchar(x)। যদি x2 এর চেয়ে কম হয়, তবে কিছুই পূরণ করা হচ্ছে না।


আমি জানি এটি এক বছর পরে, কিন্তু ... x=scan();m=matrix(x,x,x);m[k<--c(1,x),k]=format("",w=nchar(x));write(m,"",x,,"")নেগেটিভ ইনডেক্সিং ব্যবহার করে এবং টিও.আরুনn=x,s=''x,,''
জিউসেপে

@ জিউসেপ এবং এখন সম্পূর্ণ অপঠনযোগ্য কিছু জন্য ... আরও একটি বাইট সংরক্ষণ করুন।
জাইসি

write("[<-"(matrix(x<-scan(),x,x),k<--c(1,x),k,gsub("."," ",x)),1,x,,"")72 বাইট জন্য।
জে.ডো


3

পিপ -l , 21 বাইট

প্রশ্নের বৈশিষ্ট্যগুলির তুলনায় ভাষা নতুন বৈশিষ্ট্যগুলি ব্যবহার করে, যা বর্তমান নীতি অনুসারে অনুমোদিত; যদি প্রশ্নের শব্দটির অর্থ নীতির ওভাররাইডে ব্যাখ্যা করা হয় তবে নীচে 25-বাইট উত্তর দেখুন।

Yq{MN++g%y>1?sMyy}MCy

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

কৌতুকের জন্য লুইস মেন্ডোর এমএটিএল উত্তরের জন্য ধন্যবাদ (a+1)%n<2

ব্যাখ্যা

Yqস্টিডিনের কাছ থেকে একটি লাইন পড়ে এবং তাতে প্রবেশ করে y। তারপর:

{              }MCy  Map this function to each coordinate pair in a y-by-y grid
                     (Inside the function, the list of both coords is g)
   ++g                Increment both coordinates
      %y              Take them mod y
 MN     >1?           Test whether the min of the resulting list is 2 or greater
           sMy         If so, it's in the center; use len(y) spaces
              y        If not, it's an edge; use the number y
                     Print result with newlines between rows (implicit, -l flag)

আসল 2016 উত্তর, 25 বাইট (সমতল -lপতাকা):

Yq{MN++*a%y<2?ysX#y}MMCGy

পরিবর্তণের:

  • MCআরও সম্প্রতি যুক্ত করা হয়েছিল; এই সময়ে, আমি MMCG(মানচিত্র-মানচিত্র + স্থানাঙ্ক-গ্রিড) ব্যবহার করেছি।
  • বর্তমান দোভাষীটিতে একটি ত্রুটি ছিল যা তালিকাগুলিতে ব্যবহার বন্ধ করে দিয়েছে ++, সুতরাং এর পরিবর্তে আমাকে ++*( ++প্রতিটি উপাদান প্রয়োগ করতে হবে) করতে হয়েছিল।
  • Mএপি বাড়ানো হয়েছে: এখন অনুলিপিগুলির <string1> M <string2>একটি তালিকা ফেরত দেয় ; এই সময়ে, আমি স্ট্রিং-পুনরাবৃত্তি করে স্পেস দিয়েছিলাম ।len(<string2>)<string1>sX#ylen(y)

2

পাইথ, 37 30 বাইট

J*K`QQI>Q1JV-Q2++Q*d-lJ*2lKQ;J

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

J*K`QQ                          set K to repr(input); that is, stringified
                                  set J to K repeated (input) times
      I>Q1                  ;   if input is greater than 1...
          J                     output J (stringified input times input)
           V-Q2                 do this (input - 2) times...
               ++               output the following on one line:
                 Q              the input number
                  *d-lJ*2lK     n spaces, where n = len(J) - 2*len(K)
                           Q    the input number again
                            ;   break out of everything
                             J  output J (str(input)*input) one last time,
                                  regardless of whether input > 1

2

রেটিনা , 90

আবার, আমি পুরোপুরি নিশ্চিত যে এটি বিশেষজ্ঞদের দ্বারা ব্যাপকভাবে গল্ফযোগ্য হবে:

.+
$&$&$*:$&$*;
+`(\d+:):
$1$1
+`([\d+:]+;);
$1$1
T`d` `(?<=;\d+:)[^;]+(?=:\d+:;\d)
:

;
¶

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


1
আমি একটি রেটিনা উত্তরও পোস্ট করেছি , তবে এটি খুব কম নয়। (আপনি কি শেষ পর্যায়ে থেকে মুক্তি পেতে পরিবর্তে ব্যবহার করতে পারেন ;?)
র্যান্ডম্রা

@ আরন্দোমরা ওয়েল 80 <90 সুতরাং আমার কাছ থেকে কোনও তর্ক নেই :)
ডিজিটাল ট্রমা

এবং যদি আপনি ব্যবহার pilcrow [^¶]+handily হয় .+
এলোমেলো

2

জেলি, 28 বাইট

জিআর, জেলি স্ট্রিংগুলিতে খারাপ কিনা, বা আমি জেলিতে খারাপ কিনা তা বলতে পারি না।

ŒṘ©L⁶xWẋWẋ$®W¤1¦€U'Z$$4¡j⁷ȯ⁷

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


আমি খাপ খাওয়ানো করার চেষ্টা করছি এই /: একটি উত্তরের জন্য কিন্তু অনেক ভাগ্য ছাড়াই,
Sp3000

2

পাইকে , ৩৩ বাইট (অ-প্রতিযোগিতামূলক)

QD`i*Djli2*lR-k*iRi]3J"bR+2Q-*jR+

ব্যাখ্যা:

                                  - autoassign Q = eval_or_not(input())
QD`i*                             - Get the input multiplied by itself
Q                                 - [Q]
 D                                - [Q, Q]
  `                               - [repr(Q), Q]
   i                              - i = stack[0]
    *                             - [stack[0]*stack[1]]

     Djli2*lR-                    - Get number of spaces
     D                            - [^,^]
      j                           - j = stack[0]
       l                          - len(stack[0])
        i2*                       - i*2
           l                      - len(stack[0])
            R                     - rotate_2()
             -                    - stack[0]-stack[1]

              k*iRi               - Get middle line
              k*                  - " "*^
                iRi               - [i,^,i]

                   ]3J"bR+        - Join middle line together
                   ]3             - list(stack[:3])
                     J"           - "".join(stack[0])
                       bR+        - ^+"\n"

                          2Q-     - Get middle lines
                          2Q-*    - Q-2

                              jR+ - Add end line
                              jR+ - ^+j

2

সিজেম, 27 বাইট

ri:X,_ff{a+[0X(]&XXs,S*?}N*

পরামর্শ দেওয়ার জন্য @ মার্টিনব্যাটনারকে ধন্যবাদ ffa+[0X(]&ভাল চমত্কার মেছো, কিন্তু ওহ।

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

ri:X              Read input integer and save as variable X
,_                Range, i.e. [0 1 ... X-1] and make a copy
ff{...}           Map with extra parameter, twice. This is like doing a Cartesian product
                  between two 1D arrays, but we get a nice X by X array at the end

                  For each coordinate pair,
a+                Put the two coordinates into an array
[0X(]&            Set intersection with the array [0 X-1]
X                 Push X
Xs,S*             Push a number of spaces equal to the length of X
?                 Ternary: choose one of the previous two depending on the set intersection

N*                Join X by X array with newlines

2

পাইথন 2, 70 টি অক্ষর

def p(i):
 k=`i`;j=i-2;h=k*i;print h+'\n'+(k+' '*j*len(k)+k+'\n')*j+h

3
I = 1 এর জন্য কাজ করে না।
বুকআল

2

হাস্কেল, 78 বাইট

i x=unlines$take x$1#s:3#[s++(3#s>>" ")++s]++[1#s]where s=show x;z#s=[z..x]>>s

ব্যবহারের উদাহরণ:

*Main> putStr $ i 4
4444
4  4
4  4
4444

ফাংশন >>উপকারে আসে: <list> >> <string>তোলে length <list>কপি <string>জন্য, যেমন উপরের এবং নীচের লাইন x=10হয় [1..10] >> "10"-> "10101010101010101010"



1
@ ম্যাক্সেখলাভকভ: ধন্যবাদ, তবে দুর্ভাগ্যক্রমে আপনার সংস্করণটি কার্যকর হয় না, 1যার জন্য একক আওয়াজ দেয় 1। এছাড়াও, আপনি স্ট্রিংগুলির একটি তালিকা ফিরিয়ে দেন, যেখানে চ্যালেঞ্জটি একটি একক স্ট্রিংয়ের জন্য বলে। আমাদের দিনগুলিতে অনেক কঠোর আইও নিয়ম ছিল, নমনীয় আইও নিয়মগুলি আরও সাম্প্রতিক বিষয়।
নিমি

2

পার্ল, 72 বাইট

$_=($.=pop)-2;say for($.x$.,($..($.x$_)=~s/./ /rg.$.)x$_,$.x$.)[0..$.-1]

আধুনিক পার্ল বৈশিষ্ট্যগুলির উপর নির্ভর করে:

বলতে 'কিছু'

পার্ল ৫.১০ সাল থেকে স্বয়ংক্রিয়ভাবে উপলভ্য (কেবলমাত্র v5.10 বা তার পরে ব্যবহার করুন)।

str_expr = ~ s /.../...// আর

প্রারম্ভিক str_expr পরিবর্তন না করে কোনও r এসল্ট (রেজেক্সের শেষে ' r ' বিকল্প ) দেওয়ার জন্য আনন্দের সাথে একটি মূল্যের (একটি str_expr স্কেলার ভেরিয়েবলের মধ্যে কমিয়ে আনা প্রয়োজন নয়) কাজ করতে স্বীকার করে ts


2

পিএইচপি, 151 বাইট

function s($n){for($r=0;$r<$n;$r++){for($c=0;$c<$n;$c++){if($r*$c&&$r!=$n-1&&$c!=$n-1){for($d=0;$d<=log10($n);$d++){echo' ';}}else{echo$n;}}echo"\n";}}

পরম গন্ডগোল, অনুকূলিতকরণের জন্য আরও বেশি সময় প্রয়োজন। s(Number)আপনাকে আউটপুট দেয়।


2

জাভা 8, 280 বাইট

interface A{static<T>void p(T o){System.out.print(o);}static void main(String[]a){long n=new Long(a[0]),l=a[0].length();for(long i=0;i<n;i++,p(a[0]));p("\n"+(n>1?a[0]:""));for(long j=2;j<n;j++,p(a[0])){for(long i=l*2;i<n*l;i++,p(' '));p(a[0]+"\n");}for(long i=1;i<n;i++)p(a[0]);}}

এটি সংক্ষিপ্ত উত্তরগুলির চেয়ে প্রায় 10 গুণ বেশি, যা জাবার পক্ষে সত্যিই ভাল!

উদাহরণ রান:

$ java A 10
10101010101010101010
10                10
10                10
10                10
10                10
10                10
10                10
10                10
10                10
10101010101010101010

2

পাইথন 3, 108 96 148 বাইট

a=input()
b=c=int(a)-2 if a!="1" else 0
print(a*int(a))
while b:print(a+" "*int(len(a))*c+a);b-=1
if a!="1":print(a*int(a))

Ungolfed / ব্যাখ্যা:

number = input() # Gets a number as input
iterator = var = int(number) - 2 if number != "1" else 0 # Assigns two variables, one of them an iterator, to the number minus 2 (the amount of middle rows in the square) if the number isn't 1. If it is, it sets the vars to 0 so the while doesn't trigger.
print(number * int(number)) # Prints the top row of the square.
while iterator != 0: # Loops for the middle rows
    print(number + " " * int(len(number)) * var + number) # Prints the number, then as many spaces as needed, and the number.
    iterator -= 1 # De-increments the iterator.
if number != 1: # Makes sure the number isn't 1, because 1 should return 1.
    print(a * int(a)) # Same as the first row, it prints the bottom row.

এটি আমার প্রথম উত্তর হিসাবে, কিছু গঠনমূলক সমালোচনা এবং / বা পরামর্শ সহায়ক হবে!


1
কিছু বাইট ছাঁটাই করতে ইন্ডেন্টেশনের জন্য একক স্পেস ব্যবহার করুন। আসলে, আপনার সমগ্র লুপ inlined করা যেতে পারে: while b!=0:print(a+" "*int(len(a))*c+1);b-=1। তদুপরি, while b:এর সমতুল্য while b!=0, সুতরাং এটি 3 আরও বাইট চলে গেছে।
মেগো

বাগফিক্স: ইনপুট 1 এখন 1 মুদ্রণ করে, ইনফিনিটেলুপ নয় (আমার ব্রাউজারটি আমাকে সত্যিই কিছুটা দুঃখ দিয়েছে)। এটি এখন আরও টন আরও বেশি বাইট নেয়।
OldBunny2800

2

মরিচা, 141 137 বাইট

কিছু ফর্ম্যাটিং স্টাফ আপত্তিজনক, অন্যথায় এটি অনেক বেশি দীর্ঘ হত longer

|i|{let f=||{for _ in 0..i{print!("{}",i)}println!("")};f();if i>1{for _ in 0..i-2{println!("{}{0:1$}",i,i.to_string().len()*(i-1))}f()}}

প্যাক করা নেই:

|i| {
    let f = || {
        for _ in 0..i {
            print!("{}",i)
        }
        println!("")
    };

    f();

    if i>1 {
        for _ in 0..i-2 {
            println!("{}{0:1$}",i,i.to_string().len()*(i-1))
        }
        f()
    }
}

খেলার মাঠের লিঙ্ক


আমি এখানে চেষ্টা করার পরে এটি কাজ করে না । আমি কীভাবে এটি পরীক্ষা করতে পারি?
আর

এখানে একটি খেলার মাঠের লিঙ্ক রয়েছে যাতে আপনি এটি পরীক্ষা করতে পারেন , আমি একটি ক্লোজার ব্যবহার করেছি যাতে আপনি এটি প্রথমে কোনও ভেরিয়েবলের কাছে নির্ধারিত করে তারপরে কল করুন।
এসেরি

ওহ ঠান্ডা. সত্যিই জং জানেন না, তবে দুর্দান্ত উত্তর!
আর

2

পাওয়ারশেল, 98 96 95 83 82 75 বাইট

param($n)($l="$n"*$n)
if(($m=$n-2)-ge0){,"$n$(' '*"$n".Length*$m)$n"*$m
$l}

অসম্পূর্ণ এবং ব্যাখ্যা স্ক্রিপ্ট:

$f = {

    param($n)
    ($l="$n"*$n)                #   let $l is a string contains N only and return this value as a first line
    $m=$n-2
    if($m-ge0){                 # if(N>1)
        $s=' '*"$n".Length*$m   #   let $s is spaces inside repeated (length of string represented of n * m)
        ,"$n$s$n"*$m            #   return $m strings contains: N, spaces and N
        $l                      #   retrun the first line again
    }

}

&$f 1
&$f 2
&$f 3
&$f 4
&$f 10

আউটপুট:

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