সীমানা ছাড়াই পারফেক্ট স্কোয়ার


16

প্রদত্ত n=m^2, পূর্ণসংখ্যার একটি তালিকা ফিরে আসুন যা m x mথেকে পূর্ণসংখ্যার গ্রিড সীমানা করে না 1 to n

উদাহরণ

এন = 1 (মি = 1)

গ্রিড:

[1]

ফেরত দিন:

[]

n = 4 (মি = 2)

গ্রিড:

[1,2]
[3,4]

ফেরত দিন:

[]

n = 9 (মি = 3)

গ্রিড:

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

ফেরত দিন:

[5]

n = 16 (মি = 4)

গ্রিড:

[ 1, 2, 3, 4]
[ 5, 6, 7, 8]
[ 9,10,11,12]
[13,14,15,16]

ফেরত দিন:

[6,7,10,11]

উচ্চতর মানগুলির জন্য m, এই উত্তরটি দুর্দান্ত দর্শন দেয়।


নিয়মাবলী:

  • আপনি উভয় mবা n(যেখানে n = m*m) নিতে পারেন ।
    • গ্রহণ যদি nআপনি যেখানে সেখানে বিদ্যমান নেই অনির্ধারিত আচরণ আছে করার অনুমতি দেওয়া হয় mজন্য n(যেমন 15)।
    • n > 0, m > 0: উভয়ই পূর্ণসংখ্যার মান হতে হবে।
  • আউটপুটটি 1D / 2D অ্যারে, ম্যাট্রিক্স বা হোয়াইটস্পেসের সীমানা হিসাবে হতে পারে
  • আউটপুট অবশ্যই সর্বনিম্ন থেকে বড় পর্যন্ত হওয়া উচিত।
    • যদি ম্যাট্রিক্স হিসাবে আউটপুট দেওয়ার অর্থ এটি গ্রিডে যেমন হয় তেমনি হওয়া উচিত।
  • এটি , সর্বনিম্ন বাইট-কাউন্ট জেতা।

আমার শেষের সম্পূর্ণ দোষ, আমি এটি ভুলভাবে পড়েছি।
ডেভেলপিং

3
@ ডেভেলপিং ডেভেলপার ওহে মানুষ, প্রতিবারের জন্য যদি আমার কাছে একটি নিক থাকে তবে আমি বিয়ার বা দু'টি কিনতে পারব।
যাদু অক্টোপাস উরন 21

যদি 2 ডি অ্যারে হিসাবে আউটপুট দেওয়া হয়, তবে একটি ফাঁকা অ্যারে ফলাফলের মধ্যে অন্তর্ভুক্ত করা যাবে?
শেগি

উত্তর:




6

অক্টাভা , 26 বাইট

@(m)find((t=[0:m-2 0])'*t)

কোড একটি বেনাম ফাংশন সংজ্ঞায়িত করে যা ইনপুট করে m একটি (সম্ভবত খালি) কলাম ভেক্টরকে এবং আউটপুট দেয়।

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

ব্যাখ্যা

@(m)                          % Define anonymous function of m
          t=[0:m-2 0]         % Build row vector [0 1 2 ... m-2 0] and assign it
                              % to variable t
         (           )'       % Complex-conjugate transpose into a column vector
                       *t     % Matrix-multiply that column vector times the row
                              % vector t. This gives an m×m matrix with zeros in
                              % the border and nonzeros in the other entries.
    find(                )    % Linear indices of nonzero entries. The result is
                              % in increasing order

5

জেলি , 8 বাইট

’Ṗ×+€ṖḊ€

একটি মোনাডিক লিঙ্ক mতালিকাগুলির তালিকা (অভ্যন্তরীণ সারিগুলি) গ্রহণ এবং ফিরিয়ে আনছে ।

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

কিভাবে?

’Ṗ×+€ṖḊ€ - Link m                    e.g. 5
’        - decrement                      4
 Ṗ       - pop (implicit range of input)  [1,2,3]
  ×      - multiply by m                  [5,10,15]
     Ṗ   - pop m                          [1,2,3,4]
   +€    - add €ach                       [[6,7,8,9],[11,12,13,14],[16,17,18,19]]
      Ḋ€ - dequeue €ach                   [[7,8,9],[12,13,14],[17,18,19]]

অজগরটি করায় কি মনে হয় নি;)?
যাদু অক্টোপাস উরন 21


4

Haskell, , 31 বাইট

f m=[i|i<-[m..m*m-m],mod i m>1]

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

গণিত সংস্করণ:

f(m) = {i : i  (m, m² - m), i mod m < 1}

: P: P


অপেক্ষা করুন, এটি বৈধ নয়, f(5)হওয়া উচিত7,8,9,12,13,14,17,18,19
ম্যাজিক অক্টোপাস উরন

দাঁড়াও, উফ আমি ডাম্বাস।
নিখুঁতভাবে

4

আর , 44 43 32 বাইট

function(n)(x=n:(n^2-n))[x%%n>1]

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

একটি ভেক্টর ফেরত দেয়।


