একটি চেকবোর্ড ম্যাট্রিক্স তৈরি করুন


26

ইনপুট হিসাবে একটি ধনাত্মক পূর্ণসংখ্যা এন নিন এবং 1 এবং 0 সমন্বিত একটি এন-বাই-এন চেকবোর্ড ম্যাট্রিক্স আউটপুট করুন ।

উপরের বাম সংখ্যাটি সর্বদা 1 হওয়া উচিত ।

পরীক্ষার কেস:

n = 1
1

n = 2
1 0
0 1

n = 3
1 0 1
0 1 0
1 0 1

n = 4
1 0 1 0
0 1 0 1
1 0 1 0
0 1 0 1

ইনপুট এবং আউটপুট ফর্ম্যাটগুলি alচ্ছিক। তালিকাগুলির তালিকা হিসাবে ম্যাট্রিক্স আউটপুট করা গ্রহণযোগ্য।


স্ট্রিংগুলির তালিকা কি ঠিক আছে?
xnor

হ্যাঁ, ঠিক আছে।
স্টিভি গ্রিফিন


2
আপনার উদাহরণগুলি একই সারিতে সংখ্যার মধ্যে ফাঁকা স্থান দেখায়, এটি কি প্রয়োজন, যাতে আরও বর্গক্ষেত্রের মতো দেখতে?
ব্র্যাডিসি

@ ব্র্যাডসি এটির প্রয়োজন নেই। প্রথম পদ্ধতির এখানে বৈধ।
স্টিভি গ্রিফিন

উত্তর:


12

জেলি , 4 বাইট

52 সেকেন্ড!

+€ḶḂ

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


7
"52 সেকেন্ড!" যেমন আমি
এর অভ্যস্ত

5
নতুন পিপিসিজি চ্যালেঞ্জগুলির জন্য কি আপনার কাছে একজন বিপারের মতো 24/7 পরেন?
ম্যাজিক অক্টোপাস উরন

@ কারাসোকম্পুটিং যাদের দ্রুত ইন্টারনেট সংযোগ রয়েছে তারা সাধারণত ভাগ্যবান যা তারা জিতবে।
এরিক আউটগল্ফার

9

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

:otYT

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

ব্যাখ্যা

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

:    % Implicit input, n. Push range [1 2 ... n]
     %   STACK: [1 2 3 4]
o    % Parity, element-wise
     %   STACK: [1 0 1 0]
t    % Duplicate
     %   STACK: [1 0 1 0], [1 0 1 0]
YT   % Toeplitz matrix with two inputs. Implicit display
     %   STACK: [1 0 1 0;
     %           0 1 0 1;
     %           1 0 1 0;
     5           0 1 0 1]

7

জাপট , 6 বাইট

ÆÇ+X v

এটি অনলাইন পরীক্ষা! ( -Qসহজ দৃশ্যধারণের জন্য পতাকা ব্যবহার করে )

ব্যাখ্যা

 Æ   Ç   +X v
UoX{UoZ{Z+X v}}  // Ungolfed
                 // Implicit: U = input number
UoX{          }  // Create the range [0...U), and map each item X to
    UoZ{     }   //   create the range [0...U), and map each item Z to
        Z+X      //     Z + X
            v    //     is divisible by 2.
                 // Implicit: output result of last expression

নোটটিতে একটি উত্সাহব্যঞ্জক জিনিস যে vহয় না একটি "2 দ্বারা বিভাজ্য" বিল্ট-ইন। পরিবর্তে, এটি অন্তর্নির্মিত "এক্স দ্বারা বিভাজ্য"। তবে বেশিরভাগ গল্ফিং ভাষার বিপরীতে, জাপ্টের ফাংশনগুলির নির্দিষ্ট স্থায়িত্ব থাকে না (তারা যে কোনও সংখ্যক ডান-আর্গুমেন্ট গ্রহণ করতে পারে)। 0 টি ডান-আর্গুমেন্ট দেওয়ার সময়, vধরে নিয়েছেন বলে মনে করেন 2, এবং ঠিক তেমন কিছু করার 2পরিবর্তে এটি দেওয়া হয়েছিল ।



7

হাস্কেল , 50 41 39 38 বাইট

নিম এবং xnor কে ধন্যবাদ 9 10 বাইটের মোট শেভ করতে সহায়তা করার জন্য

f n=r[r"10",r"01"]where r=take n.cycle

পর্যায়ক্রমে, আরও একটি বাইট জন্য:

(!)=(.cycle).take
f n=n![n!"10",n!"01"]

