আমার ম্যাট্রিক্স অ্যারোহেড কি?


33

সংজ্ঞা

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

* * * * * * *
* * 0 0 0 0
* 0 * 0 0 0
* 0 0 * 0 0
* 0 0 0 * 0
* 0 0 0 0 *

যেখানে প্রতিটি * হ'ল কোনও শূন্য প্রবেশ নয়।

কার্য

অ-নেতিবাচক পূর্ণসংখ্যার একটি বর্গক্ষেত্রের ম্যাট্রিক্স দেওয়া, উপরের সংজ্ঞা অনুসারে এটি তীরচিহ্ন কিনা তা পরীক্ষা করুন।

আপনি ম্যাট্রিক্সের আকারটিকে ইনপুট হিসাবে গ্রহণ করতে পারবেন না , যদি না আপনার ভাষার সমান বিন্যাসের সাথে পয়েন্টার এবং দৈর্ঘ্যের মতো কিছু থাকে (সি এর মতো)। এটি সর্বদা কমপক্ষে 3 x 3 হবে।

প্রতিটি ভাষায় বাইটের মধ্যে সংক্ষিপ্ততম কোডটি জয়লাভ করে।

ইনপুট এবং আউটপুট

ইনপুট পাওয়ার জন্য আপনি নিম্নলিখিত যে কোনও ফর্ম্যাটগুলির মধ্যে চয়ন করতে পারেন:

  • নেটিভ ম্যাট্রিক্স টাইপের একটি ম্যাট্রিক্স (যদি আপনার ভাষার একটি থাকে)
  • একটি 2 ডি অ্যারে 1 (1D অ্যারেগুলির একটি অ্যারে, প্রতিটি এক সারি অনুসারে)
  • একটি 1 ডি অ্যারে (যেহেতু ম্যাট্রিক্স সর্বদা বর্গক্ষেত্র হয়)
  • একটি স্ট্রিং (আপনি ব্যবধানটি বেছে নিয়েছেন, তবে দয়া করে এটি কোনওভাবেই অপব্যবহার করবেন না)।

যখন আউটপুট সরবরাহ করার বিষয়টি আসে, আপনি হয় স্ট্যান্ডার্ড সিদ্ধান্ত-সমস্যার সংজ্ঞা অনুসরণ করে সত্যবাদী / মিথ্যা মানটির প্রতিবেদন করতে পারেন , বা দুটি স্বতন্ত্র এবং সামঞ্জস্যপূর্ণ মান চয়ন করতে পারেন।

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

1: বা আপনার ভাষার সমতুল্য (তালিকা, ভেক্টর ইত্যাদি)

উদাহরণ

আসুন নিম্নলিখিত উদাহরণগুলি দেখুন:

1 2 2 2
2 1 0 0
3 0 1 0
4 0 0 1

এটি একটি এ্যারহেড ম্যাট্রিক্স (আপনার প্রোগ্রামগুলি সত্যের মান হিসাবে রিপোর্ট করা উচিত), কারণ মূল তির্যকটিতে থাকা উপাদানগুলি 1 1 1 1, উপরের সারিতে থাকা 1 2 2 2এবং বামদিকের কলামের অংশগুলি 1 2 3 4। অন্যান্য সমস্ত এন্ট্রি 0 , সুতরাং এটি সমস্ত শর্ত পূরণ করে।

3 5 6
7 1 0
8 0 0

এই ম্যাট্রিক্স তীরচিহ্ন নয় কারণ মূল তির্যকটিতে 0 রয়েছে

9 9 9 9
9 9 0 0
9 7 9 0
9 0 0 9

এই এক না পারেন Arrowhead, কারণ এটি একটি রয়েছে 7 একটি স্থানে 0

আরও পরীক্ষার কেস

Truthy:

[[1, 1, 1], [1, 1, 0], [1, 0, 1]]
[[1, 2, 3, 4], [1, 1, 0, 0], [1, 0, 1, 0], [1, 0, 0, 1]]
[[1, 2, 2, 2], [2, 1, 0, 0], [3, 0, 1, 0], [4, 0, 0, 1]]
[[34, 11, 35, 5], [56, 567, 0, 0], [58, 0, 679, 0], [40, 0, 0, 7]]

Falsy:

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

1
ম্যাট্রিক্সে নেতিবাচক সংখ্যা থাকতে পারে এমন কি সম্ভব
জাকারিয়া

2
@ জ্যাচারý না আপনি ধরে নিতে পারেন তারা সমস্তই নেতিবাচক
মিঃ এক্সকডার

পেডেন্ট: একটি দ্বিমাত্রিক অ্যারে এবং একটি ম্যাট্রিক্স একই জিনিস নয় বা এটি অ্যারের অ্যারের মতো নয়। দ্বি-মাত্রিক অ্যারে হিসাবে যদি ইনপুট গ্রহণযোগ্য হয় তবে আপনার পছন্দের ভাষাটি বহুমাত্রিক অ্যারেগুলিকে সমর্থন করার জন্য যদি যথেষ্ট সভ্য হয়?
ইয়ান বুশ

@ আইয়ান বুশ হ্যাঁ, একটি 2 ডি অ্যারে সম্পূর্ণ ভাল।
মিঃ এক্সকোডার

9
@ মিঃ এক্সকোডার এই তীরের দিকটি কোনও দিক নির্দেশ করতে পারলে এটি যথেষ্ট আলাদা এবং আকর্ষণীয় চ্যালেঞ্জ হবে
ডিসাইল

উত্তর:


15

জাভাস্ক্রিপ্ট (ES6), 48 47 বাইট

Edc65 ধন্যবাদ 1 বাইট সংরক্ষণ করা

m=>m.some((r,y)=>r.some((c,x)=>(x*y&&x!=y)^!c))

falseঅ্যারহেড ম্যাট্রিক্সের trueজন্য এবং অ-হেডহেড ম্যাট্রিক্সের জন্য ফেরত দেয় (যেহেতু দুটি পৃথক মান সত্য এবং মিথ্যা উপস্থাপন করতে ব্যবহার করা যেতে পারে)

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


এখন এটি সত্যিই চতুর পদ্ধতির!
মিঃ এক্সকোডার