ঝরঝরে আউটপুট ফর্ম্যাট, এটি কি ডিফল্টরূপে আর-তে একটি ম্যাট্রিক্স আউটপুট হয়?
ম্যাজিক অক্টোপাস উরন

1
হ্যাঁ, এটি printএকটি জন্য ফাংশন matrix
জিউসেপে

1
দ্বিতীয় বর্জন করতে mmatrix(1:m^2,m,m,T):matrix(1:m^2,m,,T)
JAD

@ জ্যাড হ্যাঁ, অবশ্যই ধন্যবাদ।
জিউসেপ

খুব ভাল, আপনি স্ক্যান () ব্যবহার সম্পর্কে কী ভাবেন? আপনি 2 বাইট সংরক্ষণ করতে পারেন। এটি অনলাইন চেষ্টা করুন!
রবার্ট হ্যাকেন


3

প্রোটন , 28 বাইট

k=>filter(u=>1<u%k,k..k*~-k)

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

লাগে মি ইনপুট হিসাবে।

কিভাবে?

[কে, কে -কে) তে পূর্ণসংখ্যগুলি ফিল্টার করে যা কে দ্বারা বিভক্ত হয়ে গেলে , অবশিষ্ট 1 টির চেয়ে বেশি ফলন করে । এটি নিশ্চিত করে যে উভয় প্রান্তটি ছাঁটাই হয়েছে, কারণ প্রথমটি 0 দেয় এবং শেষটি 1 দেয় । যে কোনও বৈধ পূর্ণসংখ্যার জন্য উচ্চতর মান ফিরিয়ে দেওয়ার গ্যারান্টিও দেওয়া হয়, কারণ তারা ক্রমাগত।




2

LItä¦¨ε¦¨ঠিক আছে, আউটপুটটি 2 ডি অ্যারে হতে পারে।
ম্যাজিক অক্টোপাস উরন

ওহ, আমি আরও ভাল ভাল পড়া উচিত ছিল। সতর্ক থাকুন জন্য ধন্যবাদ!
মিঃ এক্সকোডার 20



2

এমএটিএল , 8 বাইট

:G\1>&*f

ইনপুট হয় m। আউটপুট ক্রমবর্ধমান ক্রম সংখ্যা।

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

ব্যাখ্যা

4উদাহরণ হিসাবে ইনপুট বিবেচনা করুন ।

:     % Implicit input: m. Push range [1 2 ... m-1 m]
      % STACK: [1 2 3 4]
G\    % Modulo m, element-wise
      % STACK: [1 2 3 0]
1>    % Greater than 1, element-wise.
      % STACK: [0 1 1 0]
&*    % Matrix of pair-wise products
      % STACK: [0 0 0 0;
                0 1 1 0;
                0 1 1 0;
                0 0 0 0]
f     % Column vector of linear indices of nonzeros. Implicit display
      % STACK: [ 6;
                 7;
                10;
                11]


2

ব্যাচ, 85 বাইট

@for /l %%i in (3,1,%1)do @for /l %%j in (3,1,%1)do @cmd/cset/a(%%i-2)*%1+%%j-1&echo(

আমি সহজে থেকে লুপ করতে পারেন না 2করার m-1থেকে তাই আমি লুপ 3থেকে mএবং হিসাব সমন্বয়।




2

জাপট, 12 বাইট

আমি উপাদানগুলির নিষ্কাশন করতে এতক্ষণ গল্ফ করে কাটিয়েছি যে অ্যারে প্রজন্মকে গল্ফ দেওয়ার জন্য আমি সময়সীমা থেকে দৌড়ে এসেছি। আমি কেবল এখন লক্ষ্য করছি যে nপরিবর্তে আমরা ইনপুট হিসাবে নিতে পারি তাই আমি সেখানে কিছু সংরক্ষণ করতে সক্ষম হতে পারি। পুনর্বিবেচনা করা ...

òUnU²)òU m¤c

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


ব্যাখ্যা

                 :Implicit input of integer U=m     :e.g., 4
   U²            :U squared                         :16
 Un              :Minus U                           :12
ò                :Range [U,U**2-U]                  :[4,5,6,7,8,9,10,11,12]
      òU         :Partitions of length U            :[[4,5,6,7],[8,9,10,11],[12]]
         m       :Map
          ¤      :  Remove first 2 elements         :[[6,7],[10,11],[]]
           c     :Flatten                           :[6,7,10,11]

2

জে , 23 19 বাইট

-4 বাইট ধন্যবাদ ফ্রাউনফ্রোগের জন্য!

1 1}:@}.-@%:}:\1+i.

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

আমার মূল সমাধান:

জে , 23 বাইট

[:|:@}:@}.^:2-@%:]\1+i.

ইনপুট হিসাবে n নেয়, একটি ম্যাট্রিক্স প্রদান করে

কিভাবে এটা কাজ করে

1+i. - একটি তালিকা তৈরি করে 1..n

-@%: - n এর বর্গমূল আবিষ্কার করে এবং এটি উপেক্ষা করে (মি)

]\ - তালিকা থেকে একটি টেবিল (ম্যাট্রিক্স) এমএক্সএম তৈরি করে

^:2 - নিম্নলিখিত দুটি বার করুন:

