দ্বিপাক্ষিক বর্গের চিত্রণ করুন


28

প্রদত্ত (যে কোনও উপায়ে) দুটি পৃথক প্রাকৃতিক সংখ্যা (কোনও যুক্তিসঙ্গত আকারের), আউটপুট (যে কোনও উপায়ে) নীচের উদাহরণগুলির মতো তাদের যোগফলের বর্গ:

4 এবং 3 দেওয়া হয়েছে, আউটপুট:

12 12 12 12  9  9  9
12 12 12 12  9  9  9
12 12 12 12  9  9  9
16 16 16 16 12 12 12
16 16 16 16 12 12 12
16 16 16 16 12 12 12
16 16 16 16 12 12 12

দেওয়া 1 এবং 3, আউটপুট:

3 9 9 9
3 9 9 9
3 9 9 9
1 3 3 3

হোয়াইটস্পেস কারণের মধ্যে পরিবর্তিত হতে পারে তবে কলামগুলি বাম-সরে, ডান-প্রান্তিককরণ, বা (ছদ্ম-) কেন্দ্রিক হতে হবে।

একটি অনুবর্তনযোগ্য নিউলাইন ঠিক আছে, তবে মানক লুফোলগুলি হয় না।

এটি তাই # LanguageName, 123আপনার উত্তরের মতো একটি শিরোনাম অন্তর্ভুক্ত করুন যেখানে সংখ্যাটি অক্ষর (ভাষার জন্য বাইটস যা পাঠ্য ভিত্তিক নয়)। বড় ইউনিকোড চরগুলিতে কোড প্যাকিংয়ের অনুমতি নেই।


বোনাস: -৩ যদি আপনার কোডটি কেবল একটি বর্গক্ষেত্রের আউটপুট দেয় যখন সংখ্যার একটি 0 হয়; যেমন 0 এবং 3 দেওয়া হয়েছে, আউটপুট:

9 9 9
9 9 9
9 9 9

ইনপুট সংখ্যার সর্বাধিক মান কত? ধন্যবাদ।
উজ্জ্বল ডন

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

বর্গক্ষেত্র একটি প্রদত্ত, বা আমরা এটি 90 ডিগ্রি ঘোরানো যেতে পারি?
জন ডিভোরাক

1
কেন 0 টি মানের জন্য বোনাস? শুধু একটি বর্গ না হলে প্রত্যাশিত আউটপুট কি হবে?
মার্চ হো

@ মার্চহো এই কারণেই বোনাসটি এত ছোট। তবুও কিছু ভাষাগুলি খালি অ্যারে পরিচালনা করতে সক্ষম হতে পারে।
অ্যাডম

উত্তর:


14

জে, 9 বাইট - 3 = 6

#~@|.*/#~