1
এই কাজ করতে পারে? f=m=>m.some((r,y)=>r.some((c,x)=>(x*y&&x!=y)^!c))
edc65

@ edc65 f=অবশ্যই ছাড়াই;-)
নিল

11

জে , 21 20 19 17 15 বাইট

-4 বাইট @ গ্যালেন ইভানোভকে ধন্যবাদ জানায়।

*-:1,1,.=&/:@}.

ম্যাট্রিক্স হিসাবে ইনপুট নেয় (র‌্যাঙ্ক 2 অ্যারে)।

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

ব্যাখ্যা

গল্ফ এবং একই সময়ে একটি ব্যাখ্যা না লেখার জন্য সম্পাদনা ইতিহাসটি আপনার কাছে পাঠ হতে দিন।

* -: 1, 1,. = & /: @ }.  Let m be the input matrix.
            = & /: @ }.  Identity matrix 1 smaller than m.
                     }.    Behead (m without its first row).
                   @       Composed with.
                /:         Grade up (get len(m) - 1 unique elements)
              &            Composed with.
            =              Self-classify (compare equality with
                           unique elements)
        1,.              Prepend a column of 1s
     1,                  Prepend a row of 1s
*                        Signum (0 becomes 0, n > 0 becomes 1)
  -:                     Does it match the generated arrowhead matrix?

ভিজ্যুয়াল ব্যাখ্যা

নোট করুন যে এটি আরপিএলে করা হয়েছে (ইনপুটগুলি তিনটি স্পেস দিয়ে শুরু করা হয় এবং আউটপুট কোনও অগ্রণী স্থান ছাড়াই দেওয়া হয়)। সে কারণে আমি মাঝে মাঝে যেমন রচনাগুলিকে বাদ দিই @এবং &যেহেতু REPL তে জিনিসগুলি ডান থেকে বামে মূল্যায়ন করা হয় (ফাংশনগুলি আরও জটিল)।

ধরুন আপনার নীচের নমুনা ম্যাট্রিক্স রয়েছে:

   ] m =. 4 4 $ 1 2 3 4 1 1 0 0 1 0 1 0 1 0 0 1
1 2 3 4
1 1 0 0
1 0 1 0
1 0 0 1

প্রথমত, আমি ব্যাখ্যা করতে চাই (এবং Give A shoutout করার জন্য) @ পরিচয় ম্যাট্রিক্স, যা নিম্নোক্ত উৎপাদিত GalenIvanov এর খুব চালাক ভাবে =&/:@}.

প্রথমত, আমরা ইনপুট ম্যাট্রিক্স ( }.) এর শিরশ্ছেদ করি ।

   }. m
1 1 0 0
1 0 1 0
1 0 0 1

তারপরে আমরা প্রতিটি সারি সূচকগুলি পেয়ে যাব যদি /:আপগ্রেড আপ ব্যবহার করে সারিগুলি সাজানো হত ।

   /: }. m
2 1 0

নোট করুন যে ফলাফল সূচকগুলি অনন্য : তালিকার কোনও সদৃশ উপাদান নেই (এবং কেন এটি হবে? দুটি উপাদানকে অ্যারেতে একই পদে রাখার কোনও উপায় নেই)।

অবশেষে, আমরা কুলুঙ্গি কিন্তু সহায়ক =- নিজের - শ্রেণিবদ্ধ ব্যবহার করি। এই মোনাড প্রতিটি অনন্য উপাদানকে অ্যারের অন্যান্য উপাদানগুলির সাথে তুলনা করে। মনে রাখবেন যে আমি কীভাবে উল্লেখ করেছি যে ফলাফলগুলি সূচকগুলি স্বতন্ত্র? যেহেতু =স্বতঃ-শ্রেণিবদ্ধ করা হয় সেই তালিকার সাথে অনন্য উপাদানগুলি ক্রমানুসারে তুলনা করে, ফলস্বরূপ আউটপুটটি অনন্য ইনপুটটির জন্য পরিচয় ম্যাট্রিক্স হবে (এ কারণেই =@i.আপনি কোনও নির্দিষ্ট দৈর্ঘ্যের একটি পরিচয় ম্যাট্রিক্স তৈরি করতে পারেন)।

   = /: }. m
1 0 0
0 1 0
0 0 1
   NB. This is what is happening
   (2 = 2 1 0) , (1 = 2 1 0) ,: (0 = 2 1 0)
1 0 0
0 1 0
0 0 1

আমাদের পরিচয় ম্যাট্রিক্স পরে, এটি একটি সারি এবং সেগুলির একটি কলাম যুক্ত করার বিষয়, যা খুব সহজভাবে সম্পন্ন করা হয় (যদি একটি পরমাণু দেওয়া হয় - যেমন একটি একক উপাদান দেওয়া হয় - ,পরিবার এটি যুক্ত হওয়ার পরে পূরণ করতে পুনরাবৃত্তি করবে) :

   1,. (=&/:@}. m)
1 1 0 0
1 0 1 0
1 0 0 1
   1, (1,. =&/:@}. m)
1 1 1 1
1 1 0 0
1 0 1 0
1 0 0 1

তারপরে আমরা সহজভাবে জেনারেটেড এ্যারহেড ম্যাট্রিক্সকে ইনপুট ম্যাট্রিক্সের সাইনামের সাথে তুলনা করি।

   * m
1 1 1 1
1 1 0 0
1 0 1 0
1 0 0 1
   (* m) -: (1, 1,. =&/:@}. m)
1

2
(17 বাইটের জন্য) *পরিবর্তে যথেষ্ট নয় 0@<? এটি ব্যবহার করে দেখুন
গ্যালেন ইভানভ

1
@ গ্যালেন ইভানোভকে ভাল ধরা হয়েছে বলে আমি মনে করি। ধন্যবাদ! ব্যাখ্যাটি পুনরায় সম্পাদনার সময় হ'ল লল।
কোলে