|:@}:@}. - প্রথম সারিটি ফেলে দিন, তারপরে শেষ সারিটি ড্রপ করুন, তারপরে ট্রান্সপোজ করুন

[: - কাঁটাচামচ ক্যাপ

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


1}:@}.-@%:}.@}:\1+i.
ফ্রাউনফ্রগ

1
না,1 1}:@}.-@%:}:\1+i.
ফ্রাউনফ্রোগ

@ ফ্রাউনফ্রোগ - দুর্দান্ত, ধন্যবাদ! তালিকার বাম যুক্তি সম্পর্কে আমি জানতাম না}.
গ্যালেন ইভানভ


2

জাপট , 14 বাইট

²õ òU ÅkJ ®ÅkJ

লাগে mইনপুট হিসাবে

ব্যাখ্যা

 ²õ òU ÅkJ ®ÅkJ                                      
                // U = input                         | 3
U²              // U squared                         | 9
  õ             // Range [1...U²]                    | [1,2,3,4,5,6,7,8,9]
    òU          // Cut into slices of U              | [[1,2,3],[4,5,6],[7,8,9]]
       Å        // Remove the first item             | [[4,5,6],[7,8,9]]
        kJ      // Remove the last item              | [[4,5,6]]
           ®    // Map:                              |
            ÅkJ //   Remove the first and last items | 5     

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


সমাধান যে গ্রহণ করে nতা 14 বাইট:

õ òU¬ ÅkJ ®ÅkJ

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


2

টিআই-বেসিক, 44 43 বাইট (টোকানাইজড)

DC 4D 3F CE 4D 6D 32 3F CF 3F DE 2A 08 09 3F D0 3F 4D 71 32 3F 23 4D 70 32 70 58 70 32 B1 58 83 72 11 2B 58 2B 30 2B 72 0D 71 31

পঠনযোগ্য সংস্করণ:

:Input M
:If M≤2
:Then
:Disp "{}
:Else
:M-2
:seq(M+2+X+2int(X/Ans),X,0,Ans²-1

দুর্ভাগ্যক্রমে খালি তালিকা মুদ্রণ করা প্রয়োজন ছিল যেহেতু টিআই-বেসিক সাধারণত এটি অনুমতি দেয় না। যদি mদুটিরও বেশি দেওয়া হয় তবে কোডটি কেবল 29 বাইটে হ্রাস করা যেতে পারে ।





1

পিট , 13 বাইট

ĐĐ⁻⁻ř*⇹⁻⁻ř⁺ɐ+

এর বন্দর জোনাথন অ্যালান এর জেলি উত্তর

ব্যাখ্যা:

                    Implicit input (takes m)
ĐĐ                  Triplicate the input (push it on the stack two more times)
  ⁻⁻                Decrement top of stack twice
    ř               Push [1,2,...,m-2]
     *              Multiplies by m
      ⇹             Swaps top two items on stack
       ⁻⁻           Decrement (m-2 is now on top)
         ř          Push [1,2,...,m-2]
          ⁺         Increment each element by 1
           ɐ+       Add [2,3,...,m-1] to each element of [m,2m,...,m(m-2)]
                    Implicit print

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


1

পাইথন, 111 বাইট

def f(s):
 r=[]
 for i in[i[1:-1]for i in[[(j*s)+i+1 for i in range(s)]for j in range(s)][1:-1]]:r+=i
 return r

1

জাভা 8 , 241 183 170 162 160 132 122 বাইট

j->{if(j<3)return new int[1];int e[]=new int[j*j-4*j+4],x=0,i=0;for(;++i<=j*j;)if(!(i<j|i>j*j-j|i%j<2))e[x++]=i;return e;}

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

যখন আপনাকে কিছুটা "অজানা" আকারের অ্যারে তৈরি করতে হয় তখন জাভা এটিকে খুব শক্ত করে তোলে (প্রচুর বাইট)।

  • -8 বাইটস ম্যাজিক অক্টোপাস উরনকে ধন্যবাদ
  • -২৮ বাইটস মিঃ এক্সকোডারকে ধন্যবাদ
  • -10 বাইট কেভিন ক্রুইজসেনকে ধন্যবাদ

1
এছাড়াও, হ্যাঁ, জাভা কোড-গল্ফের জন্য মোটামুটি। তবে আপনি অবশ্যই এতে ভাল আছেন। ম্যান, আপনার মূল ভাষা Groovyশর্টহ্যান্ড জাভা নামক এই ভাষাটি পরীক্ষা করা দরকার ।
ম্যাজিক অক্টোপাস উরন

2
If স্টেটমেন্ট এবং বিভিন্ন কৌশলগুলি থেকে একটি অতিরিক্ত শর্ত সরিয়ে 132 বাইট
মিঃ এক্সকোডার

1
122 বাইট অব্যাহত @ Mr.Xcoder উপরে 'র 132-বাইট সংস্করণ মিশ্রন দ্বারা intপরিবর্তন ||করতে |, এবং একক লাইন যদি-শরীরের বন্ধনী সরিয়ে ফেলা হয়।
কেভিন ক্রুইজসেন

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