@ এনবিজেডের এপিএল উত্তরের দ্বারা অনুপ্রাণিত হয়ে @ র্যান্ডোমরা দ্বারা গল্ফ হয়েছে। এটি এমন ক্রিয়া সংজ্ঞা দেয় যা সংখ্যার অ্যারে নেয় in এটি নিম্নলিখিত হিসাবে ব্যবহৃত হয়:

   (#~@|.*/#~) 4 3
12 12 12 12  9  9  9
12 12 12 12  9  9  9
12 12 12 12  9  9  9
16 16 16 16 12 12 12
16 16 16 16 12 12 12
16 16 16 16 12 12 12
16 16 16 16 12 12 12

আমি 3-বাইট বোনাসও দাবি করি, যেহেতু 0 টির একটি ইনপুট শূন্যের আকারের সাব-ম্যাট্রিক্স তৈরি করে:

   (#~@|.*/#~) 4 0
16 16 16 16
16 16 16 16
16 16 16 16
16 16 16 16
   (#~@|.*/#~) 0 3
9 9 9
9 9 9
9 9 9

ব্যাখ্যা

এই চ্যালেঞ্জের জের একটি নির্দিষ্ট প্রান্ত রয়েছে। প্রাতঃরাশের জন্য অ্যারে ম্যানিপুলেশন সমস্যা খাওয়ার পাশাপাশি এটি ডিফল্টরূপে 2 ডি ম্যাট্রিকগুলি সঠিক ফর্ম্যাটে মুদ্রণ করে।

       #~  Replicate each number n in input n times
#~@|.      The same for reversed input
     */    Compute their multiplication table

এটি আমাকে বাড়িতে ঠিক বোধ করে।
অ্যাডম

3
এই সমাধানটি table flipperASCII ইমোটিকনের একটি অস্পষ্ট পরিবর্তনের মতো দেখাচ্ছে (╯ ° □ °)) ╯︵ ┻━┻
পিট টিএনটি

10

অক্টাভা, 45 বাইট - 3 = 42

s=@(m,n)[a=ones(n,1)*n;b=ones(m,1)*m].*[b;a]'

ব্যাখ্যা

এটি দুটি ভেক্টর তৈরি করে (ধরে m = 4নেওয়া যাক এবং n = 3):

ones(n, 1)আকারের একটি অ্যারে তৈরি করে n x 1, তাই nআমরা যেগুলি পেয়েছি তার দ্বারা গুণিত করুন :

ones(n, 1) * n => [3 3 3]' (where ' is transpose... n x 1 is a column vector)

a = [3 3 3  4 4 4 4]'   %// a is a column vector
b = [4 4 4 4  3 3 3]    %// b is a row vector

তারপরে ভেক্টরগুলিকে স্বয়ংক্রিয় সম্প্রচার সম্প্রসারণের সাথে একটি উপাদান-ভিত্তিক ফ্যাশনে গুণিত করা হয় যাতে 7-এলিমেন্ট ভেক্টরগুলি 7x7-উপাদান ম্যাট্রিক্স উত্পাদন করে:

    [3] .* [4 4 4 4 3 3 3]
    [3]
    [3]
    [4]
    [4]
    [4]
    [4]

উদাহরণস্বরূপ, aদ্বারা প্রথম সারির গুণনটি bদেয়:

    [3] .* [4 4 4 4 3 3 3] = [12 12 12 12  9  9  9]

এবং একইভাবে বাকি সারিগুলির জন্য a

আউটপুট:

>> s(4,3)
ans =

   12   12   12   12    9    9    9
   12   12   12   12    9    9    9
   12   12   12   12    9    9    9
   16   16   16   16   12   12   12
   16   16   16   16   12   12   12
   16   16   16   16   12   12   12
   16   16   16   16   12   12   12

>> s(3,0)
ans =

   9   9   9
   9   9   9
   9   9   9

আপনি এখানে এটা চেষ্টা করতে পারেন ideone


আপনি মুছে ফেলতে পারেন s=। আমাদের কনভেনশন রয়েছে যে বেনামে ফাংশন / ল্যাম্বডাস একটি ভেরিয়েবলের মধ্যে সঞ্চয় করতে হয় না।
flawr

6
@flawr কিন্তু তারপর উত্তর 42 হবে না ...
পানপাত্র

ঠিক আছে।
আদম

9

ডায়ালগ এপিএল , 10-3 = 7

এই উত্তরটি দ্বারা অনুপ্রাণিত হয়েছে যেখানে আর্গুমেন্টগুলি প্রতিলিপি করা হয় এবং তারপরে একটি গুণ টেবিলটিতে ব্যবহৃত হয়:

⊖∘.×⍨(/⍨⎕)

একটি প্রম্পট ( ⎕:) জারি করে এবং তখন প্রবেশ করা কোনও অভিব্যক্তি মূল্যায়ন করে। (নিরাপত্তার কারণে, এই কাজের উপর না TryAPL কিন্তু এটা কাজ করে NGN / APL ।)
/⍨তার যুক্তি নিজেই বার (প্রতিলিপি /⍨4 33 3 3 4 4 4 4)
∘.×⍨একটি গুণ টেবিল তৈরি করা হয়।
উল্টে ফ্লপ করে।

এটি কোনও দৈর্ঘ্যের ইনপুটটিতে কাজ করতে ঘটে (ইনপুটটি 6 স্পেসে ইনডেন্টেড থাকে, আউটপুট বাম মার্জিনে থাকে):

      ⊖∘.×⍨(/⍨⎕)
⎕:
      ⍬      ⍝ Empty list (the square of nothing)
      ⊖∘.×⍨(/⍨⎕)
⎕:
      0      ⍝ 0​² = 0
      ⊖∘.×⍨(/⍨⎕)
⎕:
      0 1      ⍝ (0+1)​² = 1²
1
      ⊖∘.×⍨(/⍨⎕)
⎕:
      2 3      ⍝ (2+3)​² = 2² + 3²
6 6 9 9 9
6 6 9 9 9
6 6 9 9 9
4 4 6 6 6
4 4 6 6 6
      ⊖∘.×⍨(/⍨⎕)
⎕:
      1 2 3      ⍝ (1+2+3)​² = 1² + 2(1×2) + 2(1×3) + 2² + 2(2×3) + 3²
3 6 6 9 9 9
3 6 6 9 9 9
3 6 6 9 9 9
2 4 4 6 6 6
2 4 4 6 6 6
1 2 2 3 3 3
      ⊖∘.×⍨(/⍨⎕)
⎕:
      ⍳4    ⍝ Integers 1 through 4
4 8 8 12 12 12 16 16 16 16
4 8 8 12 12 12 16 16 16 16
4 8 8 12 12 12 16 16 16 16
4 8 8 12 12 12 16 16 16 16
3 6 6  9  9  9 12 12 12 12
3 6 6  9  9  9 12 12 12 12
3 6 6  9  9  9 12 12 12 12
2 4 4  6  6  6  8  8  8  8
2 4 4  6  6  6  8  8  8  8
1 2 2  3  3  3  4  4  4  4

* মূলত, আমার মনে একটি আলাদা সমাধান ছিল: দুটি আর্গুমেন্টের প্রতিটি সংমিশ্রনের জন্য একটি আয়তক্ষেত্র পৃথকভাবে তৈরি করা হয়। তারপরে চারটি স্কোয়ারটি উল্লম্ব এবং অনুভূমিকভাবে একত্রিত করা হবে। দেখে মনে হচ্ছে:

,/⍪⌿⊖∘.(,⍴×)⍨⎕

অনুরোধ, উপরে হিসাবে।
,⍴×<( ,) আর্গগুলি একত্রিত করুন এবং এটির ( ) তাদের পণ্য ( ×) দিয়ে ভরাট একটি আয়তক্ষেত্র গঠন করতে ব্যবহার করুন ।
∘.()⍨একটি কক্ষ তৈরি করুন যেখানে প্রতিটি ঘর যা নির্দিষ্ট করা আছে ()
উল্লম্বভাবে ফ্লিপ করুন।
⍪⌿উল্লম্বভাবে কোষ একত্রিত করুন।
,/অনুভূমিকভাবে ঘর একত্রিত করুন।


1
নিস! সমান স্কোর সহ জেতে একই ধারণা:(|.*/])@#~
জাগার্ব