বা:

r=flip take.cycle
f n=r[r"10"n,r"01"n]n

সম্ভবত suboptimal, কিন্তু একটি পরিষ্কার, সোজা পদ্ধতি।


concat.repeatহয় cycle: n!l=take n$cycle l। আপনি যেতে পারেন pointfree এটা আরও একটি বাইট সংরক্ষণ: (!)=(.cycle).take
নিমি

বাহ! আমি জানতাম যে এর জন্য একটি বিল্টিন রয়েছে তবে আমার জীবনের নামটি মনে করতে পারিনি
জুলিয়ান ওল্ফ

আমি প্রস্তাব f n|r<-take n.cycle=r[r"10",r"01"]বা অনুরূপ করতে যাচ্ছি । তবে হাস্কেল কি ভুল ধরণের অনুমান করে বলে মনে হচ্ছে r? এটি সুস্পষ্ট টাইপিংয়ের সাথে কাজ করে f n|r<-take n.cycle::[a]->[a]=r[r"10",r"01"]
xnor

1
@ জুলিয়ানওল্ফ হাস্কেলের মনে হচ্ছে বহুবর্ষের ধরণগুলি অনুমান করতে সমস্যা হয়েছে
xnor

1
@zbw আমি ভেবেছিলাম এটি কেস তবে এটি ব্যবহার করে NoMonomorphismRestrictionকোনও লাভ হয়নি। Rank2Typesবা করেনি বা RankNTypes। আপনি কি জানেন যে সেখানে কি চলছে?
xnor

5

এপিএল (ডায়ালগ) , 8 বাইট

~2|⍳∘.+⍳

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

ব্যাখ্যা

যুক্তি কল করি n

⍳∘.+⍳

এটি একটি ম্যাট্রিক্স তৈরি করে

1+1 1+2 1+2 .. 1+n
2+1 2+2 2+3 .. 2+n
...
n+1 n+2 n+3 .. n+n

তারপরে 2|ম্যাট্রিক্সের মডুলো 2 লাগে (এটি ভেক্টরাইজ হয়) যার পরে ~ফলাফলের নোট হয় না।



4

জাভাস্ক্রিপ্ট ES6, 55 54 51 46 বাইট

@ নীলকে ধন্যবাদ 1 বাইট সংরক্ষিত

@ আরনাউল্ডকে 2 বাইট সংরক্ষণ করা হয়েছে

n=>[...Array(n)].map((_,i,a)=>a.map(_=>++i&1))

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

অ্যারের অ্যারে হিসাবে এটি আউটপুট দেয়। জাভাস্ক্রিপ্ট ব্যাপ্তিগুলি বেশ অদ্ভুত তবে আমি ব্যবহার করি [...Array(n)]যা আকারের অ্যারে তৈরি করেn


সূচকের পরামিতিগুলি ব্যবহার করতে এটি এখনও একটি বাইট সংক্ষিপ্ত:n=>[...Array(n)].map((_,i,a)=>a.map((_,j)=>(i+j+1)%2))
নিল

@ নীল হু, আমি কখনই মানচিত্রে তৃতীয় প্যারামিটারটি ব্যবহার করার কথা ভাবিনি, ধন্যবাদ!
ডাউনওয়েট

@ আরনাউল্ড ধন্যবাদ! যে আমাকে আরও 5 বাইট সংরক্ষণ করতে অনুপ্রাণিত!
ডাউনগোট

4

রেটিনা , 33 30 বাইট

.+
$*
1
$_¶
11
10
T`10`01`¶.+¶

এটি অনলাইন চেষ্টা করুন! ব্যাখ্যা: প্রথম পর্যায়ে ইনপুটটি 1গুলি (সুবিধাজনকভাবে!) ব্যবহার করে অ্যানারিতে রূপান্তর করা হয় যখন দ্বিতীয় পর্যায়ে মানটিকে একটি বর্গে রূপান্তরিত করে। তৃতীয় পর্যায়ে প্রতিটি সারিতে বিকল্প বিট বিপরীত হয় যখন শেষ পর্যায়ে বিকল্প সারিগুলিতে বিট বিভক্ত হয়। সম্পাদনা করুন: @ মার্টিনইেন্ডারকে ধন্যবাদ 3 টি বাইট সংরক্ষণ করা হয়েছে


$`1$'ঠিক হয় $_
মার্টিন ইন্ডার

@ মার্টিনএন্ডার আহ, আমি এর সাথে অপরিচিত $_, ধন্যবাদ!
নিল