1
আমি মনে করি আমি পরিচয় ম্যাট্রিক্স উত্পন্ন করার জন্য একটি নতুন উপায় খুঁজে পেয়েছি: =&/:যখন আমি এটির সাথে একত্রিত হলাম , তখন আমি এটি 15 টি বাইটে }.পেয়েছি অনলাইনে এটি*-:1,1,.=&/:@}. ব্যবহার করে দেখুন!
গ্যালেন ইভানভ

1
@ গ্যালেন ইভানোভ উজ্জ্বল দৃষ্টিভঙ্গি (উভয়ই -গ্রেড /:এবং }.-ব্যাড ব্যবহার ), আপনাকে আবারও ধন্যবাদ! আমি এটিকে সম্পাদনা করব
কোল

হুম আসলে বাস্তবে *-:1,1,.=@}.ঠিক কাজ করে - পরিচয় ম্যাট্রিক্স সন্ধান করার জন্য অভিনব উপায়ের প্রয়োজন নেই। আপনি কেবল বর্গ ম্যাট্রিক্স থেকে একটি পরিচয় ম্যাট্রিক্স তৈরি করতে পারেন =। সুতরাং এর সাথে একটি সারি বাদ দিন }., দিয়ে পরিচয় ম্যাট্রিক্স তৈরি করুন = , এর সাথে একটি সারি এবং একটি কলাম যুক্ত 1করুন।
গ্যালেন ইভানভ

9

ওল্ফ্রাম ভাষা (গণিত) , 47 বাইট matic

Clip@#==Array[If[1<#!=#2>1,0,1]&,{1,1}Tr[1^#]]&

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

ব্যাখ্যা: Clip@#1s সঙ্গে ম্যাট্রিক্স সমস্ত নন-জিরো সংখ্যার পরিবর্তে, তাহলে আমরা এই মাত্রা সহ একটি বিন্যাস তুলনা {1,1}Tr[1^#]= {Length@#, Length@#}অবস্থানে 0 দিয়ে i,jযখন 1 < i != j > 1, এবং আরও 1 অন্যথায়।

(মোটামুটিভাবে ইউরিলের উত্তরের উপর ভিত্তি করে ))

এখানে আরও 16 বাইট দীর্ঘ ধারণা রয়েছে - আপনি যদি এটি গল্ফ করতে পারেন তবে এটি চুরি করতে নির্দ্বিধায়:

Union@@Array[{1,#}~Tuples~2&,Length@#]==Most@Keys@ArrayRules@#&

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


8

এপিএল (ডায়ালগ ক্লাসিক) , 19 16 15 13 বাইট

-1 বাইট @ ইরিকআউটগল্ফারকে ধন্যবাদ

( ⎕IO←0)

×≡(∧=⌊)/¨∘⍳∘⍴

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

-২ বাইটস @ জিএনএন এবং @ এইচপিউইজকে ধন্যবাদ

কিভাবে?

(2 ডি ইনপুট ম্যাট্রিক্স এস )

  • ×≡এস কেবলমাত্র এতে ইতিবাচক কিনা তা পরীক্ষা করুন ...
  • (∧=⌊ ... ত্রিভুজ বা উপরের সারি এবং বাম কলাম ...
  • )/¨∘⍳∘⍴... এস এর

⍳∘⍴কার্টেসিয়ান পণ্যের জন্য দুর্দান্ত ব্যবহার ।
উরিল

×≡(=/∨1∊⊢)¨∘⍳∘⍴
এরিক আউটগল্ফার

1
(=/∨1∊⊢)->(~≠⌊⌊)/
এনজিএন

2
@ জিএনএন আরও উন্নত: (∧=⌊)/অবশ্যই উভয়ের প্রয়োজন⎕IO←0
এইচপিউইজ

7

পাওয়ারশেল , 112 108 বাইট

param($a)$o=+!(0-in$a[0]);1..($x=$a.count-1)|%{$i=$_;0..$x|%{$o*=(!($y=$a[$i][$_]),$y)[!$_-or$_-eq$i]}};!!$o

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

ইনপুট নেয় এবং অ্যারে-অফ-অ্যারে হিসাবে হেরফের করে, যেহেতু পাওয়ারশেল ম্যাট্রিককে সমর্থন করে না (। নেট ডাইরেক্ট 3 ডি রূপান্তর ম্যাট্রিক্স সমর্থন, যা সম্পূর্ণ আলাদা কিছু)।

পুরো অ্যালগরিদম এই সত্যের উপর ভিত্তি করে যে শূন্য নয় সংখ্যাগুলি সত্য এবং শূন্যটি পাওয়ারশেলে মিথ্যা, এবং সেই সত্যবাদী / মিথ্যা মানগুলি নির্ধারণ করতে গুণ ব্যবহার করে।

আমরা প্রথমে প্রথম সারিটি নিই $a[0], এবং পরীক্ষা করে দেখুন যে অ্যারেটি কিনা 0তা -inআমাদের $oআউটপুট ভেরিয়েবলের মধ্যে সঞ্চয় করে । যদি সেই সারির কিছু শূন্য হয় $oতবে তাও শূন্য, অন্যথায় এটি একটি, দ্রুত কাস্ট-টু-ইন দ্বারা সম্পন্ন +

এরপরে আমরা 1উপরের দিকে লুপ করব $a.count-1, পথে সেট $xকরছি - আমরা প্রতিটি সারিতে একবারে লুপ করব ing

প্রতিটি পুনরুক্তি $iআমরা কী সারিতে আছি তা ট্র্যাক রাখতে সহায়ক সহায়ক স্থির করে, তারপরে এই সারিতে প্রতিটি উপাদানকে পুনরাবৃত্তি 0করতে লুপ থেকে লুপ করুন $x। অভ্যন্তরীণ লুপের অভ্যন্তরে, আমরা $oসিউডো-টের্নারি অপারেটর হিসাবে একটি টিপল সেটআপ থেকে নির্বাচন করে এবার আবার গুন করছি ।

টিউলের শর্তসাপেক্ষ, !$_-or$_-eq$iবলে, "যখন আমরা 0 তম কলামে থাকি, বা কলামটি সারিটির সাথে মেলে (অর্থাত্ প্রধান ত্রিভুজ)" সত্যবাদী বা মিথ্যা হলে প্রথমার্ধটি দ্বিতীয় স্তরের নির্বাচন করতে। টিপল গঠিত হয় !($y=$a[$i][$_]), $y। প্রথমার্ধটি $yদ্বিতীয়ার্ধে গল্ফ করার জন্য সেট করে তবে উভয়ভাবেই আমরা বর্তমান উপাদানটি নির্বাচন করছি। প্রথমার্ধটি এতে বুলিয়ান অবহেলা করে, যখন দ্বিতীয়ার্ধটি উপাদানটিকে যেমন হয় তেমন গ্রহণ করে। সুতরাং, আমরা যদি 0 তম কলাম বা মূল তিরুঙ্গে না থাকি তবে আমরা নিশ্চিত করতে পারি যে এটি বুলিয়ান নয়-গ্রহণ করে উপাদানটি শূন্য। একইভাবে, আমরা নিশ্চিত করি যে 0 তম কলাম বা প্রধান তির্যকটি এটিকে খালি শূন্য নয় non

সুতরাং এখন আমরা ম্যাট্রিক্সের প্রতিটি উপাদান দিয়ে পুনরাবৃত্তি করেছি, $oহয় যদি হয় 0যে কোনও উপাদানটি ভুল ছিল, অথবা কিছু শূন্য-শূন্য পূর্ণসংখ্য এটি যদি একটি তীরের মাথারিক্স হয়। আমরা ডাবল-বুলিয়ান-তা না হয় যথাক্রমে পেতে Falseবা Trueযথাক্রমে পেতে , আমাদের আউটপুটকে সামঞ্জস্যপূর্ণ করতে এবং এটি সেই পাইপলাইনে রেখে গেছে যেখানে মুদ্রণ জড়িত।


+= [int]? এটা সুন্দর.
রুট


7

জেলি , 14 12 বাইট

ŒDµḢ;Ḣ€Ȧ>FẸ$

Pietu1998 থেকে -2 বাইট

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

ব্যাখ্যা

[[9,7,1],
 [7,1,0],
 [7,0,1]]

উপরের ম্যাট্রিক্সকে উদাহরণ ইনপুট হিসাবে ব্যবহার করুন।

ŒDµḢ;Ḣ€Ȧ>FẸ$
ŒD              Diagonals → [[9, 1, 1], [7, 0], [1], [7], [7, 0]]
  µ             New monadic link
   Ḣ            Head → [9, 1, 1]. Alters diagonals list.
    ;Ḣ€         Append with the head of each of the other diagonals → [9, 1, 1, 7, 1, 7, 7]
       Ȧ        Logical all → 1
         FẸ$    Flatten what's left in diagonals then take logical any → [[0],[],[],[0]] → [0,0] → 0
        >       Matrix is an arrowhead iff result of Ȧ > result of Ẹ

@ wizzwizz4 আমি নিশ্চিত আপনি কী বোঝাতে চাইছেন না
dylnan

@ wizzwizz4 এই কোডটি দেখায় যে কীভাবে ম্যাট্রিক্সের উপাদানগুলি পুনরায় গ্রুপ করা হয়েছে। এটি শীর্ষ, বাম এবং প্রধান তির্যক নেয় take এই আপনি কি বোঝাতে চেয়েছিলেন?
dylnan

আমি বোঝাতে চেয়েছিলাম যে কোডটি আপনার ব্যাখ্যাতে আপনি সরবরাহ করেছিলেন of আমি মজার হওয়ার চেষ্টা করছিলাম তবে স্পষ্টতই এটি কার্যকর হয়নি। আমি এই মন্তব্যগুলি পরিষ্কার করব।
wizzwizz4

7

এপিএল (ডায়ালগ) , 21 18 17 বাইট

×≡11,(=/¨∘⍳1-⍨⍴)

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

কিভাবে?

এটি অন্যভাবে যায় -

=/¨∘⍳ - পরিচয় ম্যাট্রিক্স তৈরি করে

1-⍨⍴ - জন্য n - 1

1⍪1, - 1 কলামের একটি কলাম এবং এক সারি সরিয়ে দেয়

- সাথে তুলনা করে

× - আসল ম্যাট্রিক্স, এটি কোনও এলিমেন্ট-ভিত্তিক সাইনাম-ইনগিংয়ের পরে


6

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

gtZyXy,!llY(]X=

ইনপুট একটি ম্যাট্রিক্স ( ;সারি বিভাজক হিসাবে ব্যবহার করে )। আউটপুট 1তীরের জন্য হয়, 0অন্যথায়।

এটি অনলাইন চেষ্টা করুন! বা সমস্ত পরীক্ষার কেস যাচাই করুন

ব্যাখ্যা

g        % Implicit input. Convert to logical values (nonzero becomes true and
         % zero becomes false)
t        % Duplicate
Zy       % Size
Xy       % Identity matrix of that size
,        % Do twice
  !      %   Transpose
  ll     %   Push 1 twice
  Y(     %   Write 1 at all entries of row 1
]        % End
X=       % Are the two matrices (input and constructed) equal? Implicit display

1
ইন্ডিটি ম্যাট্রিক্স ঠিক কী ?
এরিক আউটগল্ফার

13
@ এরিকথ আউটগলফার স্পষ্টতই একটি দেবদেবীর সমন্বিত একটি ম্যাট্রিক্স।
কোলে

5
@cole সম্ভবত স্বর্গীয় ক্ষেত্রের উপর একটি ম্যাট্রিক্স এর সাথে সম্পর্কিত
jld

5

সি (জিসিসি) ,80 75 বাইট

i;f(A,n)int*A;{for(i=0;i<n*n;i++)n=A[i]>0^(i<n||i%n<1||i/n==i%n)?0:n;n=!n;}

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

স্কটিনেটের জন্য 5 টি বাইট সংরক্ষণ করা হয়েছে!

এই উত্তর থেকে পরীক্ষার কোডটি পুনরায় ব্যবহার করা হয়েছে ।

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

2 ডি অ্যারের তথ্যকে এক মাত্রায় এনকোড করা শর্তগুলির মোটামুটি সহজ সেটকে বাড়ে। যদি আমরা iআমাদের 0-ভিত্তিক সূচকটিকে nমাত্রিক অ্যারেতে ছেড়ে যাই , তবে i<nপ্রথম সারিটি বর্ণনা করে। একইভাবে, i%n==0প্রথম কলামটি i/n==i%nবর্ণনা করে এবং তির্যকটি বর্ণনা করে।

রিটার্নটি পরিচালনা করার জন্য আমি যে সেরা কৌশলটি পেয়েছি তা হ'ল ত্রুটির মুখোমুখি হওয়ার সময় মাত্রাটি শূন্যে সেট করা। এর ফলে লুপটি অবিলম্বে বন্ধ হয়ে যায়, তারপরে মাত্রার যৌক্তিক অবহেলা ফিরিয়ে দেওয়া আমাদের দুটি স্বতন্ত্র মানের মধ্যে একটি দেয়। স্কটিনেট জিসিসিকে আরও সুন্দর করে ফিরিয়ে আনার উপায় খুঁজে পেয়েছিল।


-2 আরও কিছু গল্ফিং সহ বাইটস
স্কটিটনেট

এবং
গিগি-র

@ স্কটিনেট ধন্যবাদ! সেই কৌশলটি ব্যবহার করতে আমার কোন মানটি নির্ধারণ করা উচিত তা নির্ধারণ করতে আমার সমস্যা হয়েছিল।
FryAmTheEggman

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

int test0 [] = {0, 1, 1, 1, 1, 0, 1, 0, 1}; প্রিন্টফ ("% d \ n", চ (পরীক্ষা 0, 3)); 0 না 1 টি ফিরে যেতে হবে (যদি 3x3 ম্যাট্রিক্স 011 110 101 হয়) কারণ একটি [0,0] 0 হয়
রোজলুপি

5

পাইথন 2 , 75 বাইট

lambda m,E=enumerate:all((x[j]>0)-(i>0<j!=i)for i,x in E(m)for j,y in E(m))

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

পাইথন 2 , 85 বাইট

অ্যারেটিকে 1 ডি ম্যাট্রিক্স হিসাবে গ্রহণ করা:

def f(m):s=len(m)**.5;print all((v<1)^(0in(p>s,p%s,p//s-p%s))for p,v in enumerate(m))

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


আপনি কি শীর্ষ সমাধানটিতে "1 ডি ম্যাট্রিক্স" বলতে চাইছেন?
নিকোনিহার

@ নিকোনিয়ার ওফস, স্থির
ফ্লিপট্যাক

5

আর , 78 70 69 68 54 53 বাইট

function(m){d=diag(nrow(m))
d[1,]=d[,1]=1
all(d!=!m)}

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

পোর্টিং লুইস মেন্ডোর উত্তর আমার আগের পদ্ধতির চেয়ে অনেক কম।

একটি বাগ নির্দেশ করার জন্য, এবং একটি বাইট নিচে গলফ করার জন্য rturnbull ধন্যবাদ !

পুরানো উত্তর, 68 বাইট:

function(m,i=which(!m,T))all(i[,1]-i[,2],i!=1,sum(m>0)==3*nrow(m)-2)

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

ডাক্কায়ারের উত্তর পরীক্ষা করে দেখা যায় যে মূল তির্যক এবং প্রথম সারি / কলামে সমস্ত প্রবেশকাগুলি m[i]ননজারো এবং বাকী (m[-i] ) শূন্য, তির্যক এবং প্রথম সারিতে কিছু চমৎকার গাণিতিক ব্যবহার করে।

এই উত্তরটি অবশ্য পরীক্ষা করে নিশ্চিত করে যে (১) শূন্য এন্ট্রিগুলি মূল তির্যক বা প্রথম সারি / কলামে নেই এবং (২) n x nম্যাট্রিক্স, 3*n-2ননজারো এন্ট্রি দেওয়া আছে।

whichসূচকগুলি যেখানে তার ইনপুট রয়েছে তা ফেরত দেয় এবং alচ্ছিকর TRUEসাথে arr.ind=Tপ্রতিটি অ্যারের মাত্রার জন্য সূচকগুলির একটি অ্যারে প্রদান করে, এই ক্ষেত্রে, দুটি।

তাই যখন any(i[,1]==i[,2]), ত্রিভুজটিতে একটি শূন্য থাকে এবং যখন any(i==1)প্রথম সারি বা প্রথম কলামে একটি শূন্য থাকে।

অবশেষে, একটি সামান্য গাণিতিক অনুষ্ঠান অশূন্য এন্ট্রির সংখ্যা হতে হবে 3*n-2, nপ্রথম কলামটি থেকে n-1তির্যক থেকে, এবং n-1প্রথম সারিতে থেকে।


এটি অ্যারো ম্যাট্রিকগুলির জন্য কাজ করছে বলে মনে হচ্ছে না যেখানে মান 1 নেই you আপনি কি all(!m==!d)শেষ লাইনে বোঝাতে চেয়েছিলেন ?
rturnbull

@ আর্টারনবুল আহ! ধন্যবাদ. আর অপারেটর সিনট্যাক্সটি এত অদ্ভুত। আমি সত্যিই বোঝাতে চেয়েছি (!!m)==dতবে !এর চেয়ে কম অগ্রাধিকার রয়েছে ==। আমি মনে করি d==!!mকৌশলটি করা উচিত, যদিও।
জিউসেপ

দেখে মনে হচ্ছে d!=!mএকই রকম হয়, এক বাইট কম জন্য। আপনি pryr::fবরং সিনট্যাক্স ব্যবহার করে অন্য একটি বাইট সংরক্ষণ করতে পারেন function
rturnbull

আমি এটি গল্ফ করার চেষ্টা করেছি তবে আমি সবচেয়ে ভাল করতে পারি এখনও 53
জয়সি

@ জাইসি আপনার উত্তর এবং আমার উভয়ই 52 এ গল্ফ করা যেতে পারে, এবং কেন এটি আমার আগে ঘটেনি তা আমি নিশ্চিত নই ... আমি আপনাকে পৃথক হিসাবে পোস্ট করব; ওয়ান-লাইন পদ্ধতিরটি বেশ সুন্দর এবং আমার সন্দেহ রয়েছে যে আপনার উন্নতির জন্য আরও কিছু জায়গা থাকতে পারে
জিউসেপ


3

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

-৩ বাইটস মিঃ এক্সকোডারকে ধন্যবাদ। -13 বাইট ব্যবহারকারী 28667 ধন্যবাদ। -5 বাইট জাগর্বকে ধন্যবাদ।

z=zip[0..]
f m=and[(i==j||i*j<1)==(a>0)|(i,r)<-z m,(j,a)<-z r]

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


1
80 বাইট .... আপনি প্রায় সবসময় <1এবং এই জাতীয় কৌশল সম্পর্কে ভুলে যান ? : পি
মিঃ এক্সকোডার

1
(x==y||x==0||y==0)==(m!!y!!x/=0)আরও কম হওয়া উচিত
ব্যবহারকারী 28667

1
62 বাইটগুলি ইনডেক্সের পরিবর্তে জিপ করে এবং করে x*y<1
Zgarb


3

পাইথন 3 , 72 71 বাইট

lambda x,e=enumerate:any(0**n^(0<i!=j>0)for i,r in e(x)for j,n in e(r))

@ এক্সনরকে 1 বাইট বন্ধ করে গল্ফ করার জন্য ধন্যবাদ!

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


আমি মনে করি 0<i!=j>0একটি বাইট সংরক্ষণ করে
xnor

@ এক্সনোর ধন্যবাদ! আমি মনে করি না যে আমি তুলনা শৃঙ্খলে কখনও একটি সংখ্যা পুনরায় ব্যবহার করেছি ...
ডেনিস

2

পাইথ, 22 21 বাইট

ম্যাট্রিক্স হেরফেরের জন্য এটি অবশ্যই ভাষা নয়।

.As.e+!MWk.Db,0k,@bkh

প্রতিটি সারির জন্য bএবং তার সূচক kম্যাট্রিক্স (মধ্যে .e), প্রথম এবং grabs kতম এন্ট্রি (বাম দিকে এবং তির্যক) সঙ্গে ,@bkhএবং ( +) সমস্ত সঙ্গে অন্যান্য এন্ট্রি .Db,0k। যদি k0 প্রথম সারিতে (মিলা নয় Wk), তারপর !না Mসমস্ত এন্ট্রি। এগুলির সবকটি নির্বাচিত হয়ে গেলে, নিশ্চিত হয়ে নিন যে সেগুলি সমস্ত সত্য। ( .As) যদি সেখানে 0 না থাকে তবে তার সাথে সম্পর্কিত অবস্থানটি ধরে নেওয়া হবে এবং !গণ্ডগোল হবে এবং এবং যদি এমন কোনও নজারেরো নেই যেখানে সেখানে না থাকা উচিত, তবে এটি 0 তে চিহ্নিত হবে এছাড়াও মিথ্যা।

পরীক্ষা স্যুট.

চারপাশে অর্ডার অদলবদলের জন্য -1 বাইট।


1
ওয়াথ এই সমাধানটি মন্ত্রিক হেরফেরের সাথে পাইথটি বেশ সমান্তরাল given সম্ভবত আগামীকাল আর একটি পাইথ দ্বৈত পক্ষে: পি
মিঃ এক্সকোডার

আপনি সম্ভবত এটির মাধ্যমে @VQUQবা .DVQUQ তির্যকগুলি / মোছার তির্যকটি ব্যবহার করে সংক্ষিপ্ত করতে সক্ষম হতে পারেন । তবে এর জন্য সম্পূর্ণ ভিন্ন পদ্ধতির প্রয়োজন হবে। যদিও নিশ্চিত না ... (
বিটিডাব্লু

@ মিঃ এক্সকোডার স্থির লিঙ্ক, আমি আগামীকাল অন্যান্য কৌশলগুলি নিয়ে গণ্ডগোল করার চেষ্টা করব।
স্টিভেন এইচ।

আমি একটি বিকল্প আগত আমার ব্যবহার 21-byter VQUQধারনা: >.A++hCQhQ.(VQUQsstCt। যদিও এটি অত্যন্ত অপ্রয়োজনীয় বলে মনে হচ্ছে। কয়েকটি বাইট সংরক্ষণ করার জন্য আপনি এটি টুইট করতে সক্ষম হতে পারেন।
মিঃ এক্সকোডার

2

পিপ , 31 23 22 বাইট

{0<_!=B>0MC#a==0=_MMa}

এটি এমন একটি ফাংশন যা 2D নেস্টেড সংখ্যার তালিকা নেয়। এটি অনলাইন চেষ্টা করুন!

ব্যাখ্যা

এখানে পুরো অনেক তুলনা চলছে। প্রথম জানা জিনিসটি হ'ল পাইপের তুলনা অপারেটরগুলি পাইথনের মতো এক সাথে বেঁধে রাখা যেতে পারে: 5>4>3এটি 5>4 and 4>3(সত্য), (5>4)>3(মিথ্যা) নয়। দ্বিতীয়টি এটির ক্ষেত্রে প্রযোজ্য নয় ==, "হুবহু সমান" অপারেটর। আরেকটি পার্থক্য: নিয়মিত তুলনা ম্যাপিং অপারেটার বেশী প্রাধান্য আছে MCএবং MMএবং, ল্যামডা এক্সপ্রেশন ব্যবহার করা যেতে পারে যখন ==নিম্ন প্রাধান্য এবং করতে পারেন না।

{                    }  Define a function with argument a:
 0<_!=B>0MC#a            Generate a matrix (as nested lists) that has 0 on the first row,
                          first column, and main diagonal, and 1 elsewhere (see below for
                          details)
               0=_MMa    Map the function 0=_ to the elements of the elements of a,
                          generating a matrix that is 0 where a is nonzero and vice versa
             ==          Test if the two matrices are equal, returning 0 or 1 accordingly

প্রথম ম্যাট্রিক্স তৈরি করতে, আমরা MC"মানচিত্রের স্থানাঙ্ক" ব্যবহার করি। এই অপারেটরটি একটি সংখ্যা নেয়, সেই আকারের একটি বর্গাকার স্থানাঙ্ক গ্রিড উত্পন্ন করে এবং ফলাফলের তালিকাগুলির তালিকার প্রত্যাবর্তন করে প্রতিটি (x, y) স্থানাঙ্ক জোড়াতে একটি ফাংশন মানচিত্র করে। উদাহরণস্বরূপ, {a+b} MC 3ফলাফল দিতে হবে [[0; 1; 2]; [1; 2; 3]; [2; 3; 4]]

এখানে, গ্রিডের #aআকার, আমাদের মূল আর্গুমেন্টের আকার। ফাংশনটি 0<_!=B>0, যা লেখার একটি ছোট উপায় {0 < a != b > 0}:

{        }  Function; a and b are the arguments (in our case, row and column)
 0<a        Return 1 (truthy) if a is greater than 0
    !=b     and a is not equal to b
       >0   and b is greater than 0

এটি প্রথম সারিতে / কলাম এবং মূল তির্যকের জন্য 0 এবং অন্য কোথাও 1 প্রদান করে।


2

হুশ , 12 11 বাইট

S≡ȯ´Ṫ§^*=ŀL

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

ব্যাখ্যা

S≡ȯ´Ṫ§^*=ŀL  Input is a k×k array A.
          L  The length, k.
         ŀ   The range [0,1..k-1].
  ȯ´Ṫ        Outer product with itself by this function:
              Arguments are two numbers x and y.
        =     Equality of x and y
     §^       to the power of
       *      x times y.
S≡           Does the result have the same shape and distribution of truthy values as A?

ধারণাটি হল হস্ক 0 টি 0 হিসাবে 1 পাওয়ার হিসাবে সংজ্ঞায়িত করে, সুতরাং বাহ্যিক পণ্যটির প্রথম সারিতে এবং কলামে 1 টি রয়েছে। এছাড়াও, যে কোনও সংখ্যার পাওয়ার 1 থেকে 1 হয় তাই বাইরের পণ্যটির তির্যকটিতে 1s থাকে। অন্যান্য এন্ট্রি 0 টি কিছু ধনাত্মক সংখ্যার শক্তির 0 হয়, যা 0 হয় This এটি একটি বাইনারি অ্যারোহেড ম্যাট্রিক্স দেয় যা আমরা ইনপুটটির সাথে তুলনা করি


2

এপিএল + উইন, 36 33 বাইট

(↑⍴m)=+/(+⌿m)=+/m←×m×n∘.×n←⍳↑⍴m←⎕

একটি এপিএল 2 ডি ম্যাট্রিক্সের স্ক্রিন ইনপুটটির জন্য অনুরোধ জানানো হয়।


2

ক্লোজার, 128 95 92 85 বাইট

#(every? neg?(for[R[(range(count %))]i R j R]((if((set[i(- i j)j])0)- dec)((% i)j))))

টানা দুটি খোলার বন্ধনী দেখতে পারা সর্বদা উত্তেজনাপূর্ণ।

মূল সংস্করণ:

#(and(apply =(map assoc(for[i(rest %)](subvec i 1))(range)(repeat 0)))(every? pos?(concat(map nth %(range))(% 0)(map first %))))

প্রথম অংশটি assocসাব-ম্যাট্রিক্সের তির্যক উপাদানগুলি শূন্যের সাথে যুক্ত করে এবং সমস্ত সারি সমান কিনা তা পরীক্ষা করে কাজ করে :) আমি জ্যাকবিয়ান পদ্ধতিতে অনুরূপ কৌশল ব্যবহার করেছি ।

পরবর্তী অংশটি concatতির্যক + প্রথম সারি এবং কলামটি প্রবেশ করে এবং তারা ইতিবাচক কিনা তা পরীক্ষা করে।


2

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

জাভাস্ক্রিপ্টের জন্য আমার সমাধান:

m=>m.some((r,i)=>m[0][i]*r[0]*r[i]==0|r.filter(c=>i*c)[2])

হারম্যানের উত্তরের মতো চতুর নয় , তবে আমার মনে হয়েছিল আমারও এটি এখানে পোস্ট করা উচিত।


3
পিপিসিজিতে আপনাকে স্বাগতম!
স্টেডিবক্স

2

Clojure, 212 206 188 বাইট

কিছু মিস স্পেস এবং শর্টকাটটি সরিয়ে -6 বাইট range। আমি এটি বসতে হতে পারে যাতে আমি আরও ভাল উপায় সম্পর্কে চিন্তা করতে পারি।

-18 বাইটস @ নিকোনিয়ারকে ধন্যবাদ জানায় এবং এর জন্য শর্টকাট তৈরি করে map

(fn[m](let[r range a map z zero?](and(every? #(not(z %))(concat(m 0)(rest(a #(% 0)m))(a get m(r))))(every? z(apply concat(into(a #(take(dec %)%2)(r)(a rest m))(a take-last(r)(reverse(rest m)))))))))

ভয়াবহ, ঠিক ভয়ঙ্কর। আমি জানি না কেন আমি যুক্তিসঙ্গত সমাধানের চারপাশে আমার মাথা গুটিয়ে রাখতে পারি না।

কোনও নেস্টেড ভেক্টরকে ইনপুট হিসাবে নেয়।

(defn arrowhead? [matrix]
  (let [; Get the 0th cell of the 0th row, then the 1st cell of the 1st row...
        main-diagonal (map get matrix (range))

        ; Get the 0th cell of each row
        first-col (rest (map #(% 0) matrix))
        arrowhead (concat (matrix 0) first-col main-diagonal)

        ;
        right-rest (map take-last (range) (reverse (rest matrix)))
        left-rest (map #(take (dec %) %2) (range) (map rest matrix))
        rest-matrix (apply concat (into left-rest right-rest))]

    ; And check them
    (and (every? pos? %) arrowhead
         (every? zero? rest-matrix))))

আমি আলাদা পদ্ধতি ব্যবহার করে স্ক্র্যাচ থেকে এটি পুনরায় লেখার চেষ্টা করেছি এবং এটি আরও দীর্ঘস্থায়ী হয়েছিল। ম্যাট্রিক্সের "বিশ্রাম" বিভাগটি ম্যানুয়ালি খোদাই করার পরিবর্তে আমি সিদ্ধান্ত নিয়েছি ম্যাট্রিক্সের সমস্ত স্থানাঙ্কগুলি তৈরি করার চেষ্টা করব, তীরের তীরের স্থানাঙ্ক তৈরি করব, তারপরে clojure.set/differenceনন-এ্যারহেড কোষগুলি ব্যবহার করব use দুর্ভাগ্যক্রমে, বিল্ট-ইনটিতে কলটি ব্যয়বহুল:

223 বাইট

(fn[m](let[l(range(count m))g #(get-in m(reverse %))e every? a(for[y l x l][x y])k #(map % l)r(concat(k #(do[% %]))(k #(do[0%]))(k #(do[% 0])))](and(e #(zero?(g %))(clojure.set/difference(set a)(set r)))(e #(pos?(g %)))r)))

(defn arrowhead? [matrix]
  (let [length-range (range (count matrix))
        get-cell #(get-in matrix (reverse %))
        all-coords (for [y length-range
                         x length-range]
                     [x y])

        k #(map % length-range)

        diag (k #(do[% %]))
        top-side (k #(do [0 %]))
        left-side (k #(do [% 0]))
        arrowhead (concat diag top-side left-side)

                   ; 22 bytes! Ouch
        rest-cells (clojure.set/difference (set all-coords) (set arrowhead))]

    (and (every? #(zero? (get-cell %)) rest-cells)
         (every? #(pos? (get-cell %)) arrowhead))))

উন্নতির জন্য যথেষ্ট জায়গা রয়েছে, উদাহরণস্বরূপ #(drop 1 %)একই restএবং #(not(zero? %))একইরকম pos?(যেমন আমাদের অ-নেতিবাচক সংখ্যা রয়েছে)। আপনি আমার 128-বাইট উত্তরটি দেখতে চান, যা এর একইরকম অ্যাপ্রোচা। বাস্তবায়নের পরে আমি বুঝতে পেরেছিলাম যে ফর-লুপে সূচক ভিত্তিক অ্যাক্সেস নিয়ে কাজ করার জন্য এটি অনেকটা খাটো orted
নিকোনিহার

@ নিকোনিয়ার ইয়া, আমি সেদিন খুব ভাল খাঁজে ছিলাম না। আমি জানি না আমি কীভাবে ভুলে গেছি rest। আমার সম্ভবত এই প্রচেষ্টাটি স্ক্র্যাপ করে আবার চেষ্টা করা উচিত।
কারসিজেনিকেট

2

স্ট্যাক্স , 11 বাইট সিপি 437

ä¢⌠┐xⁿtH↔BU

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

13 বাইট সহ আনপ্যাক করা সংস্করণ:

B|AsF:10i^\=*

অবশেষে হুস্টকে বেঁধে জেলি দ্বারা মাত্র এক বাইট দ্বারা পিটিয়ে ...

ব্যাখ্যা

B                Push tail (all except 1st row) of the input array, then push the head (1st row)
 |A              All elements in the head are truthy
                 This will be used as an accumulator
   sF            For each element in the tail, execute the rest of the program
     :1          All truthy indices
       0i^\      Expected truthy indices (0 and the current row number)
           =     The truthy indices are as expected
            *    Perform logical "and" with the accumulator
                 Implicit output of the final accumulator

1

আর , 81 79 বাইট

function(x){n=nrow(x);i=c(seq(1,n^2,n+1),1:n,seq(1,n^2,n));all(x[i]>0,x[-i]<1)}

-২ বাইটস মিঃ এক্সকোডারকে ধন্যবাদ

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



খুব সুন্দর; আমি একটি 78 বাইটার খুঁজে পেয়েছি যা খুব অদ্ভুত কিছু করছে তবে আমি খুঁজে পেয়েছি আপনার একটি 76 বাইট গল্ফ।
জিউসেপ

69 বাইট তবে আমি আমার উন্নত 68!
জিউসেপ


1

পাওয়ারশেল , 186 বাইট

$a=$($args);if($a[0]-contains0){0;exit};0..($a.Length-1)|%{if($a[$_][0]-eq0-or$a[$_][$_]-eq0){0;exit};$r=$a[$_];$d=$_;if($_-ne0){1..($r.Length-1)|%{if($r[$_]-ne0-and$_-ne$d){0;exit}}}};1

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


2
কিছু golfs - ব্যবহারের param($a)ইনপুট নেওয়ার জন্য, -containsএকটি জন্য আনা যাবে -inএবং সকলের -eq0জন্য আনা যাবে !। অবশেষে, আপনার কাছ থেকে লুপ করতে 1পর্যন্ত $a.lengthএবং পরিত্রাণ পেতে if($_-ne0)লুপ শরীরের।
অ্যাডমবর্কবার্ক




1

কে (ওকে) , 27 30 বাইট

সমাধান:

x~a*x|a:a|+(a:1,(#1_x)#0)|=#x:

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

ব্যাখ্যা:

এপিএল সমাধানগুলি বাইট গণনার অর্ধেকেরও কম হওয়ায় আমি অবশ্যই বোবা কিছু করব ...

24 বাইট ব্যয় করে তীরচিহ্ন তৈরি করতে। orনিম্নলিখিত তিনটি ম্যাট্রিক একসাথে:

/ assume 4x4 matrix
=#x
1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1

+(a:1,(#1_x)#0)
1 0 0 0
1 0 0 0
1 0 0 0
1 0 0 0

a
1 1 1 1
0 0 0 0
0 0 0 0
0 0 0 0

সম্পূর্ণ ব্রেকডাউন:

x~a*x|a:a|+(a:1,(#1_x)#0)|=#x: / the solution
                            x: / save input as x
                           #   / count length
                          =    / identity matrix
                         |     / or with
           (            )      / do this together
                      #0       / take from 0
                ( 1_x)         / drop first of x
                 #             / count
              1,               / prepend 1
            a:                 / save as a
          +                    / flip rows/cols
         |                     / or with
        a                      / a
      a:                       / save as a
     |                         / or with
    x                          / x
  a*                           / multiply by arrowhead
x~                             / matches input?
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.