@ জগারব আপনার উত্তরটি আপডেট করুন এবং আমার মতো একটি পাদটীকা রাখুন। জে এটি প্রাপ্য!
অ্যাডম

7

আর, 31 - 3 = 28

rev(b<-rep(a<-scan(),a))%*%t(b)

ব্যাখ্যা:

           a<-scan()            # take numeric input and store as vector a
    b<-rep(         ,a)         # repeat each numeric input by itself and store as vector b
rev(                   )        # the reverse of vector b
                        %*%     # matrix multiplication
                           t(b) # the transposed of vector b

এটি আরও দুটি সংখ্যার জন্য কাজ করে। উদাহরণস্বরূপ, (5,3,2) এর আউটপুটটি দেখতে এরকম দেখাচ্ছে:

      [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
 [1,]   10   10   10   10   10    6    6    6    4     4
 [2,]   10   10   10   10   10    6    6    6    4     4
 [3,]   15   15   15   15   15    9    9    9    6     6
 [4,]   15   15   15   15   15    9    9    9    6     6
 [5,]   15   15   15   15   15    9    9    9    6     6
 [6,]   25   25   25   25   25   15   15   15   10    10
 [7,]   25   25   25   25   25   15   15   15   10    10
 [8,]   25   25   25   25   25   15   15   15   10    10
 [9,]   25   25   25   25   25   15   15   15   10    10
[10,]   25   25   25   25   25   15   15   15   10    10

এটির বৈধ উত্তর হওয়ার জন্য আপনার সম্ভবত এটি মোড়ানো catবা writeক্রম প্রয়োজন in
ডেভিড আরেনবার্গ

@ ডেভিড আরেনবুর্গ আমি দেখতে পাচ্ছি না কেন? এটি বলে "আউটপুট (যে কোনও উপায়ে)"। এটি আমাকে আউটপুট দেওয়ার একমাত্র মাধ্যম নিয়েছিল যাতে তা আমাকে প্রয়োজনীয়তার মধ্যে রাখে।
freekvd

হ্যাঁ আপনি ঠিক বলেছেন। তারা এর অর্থ কী তা নিশ্চিত নয়।
ডেভিড আরেনবুর্গ

@ ডেভিড আরেনবুর্গ হ্যাঁ, ভাল আছে। এটি একটি ডেটা / পাঠ্য চ্যালেঞ্জ, কোনও ইনপুট / আউটপুট চ্যালেঞ্জ নয়।
অ্যাডম

5

হাস্কেল, 153 125 বাইট - 3 = 122

(#)=replicate
d=length.show
y%x=unlines$(>>= \n->(1+d(x*x+y*y)-d n)#' '++show n)<$>x#(y#(x*y)++x#(x*x))++y#(y#(y*y)++x#(x*y))

কোডটির অর্ধেকটি আউটপুট বিন্যাসের জন্য। এটি নির্বিচারে বড় পূর্ণসংখ্যার জন্য কাজ করে। উদাহরণ আউটপুট:

> putStrLn $ 4 % 3
12 12 12 12  9  9  9
12 12 12 12  9  9  9
12 12 12 12  9  9  9
16 16 16 16 12 12 12
16 16 16 16 12 12 12
16 16 16 16 12 12 12
16 16 16 16 12 12 12

> putStrLn $ 6 % 0
36 36 36 36 36 36
36 36 36 36 36 36
36 36 36 36 36 36
36 36 36 36 36 36
36 36 36 36 36 36
36 36 36 36 36 36

কখনও কখনও সংখ্যার মধ্যে অতিরিক্ত শ্বেত স্থান থাকে কারণ আমি এর x*x+y*yপরিবর্তে প্রয়োজনীয় স্থানটি গণনা করছি max (x*x) (y*y), যেমন

> putStrLn $ 2 % 3
  6  6  9  9  9
  6  6  9  9  9
  6  6  9  9  9
  4  4  6  6  6
  4  4  6  6  6

তবে এটি সর্বাধিক এক সাদা স্থান।


4

গণিত 56-3 = 53

আপডেট : আমি একটি দ্বিতীয় পদ্ধতি যুক্ত করেছি, ঠিক একই কোড আকারের, একটি নামকৃত ফাংশন ব্যবহার করে। এটি একটি Arrayপরিবর্তে একটি নিয়োগ করে Tableকিন্তু একই যুক্তি অনুসরণ করে। (নিচে দেখ.)

পদ্ধতি 1

এটি পণ্যগুলির একটি সারণী তৈরি করে, এর কারণগুলি সারি, কলাম মানগুলির উপর নির্ভর করে। সংখ্যার জোড় সংখ্যার তালিকা হিসাবে প্রবেশ করানো হয়। নিম্নলিখিত হিসাবে অনামী ফাংশনগুলি সর্বাধিক দরকারী যদি সেগুলি প্রোগ্রামে একবার ব্যবহার করা হয়। অন্যথায় এটি একটি নামকৃত ফাংশনটি ব্যবহার করে আরও বোধগম্য হয়।

Grid@Table[If[r>#2,#,#2]If[c>#,#2,#],{r,#+#2},{c,#+#2}]&

প্রতিটি ফ্যাক্টর একটি যদি-তারপর বিবৃতি হয়:

  • If[r>#2,#,#2] এর অর্থ, "সারি সংখ্যাটি যদি দ্বিতীয় ইনপুটের চেয়ে বেশি হয় তবে প্রথম ইনপুটটিকে ফ্যাক্টর হিসাবে ব্যবহার করুন, অন্যথায় দ্বিতীয় ইনপুটটি ব্যবহার করুন।
  • If[c>#,#2,#] এর অর্থ, "কলাম নম্বরটি যদি প্রথম ইনপুটটির চেয়ে বেশি হয় তবে দ্বিতীয় ইনপুটটিকে ফ্যাক্টর হিসাবে ব্যবহার করুন, অন্যথায় প্রথম ইনপুটটি ব্যবহার করুন।

উদাহরণ 1

 Grid@Table[If[r>#2,#,#2]If[c>#,#2,#],{r,#+#2},{c,#+#2}]&@@{5,3}

ex1


উদাহরণ 2

Grid@Table[If[r>#2,#,#2]If[c>#,#2,#],{r,#+#2},{c,#+#2}]&@@{0,3}

ex2


পদ্ধতি 2 (এছাড়াও 56-3 = 53)

এটি পদ্ধতি 1 টির মতো একইভাবে কাজ করে But তবে কল করার সময় এটিতে কম কোড দরকার। এবং সারণিগুলি কোনও টেবিলে থাকা ঘরগুলি থেকে আলাদা, ঠিকানাগুলি। যদি এই ফাংশনটি একাধিকবার ব্যবহৃত হয় তবে এই পদ্ধতিটি ব্যবহার করা আরও ভাল।

a_~f~b_:=Grid@Array[If[#>a,a,b]If[#2>a,b,a]&,{a+b,a+b}]

উপরের উদাহরণগুলি নিম্নলিখিত দ্বারা উত্পাদিত হয়:

প্রাক্তন 1:

f[4,3]

প্রাক্তন 2:

f[0,3]

1
এটা বুদ্ধিমান। এই পদ্ধতিটি দিয়ে আমি আমার নিজস্ব সমাধানটি 4 টি অক্ষর দ্বারা হ্রাস করতে পারি।
অ্যাডাম

ধন্যবাদ। আমি ঠিক বুঝতে পেরেছি যে একই পন্থা একটি নামযুক্ত ফাংশন নিয়ে কাজ করে। উপরে পদ্ধতি 2 দেখুন।
ডেভিডসি

4

অক্টাভা, 34 - 3 = 31

@(a)rot90(b=repelems(a,[1,2;a]))*b

উদাহরণ:

octave:1> f = @(a)rot90(b=repelems(a,[1,2;a]))*b;
octave:2> f([4,3])
ans =

   12   12   12   12    9    9    9
   12   12   12   12    9    9    9
   12   12   12   12    9    9    9
   16   16   16   16   12   12   12
   16   16   16   16   12   12   12
   16   16   16   16   12   12   12
   16   16   16   16   12   12   12

octave:3> f([0,3])
ans =

   9   9   9
   9   9   9
   9   9   9

বাহ, আমি কোন ধারণা ছিল না repelemsঅস্তিত্ব। অসাধারণ!
বেকার

4

সিজেম, 27 বাইট - 3 = 24

q:L~_]ze~_ff{*sL,2*Se[}W%N*

সিজেএম শৈলীর অ্যারে হিসাবে ইনপুট নেয়। এটি প্রয়োজনের তুলনায় কিছুটা বেশি ব্যবধান ব্যবহার করে তবে আমি মনে করি এটি "কারণের মধ্যেই" আছে এবং এটি সর্বদা সঠিকভাবে প্রান্তিক হয়।

এটি এখানে পরীক্ষা করুন।

ব্যাখ্যা

q:L    e# Read the input and store it in L.
~_     e# Evaluate the input, pushing [A B] onto the stack and duplicate it.
]z     e# Wrap both in an array and transpose it to get [[A A] [B B]].
e~     e# Run-length decode, getting A copies of A and B copies of B.
_ff{   e# Double map over each pair of entries in this new array...
  *s   e#   Multiply the two values.
  L,2* e#   Push twice the length of the input string.
  Se[  e#   Pad the result to this width with spaces (from the left).
}
W%     e# Reverse the resulting matrix to get the correct orientation.
N*     e# Join the rows with linefeed characters.

দুর্দান্ত, তবে কী কারণে এত বেশি সাদা স্থান তৈরি হয় এবং এটি হ্রাস করার জন্য কী প্রয়োজন হবে?
অ্যাডাম

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

4

সি ফাংশন (গ্লিবসি ব্যবহার করে), 122 বাইট - 3 = 119 119

2 লুপের সাথে বেশিরভাগ সরল বাস্তবায়ন। আমি আশা করি যে এখানে কিছু গল্ফিংয়ের সুযোগ আমি মিস করেছি:

f(n,m,x,y){for(x=0;x<n+m;x+=puts(""))for(y=0;y<n+m;y++)printf(" %*d",snprintf(0,0,"%d",n>m?n*n:m*m),(x<m?m:n)*(y<n?n:m));}

ফাংশনের প্রথম দুটি পরামিতিতে ইনপুটগুলি পাস করা হয়, অন্য দুটি ডামি। কলামগুলি ডান সারিবদ্ধ হয়।

নোট গ্লিবিসি puts()সর্বদা অনুভূত ট্রেইলিং নিউলাইন সহ লিখিত বাইটের সংখ্যা ফেরত বলে মনে হয়, যা আমাদের এখানে প্রয়োজন। কোনও গ্যারান্টি নেই যে এটি অন্য কোনও লিবিসির সাথে কাজ করবে।

একটি সম্পূর্ণ প্রোগ্রামে:

f(n,m,x,y){for(x=0;x<n+m;x+=puts(""))for(y=0;y<n+m;y++)printf(" %*d",snprintf(0,0,"%d",n>m?n*n:m*m),(x<m?m:n)*(y<n?n:m));}

int main (int argc, char **argv) {
    if (argc == 3) {
        f(atoi(argv[1]),atoi(argv[2]));
    }
}

gcc sqrbin.c -o sqrbin(বা make sqrbin) হিসাবে সংকলন করুন । সতর্কতাগুলি নিরাপদে উপেক্ষা করা যেতে পারে।

উদাহরণ আউটপুট:

$ ./sqrbin 4 3
 12 12 12 12  9  9  9
 12 12 12 12  9  9  9
 12 12 12 12  9  9  9
 16 16 16 16 12 12 12
 16 16 16 16 12 12 12
 16 16 16 16 12 12 12
 16 16 16 16 12 12 12
$ ./sqrbin 4 0
 16 16 16 16
 16 16 16 16
 16 16 16 16
 16 16 16 16
$ 

আমার অভিজ্ঞতার ভিত্তিতে, এর রিটার্ন মান puts()হ'ল মেশিন নির্ভর। উদাহরণস্বরূপ এটি আমার উপর 10 এছাড়াও, এখানে একটি পরামর্শ: আপনি যদি শর্তাধীনভাবে বাহ্যিক লুপে কাউন্টারকে বাড়িয়ে দেন তবে আপনি সাধারণত দুটি লুপকে একটিতে সংকোচিত করতে পারেন। আমার সমাধান কীভাবে এটি করা যেতে পারে তা দেখায়।
xsot

@ এক্সসোট হ্যাঁ, puts()রিটার্ন কোডটি সাফল্যের জন্য কেবলমাত্র +++ এর নিশ্চয়তা রয়েছে। তবে গ্লিবসি দিয়ে আমার পরীক্ষা করে দেখা যাচ্ছে যে রিটার্নের মানটি বাইটের সংখ্যা। লুপ একীকরণের জন্য - হ্যাঁ, আমি সেই কৌশলটি সম্পর্কে অবগত এবং এখানের এখন পর্যন্ত এই ক্ষেত্রে কোনও সংক্ষিপ্তকরণ না করেই চেষ্টা করেছি।
ডিজিটাল ট্রমা

2

রুবি, (133 - 3) = 130 বাইট

s=1
a=ARGV.map{|e|s*=(e=e.to_i);[e]*e}.flatten
s=s.to_s.size
a.reverse.each{|i|a.each{|j|print (i*j).to_s.rjust(s).ljust(s+3)};puts}

4,3 এর জন্য

12   12   12   12    9    9    9   
12   12   12   12    9    9    9   
12   12   12   12    9    9    9   
16   16   16   16   12   12   12   
16   16   16   16   12   12   12   
16   16   16   16   12   12   12   
16   16   16   16   12   12   12

1,3 এর জন্য

3   9   9   9   
3   9   9   9   
3   9   9   9   
1   3   3   3

0,3 এর জন্য

9   9   9   
9   9   9   
9   9   9

2
পিপিসিজিতে আপনাকে স্বাগতম! আমি মনে করি না যে আপনার প্যাডিং প্রচুর সংখ্যার জন্য যথেষ্ট। একটি 1এবং একটি বৃহত সংখ্যক পছন্দ করা বিবেচনা করুন 9999। এর চেয়ে বেশি sবেরিয়ে আসবে 4, সুতরাং আপনি প্রস্থে প্যাডিং করছেন s+3 = 7তবে 9999^28 টি সংখ্যা দরকার needs 2*sপরিবর্তে আপনি ব্যবহার করতে পারেন ।
মার্টিন এন্ডার

2
নির্বিশেষে, এখানে কিছু গল্ফিং টিপস রয়েছে: করণের rjustআগে আপনার কেন দরকার তা আমি দেখতে পাচ্ছি না ljust। আপনি সংক্ষিপ্ত printকরতে পারেন $><<(এবং এর পরে স্থানটি থেকে মুক্তি পেতে পারেন)। ARGVউপনাম হয়েছে $*। আপনি এড়াতে সক্ষম হতে পারে flatten: ভালো কিছু সঙ্গে আপনার অ্যারের নির্মাণের দ্বারা codegolf.stackexchange.com/a/19493/8478 । এছাড়াও, কেবলমাত্র ফাংশন-উত্তরগুলি এখানে প্রায় নিশ্চিতভাবেই অনুমোদিত (এমনকি নামবিহীন ফাংশন), যাতে এই ফাংশনটি পূর্ণসংখ্যাগুলিকে ইনপুট হিসাবে গ্রহণ করতে পারে এবং আপনাকে কোনও কাজ করতে হবে না .to_i
মার্টিন এন্ডার

@ মার্টিনবাটনার, টিপসের জন্য আপনাকে ধন্যবাদ।
হর্ষ গুপ্ত

2

পাইথন 2, 176 বাইট - 3 = 173

def g(m,n):
 y,x,z,l,f='y','x','z','l','%'+str(len(str(max(m*m,n*n))))+'s'
 d={y:m*n,x:n*n,z:m*m,l:'\n'}
 for i in map(lambda x:d[x],(y*m+x*n+l)*n+(z*m+y*n+l)*m): print f % i,

এটি একটি অক্ষর গ্রিড তৈরি করতে পাইথন স্ট্রিং ফাংশন ব্যবহার করে, তারপরে অক্ষরের পরিবর্তে পূর্ণসংখ্যা এবং বিন্যাসিত আউটপুট প্রিন্ট করে।


আকর্ষণীয় পদ্ধতি।
অ্যাডম

1

মতলব, 58 - 3 = 55

বেনামে ফাংশন ব্যবহার করা:

@(a,b)flipud(blkdiag(a^2*ones(a)-a*b,b^2*ones(b)-a*b)+a*b)

উদাহরণ:

>> @(a,b)flipud(blkdiag(a^2*ones(a)-a*b,b^2*ones(b)-a*b)+a*b)
ans = 
    @(a,b)flipud(blkdiag(a^2*ones(a)-a*b,b^2*ones(b)-a*b)+a*b)
>> ans(4,3)
ans =
    12    12    12    12     9     9     9
    12    12    12    12     9     9     9
    12    12    12    12     9     9     9
    16    16    16    16    12    12    12
    16    16    16    16    12    12    12
    16    16    16    16    12    12    12
    16    16    16    16    12    12    12

>> @(a,b)flipud(blkdiag(a^2*ones(a)-a*b,b^2*ones(b)-a*b)+a*b)
ans = 
    @(a,b)flipud(blkdiag(a^2*ones(a)-a*b,b^2*ones(b)-a*b)+a*b)
>> ans(0,3)
ans =
     9     9     9
     9     9     9
     9     9     9

(পুরানো সমাধান) 59 - 3 = 56

বেনামে ফাংশন ব্যবহার করা:

@(a,b)[b*a*ones(b,a) b^2*ones(b);a^2*ones(a) a*b*ones(a,b)]

1

সি, (125 - 3) বাইট

i,j,a;main(b,s){for(sscanf(gets(s),"%d %d",&a,&b);j<a+b;)printf(++i>a+b?i=!++j,"\n":"%*d",strlen(s)*2,(i<a?a:b)*(j<b?b:a));}

ইনপুট একই লাইনে দুটি স্পেস-বিভাজিত পূর্ণসংখ্যার হিসাবে নেওয়া হয়। প্রতিটি কক্ষ ইনপুট স্ট্রিংয়ের দ্বিগুণ দৈর্ঘ্যে ফাঁকা স্থান সহ প্যাড করা হয়।


আমি এটি জিসিসি (৪.৮.৪) দিয়ে সংকলন করতে সমস্যা হচ্ছি ...
ডন করবেন না

1
আমি এটি golf.shinh.org/check.rb এ পরীক্ষা করেছি যা ডেবিয়ান প্যাকেজ জিসিসি-৪.6.১-২ ব্যবহার করে। কি সংকলন ত্রুটি আপনি পাচ্ছেন?
xsot

দুঃখিত, আমি আবারও সমস্ত এক লাইনের মতো চেষ্টা করেছি এবং এটি কাজ করেছে, ... তবে আমি যখন চালনা করি তখন একটি সেগফল্ট পাই। আমি স্ট্রিং 2 3 এ প্রবেশ করলাম এবং ফিরতি হিট করব এবং এটি বলছে সেগমেন্টেশন ফল্ট (কোর ডাম্পড)
উজ্জ্বল

দুঃখিত তবে আমি জানি না কেন এটি আপনার পক্ষে কার্যকর হবে না। অন্তত আপনি যে সাইটটিকে আগে লিঙ্ক করেছেন তার কোডটি আজও চেষ্টা করে দেখতে পারেন :)
xsot

1

পাইথ, 39 - 3 = 36

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

JAQL*b]jdm.[`d\ l`eS^R2Jsm*d]*bdJj+yHyG

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


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