3

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

:t!+2\~

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

ব্যাখ্যা:

         % Implicit input (n)
:        % Range from 1-n, [1,2,3]
 t       % Duplicate, [1,2,3], [1,2,3]
  !      % Transpose, [1,2,3], [1;2;3]
   +     % Add        [2,3,4; 3,4,5; 4,5,6]
    2    % Push 2     [2,3,4; 3,4,5; 4,5,6], 2
     \   % Modulus    [0,1,0; 1,0,1; 0,1,0]
      ~  % Negate     [1,0,1; 0,1,0; 1,0,1]

দ্রষ্টব্য: আমি চ্যালেঞ্জ পোস্ট করার পরে এমএটিএল এ সমাধান করতে শুরু করেছি।


সমান এবং সংক্ষিপ্ত::&+o~
লুইস মেন্ডো

1
এখনও শিখছি :-) আমি আগামীকাল আপডেট করব। আমি আপনার অন্যান্য পদ্ধতির খুব পছন্দ করেছি :-)
স্টিভি গ্রিফিন

1
আমিও এটি নিয়ে এসেছি। আরে, আপনি কেবল খাঁটি এমএটিএল নির্দেশিকা সেট ব্যবহার করেন , সেই Yলজ্জাজনক-নির্দেশিত নির্দেশাবলী @ লুইস মেন্ডো ব্যবহার করেন না।
সানচাইজস

@ সানচিইস পেসকি, হাহ ? :
লুইস মেন্ডো

3

ব্র্যাচল্যাগ , 15 বাইট

^₂⟦₁%₂ᵐ;?ḍ₎pᵐ.\

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

ব্যাখ্যা

Example Input: 4

^₂               Square:                            16
  ⟦₁             1-indexed Range:                   [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16]
    %₂ᵐ          Map Mod 2:                         [1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0]
       ;?ḍ₎      Input-Chotomize:                   [[1,0,1,0],[0,1,0,1],[1,0,1,0],[0,1,0,1]]
           pᵐ.   Map permute such that..
             .\  ..the output is its own transpose: [[1,0,1,0],[0,1,0,1],[1,0,1,0],[0,1,0,1]]

3

ক্লোজার, 36 বাইট

#(take %(partition % 1(cycle[1 0])))

হ্যাঁ, কাজের জন্য সঠিক সরঞ্জাম।


3

05 এ বি 1 ই , 9 7 বাইট

-2 বাইট ধন্যবাদ এমিগিনার কাছে

LDÈD_‚è

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

ব্যাখ্যা

LDÈD_‚sè» Argument n
LD        Push list [1 .. n], duplicate
  ÈD      Map is_uneven, duplicate
    _     Negate boolean (0 -> 1, 1 -> 0)
     ‚    List of top two elements of stack
      è   For each i in [1 .. n], get element at i in above created list
          In 05AB1E the element at index 2 in [0, 1] is 0 again

»তালিকার তালিকাগুলি আউটপুট ঠিক আছে হিসাবে আপনি কেটে ফেলতে পারেন এবং আপনি এটি সরাতেও পারেন s
এমিগানা

@ এমিগনা ইয়েপ, ধন্যবাদ!
কলসওয়ারাস

ব্যাখ্যা কিছুটা অপ্রাসঙ্গিক।
এরিক দ্য আউটগল্ফার

3

জাভা (ওপেনজেডিকে 8) , 80 77 বাইট

-3 বাইট কেভিন ক্রুইজসেনকে ধন্যবাদ

j->{String s="1";for(int i=1;i<j*j;s+=i++/j+i%j&1)s+=1>i%j?"\n":"";return s;}

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

ওহ দেখুন, প্রচুর মজাদার অপারেটর সহ একটি আধা-যুক্তিসঙ্গত দৈর্ঘ্যের জাভা উত্তর।

ল্যাম্বদা যা একটি ইনট নেয় এবং একটি স্ট্রিং দেয়। কোন মানটি হওয়া উচিত তা নির্ধারণ করতে / এবং% ব্যবহার করে সারি নম্বর এবং কলাম নম্বর ব্যবহার করে কাজ করে, মোড 2;

Ungolfed:

j->{
    String s="1";
    for(int i=1; i<j*j; s+= i++/j + i%j&1 )
        s+= 1>i%j ? "\n" : "";
    return s;
}

বাইট সংরক্ষণের জন্য আপনি স্থানটি সরাতে পারেন। চ্যালেঞ্জটি বলে যে আউটপুট ফর্ম্যাটটি নমনীয়। ওহ, আর পরিবর্তন করে আরো দুটি বাইট সংরক্ষণ করতে পারবেন (i++/j+i%j)%2করার i++/j+i%j&1তাই আপনি ঐ প্রথম বন্ধনী প্রয়োজন হবে না। যা আমার নেস্টেড ফর লুপ সলিউশন ( n->{String r="";for(int i=0,j;i++<n;r+="\n")for(j=0;j<n;r+=j+++i&1);return r;}) এর চেয়ে মোট 1 বাইটকে সংক্ষিপ্ত করে তোলে , সুতরাং আমার কাছ থেকে +1 করুন। :)
কেভিন ক্রুইজসেন

@ কেভিন ক্রুইজসেন হ্যাঁ আমি এখনও স্থানটিতে কোনও প্রতিক্রিয়ার জন্য অপেক্ষা করছিলাম। আমি% এবং & 1 ==% 2
PunPun1000

2

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

UON10¶01

এটি অনলাইন চেষ্টা করুন! ব্যাখ্যা: এটি মোটামুটি নীচের ভার্বোজ কোডটিতে অনুবাদ করে (দুর্ভাগ্যক্রমে ডিভারবোসিফায়ার বর্তমানে একটি অপ্রয়োজনীয় বিভাজক যুক্ত করছে):

Oblong(InputNumber(), "10\n01");





2

আর , 38 37 বাইট

n=scan();(matrix(1:n,n,n,T)+1:n-1)%%2

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

-1 বাইট জিউসেপিকে ধন্যবাদ

আর এর পুনর্ব্যবহারযোগ্য নিয়মের সুবিধা গ্রহণ করে, প্রথমত ম্যাট্রিক্স তৈরি করার সময় এবং দ্বিতীয়ত সেই ম্যাট্রিক্সে 0: (এন -1) যুক্ত করার সময়।


আপনি পরিত্রাণ পেয়ে tএবং পরিবর্তে ম্যাট্রিক্স নির্মাণ করে বাইট ছাড়তে পারেন byrow=T, অর্থাৎ(matrix(1:n,n,n,T)+1:n-1)%%2
জিউসেপ

1
outer(1:n,1:n-1,"+")%%2বেশ কয়েকটি বাইট সংক্ষিপ্ত :)
জেএড

2

সুই-প্রোলোগ, 142 বাইট।

t(0,1).
t(1,0).
r([],_).
r([H|T],H):-t(H,I),r(T,I).
f([],_,_).
f([H|T],N,B):-length(H,N),r(H,B),t(B,D),f(T,N,D).
c(N,C):-length(C,N),f(C,N,1).

অনলাইনে চেষ্টা করুন - http://swish.swi-prolog.org/p/BuabBPrw.pl

এটি নেস্টেড তালিকার বাইরে চলে যায়, তাই বিধিগুলি বলে:

  • t() এটি একটি টগল, এটি 0 -> 1 এবং 1 -> 0 করে।
  • r() একটি পৃথক সারির জন্য সাফল্য লাভ করে, যা একটি সারিতে পুনরাবৃত্ত হয় যা এটি কেবলমাত্র বিকল্প এবং শূন্য হয় check
  • f()পুনরাবৃত্তভাবে সমস্ত সারি পরীক্ষা করে যে এগুলি সঠিক দৈর্ঘ্য, এগুলি বৈধ সারি r()এবং প্রতিটি সারি পৃথক 0/1 দিয়ে শুরু হয়।
  • c(N,C) বলে যে সারিগুলির সংখ্যা (নেস্টেড তালিকাগুলি) এন হয়, এবং সাহায্যকারী চ সফল হয় তবে সি হ'ল আকারের একটি বৈধ চেকবোর্ড।

পরীক্ষার কেস: এখানে চিত্র বর্ণনা লিখুন


2

সি, 69 67 63 বাইট

দুটি বাইট সংরক্ষণ করার জন্য এবং কেভেন ক্রুইজসেনকে ধন্যবাদ এবং চারটি বাইট সংরক্ষণের জন্য @ সেলিংক্যাট!

i,j;f(n){for(i=n;i--;puts(""))for(j=n;j;)printf("%d",j--+i&1);}

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


আপনি স্থানটি মুছে ফেলতে পারেন printf("%d ", যেহেতু এটি আউটপুটটির অন্য একটি বৈধ পদ্ধতি।
কনর

@ কনরও ব্রায়ান হ্যাঁ, ধন্যবাদ
স্টেডিবক্স

আপনি পরিবর্তন করে দুই বাইট সংরক্ষণ করতে পারবেন (j+++i)%2করার j+++i&1সেই প্রথম বন্ধনী মুছে ফেলার জন্য।
কেভিন ক্রুইজসেন

ধন্যবাদ!
স্টেডিবক্স

1

কিউবিআইসি , 19 বাইট

[:|?[b|?(a+c+1)%2';

ব্যাখ্যা

[:|         FOR a = 1 to b (b is read from cmd line)
?           PRINT - linsert a linebreak in the output
[b|         FOR c = 1 to b
?(a+c+1)%2  PRINT a=c=1 modulo 2 (giving us the 1's and 0's
';            PRINT is followed b a literal semi-colon, suppressing newlines and 
              tabs. Printing numbers in QBasic adds one space automatically.


1

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

স্ট্রিং হিসাবে আউটপুট

for(;$i<$argn**2;)echo++$i%2^$n&1,$i%$argn?"":"
".!++$n;

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

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

2 ডি অ্যারে হিসাবে আউটপুট

for(;$i<$argn**2;$i%$argn?:++$n)$r[+$n][]=++$i%2^$n&1;print_r($r);

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


1

সিজেম , 17 বাইট

{_[__AAb*<_:!]*<}

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

একটি তালিকা ফেরত দেয় (টিআইও লিঙ্কটির ফর্ম্যাট আউটপুট রয়েছে)।



@ চ্যালেঞ্জার ৫ দুঃখিত, আপনি মোছা উত্তরের সাথে আউটগল্ফ করতে পারবেন না।
এরিক আউটগল্ফার



1

/// , 87 বাইট + ইনপুট

/V/\\\///D/VV//*/k#D#k/k#D&k/k&DVk/k\D/SD/#/r
DSkk/10DSk/1D&/V#rV#0r;VV0;VVV1;V\D/r/S/&[unary input in asterisks]

এটি অনলাইন চেষ্টা করুন! (4 এর জন্য ইনপুট)

1S, 95 বাইট + ইনপুটগুলিতে অ্যানারি ইনপুট

/V/\\\///D/VV//&1/k#&D&|D/#k/k#D&k/k&DVk/k\D/SD/#/r
DSkk/10DSk/1D&/V#rV#0r;VV0;VVV1;V\D/r/S/&&[unary input in ones]|

এটি অনলাইন চেষ্টা করুন! (8 এর জন্য ইনপুট)

কিভাবে কাজ করে?

  • Vএবং যথাক্রমে Dগল্ফ \/এবং //হয়।

  • /*/k#/এবং /&1/k#&//&|//সমান মধ্যে ইনপুট পৃথক'k#'*len(input())

  • /#k//k#//&k/k&//\/k/k\//সমস্ত kগুলি /r/S/ব্লকে সরান

  • Ss কেবলমাত্র প্যাড দৃষ্টান্তগুলিতে ব্যবহৃত হয় যেখানে kএর পরে আসে /যাতে তারা অন্য কোথাও সরে না যায় এবং Ss গুলি সরিয়ে ফেলা হয়

  • #গুলি তারপর পরিণত হয় r\nগুলি

  • এর স্ট্রিংটি kএকটি বিকল্প 1010...স্ট্রিংয়ে রূপান্তরিত হয়েছে

  • r\nগুলি পরিণত হয় 1010...\nগুলি

  • প্রতিটি জোড়া 1010...\n1010\nপরিণত হয়1010...\01010...;\n

  • হয় 0;বা 1;ছাঁটাই বন্ধ (কারণ 01010...স্ট্রিং 1 দ্বারা খুব দীর্ঘ)


1

গণিত, 28 বাইট

Cos[+##/2Pi]^2&~Array~{#,#}&

খাঁটি ফাংশন ইনপুট হিসাবে ইতিবাচক পূর্ণসংখ্যার গ্রহণ করে এবং একটি 2 ডি অ্যারে ফিরিয়ে দেয়। 1s এবং 0 এর উত্পন্ন করতে পর্যায়ক্রমিক ফাংশন কোস² (πx / 2) ব্যবহার করে।

আরও কিছু মজার জন্য, 32-বাইট সমাধান সম্পর্কে কীভাবে

Sign@Zeta[1-+##]^2&~Array~{#,#}&

যা রিমান জেটা ফাংশনের তুচ্ছ শূন্যগুলির অবস্থানগুলি ব্যবহার করে।

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