খড়ের গর্তে সুইটি সন্ধান করুন


38

একই একই মুদ্রণযোগ্য এএসসিআইআই অক্ষর সমন্বয়ে কমপক্ষে 2x2 আকারের আয়তক্ষেত্রাকার খড়কে দেওয়া, সূঁচের অবস্থান (উপরের-বাম থেকে গণনা) আউটপুট করুন যা একটি ভিন্ন চরিত্র।

উদাহরণস্বরূপ, যদি নিম্নলিখিত খড়খড়ি ইনপুট থাকে:

#####
###N#
#####
#####

3,1শূন্য-সূচকযুক্ত (আমি এই চ্যালেঞ্জটিতে কী ব্যবহার করব) বা 4,2এক-সূচকযুক্ত হলে আউটপুট হওয়া উচিত ।

খড়ের ছাঁটি যে কোনও মুদ্রণযোগ্য এএসসিআইআই চরিত্রের সমন্বয়ে তৈরি করা যেতে পারে:

^^^
^^^
^N^
^^^
^^^
^^^

আউটপুট: 1,2

এবং সুইটি অন্য কোনও মুদ্রণযোগ্য ASCII অক্ষর হবে:

jjjjjj
j@jjjj
jjjjjj

আউটপুট 1,1

কোণে সুই থাকাও সম্ভব:

Z8
88

আউটপুট 0,0

88
8Z

আউটপুট 1,1

বা প্রান্তে সুই থাকা:

>>>>>>>>>>
>>>>>>>>>:
>>>>>>>>>>

আউটপুট 9,1

বিধি এবং ব্যাখ্যা

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

প্রস্তাবিত পরীক্ষার কেস: 88\n8Z(অবশ্যই কোনও দুটি অক্ষরের সাথে)।
কেভিন ক্রুইজসেন

আমরা কি বহুমাত্রিক অ্যারে হিসাবে ইনপুট নিতে পারি? অর্থাত [['#', '#', '#', '#', '#'], ['#', '#', '#', 'এন', '#'], ['#' , '#', '#', '#', '#'], ['#', '#', '#', '#', '#']];
640 কেবি

2
@gwaugh চরিত্রের তালিকার মতো? হ্যাঁ, এটি ভাল (এবং স্পষ্টভাবে ঠিক হিসাবে ডাকা হয়)।
অ্যাডমবর্কবার্ক

3
আমরা কি নিউলাইন এবং খড়ের প্রস্থ (বা উচ্চতা) ছাড়াই একটি স্ট্রিংয়ের জুড়ি হিসাবে ইনপুট নিতে পারি? অর্থাত্("########N###########", 5)
আমার সর্বনাম 15

3
@ সোমোন হ্যাঁ, যদিও এটির আসল কোরাম নেই তবে আমার মনে হয় এটি অনুমোদিত হওয়া উচিত।
অ্যাডমবর্কবার্ক

উত্তর:


17

আর , 49 47 44 বাইট

function(m,`?`=which)m==names(?table(m)<2)?T

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

ম্যাট্রিক্স হিসাবে ইনপুট নেয়, 1-সূচকযুক্ত স্থানাঙ্ক প্রদান করে


4
এই whichদায়িত্ব অসম্মানজনক মসৃণ।
অপরাধমূলকভাবে

4
আর-তে এই চ্যালেঞ্জটি চেষ্টা করে দেখে আমি খুব উত্তেজিত হয়েছি, তখন আমি এটি দেখেছি এবং তার পরিবর্তে বিস্ময়ে কাঁদতে সিদ্ধান্ত নিয়েছি
Sumner18

9

পার্ল 6 ,41 38 37 বাইট

3 বাইট সংরক্ষণ করেছেন @ ননহ্নহোফকে ধন্যবাদ।

1 বাইট জো কিংকে ধন্যবাদ রক্ষা করেছে।

{map {[+] ^∞Z*!<<.&[Z~~]},$_,.&[Z]}

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

ব্যাখ্যা

এটি অক্ষরের তালিকাগুলির তালিকার তালিকা হিসাবে এবং সূচের শূন্য-ভিত্তিক এক্স এবং ওয়াই স্থানাঙ্ক সমন্বিত 2 দৈর্ঘ্যের তালিকার তালিকা হিসাবে ইনপুট নেয় takes

এটি {[+] ^∞ Z* !<<.&[Z~~]}ইনপুট এবং এর ট্রান্সপোজে ব্লক প্রয়োগ করে কাজ করে । .&[Z~~]আর্গুমেন্টের সমস্ত কলামের মধ্যে দিয়ে যায় এবং Trueযদি সমস্ত উপাদান একই থাকে তবে তা ফিরে আসে False। তারপরে আমরা সমস্ত মানটিকে অবহেলা করি (সুতরাং আমাদের কলাম প্রতি একটি বুল সহ একটি তালিকা রয়েছে, যেখানে বুল "সেই কলামের সূচ?" প্রশ্নটির উত্তর দেয়) 0,1,2, সিকোয়েন্সের সাহায্যে সেগুলি উপাদান অনুসারে গুণিত করে .. ( True = 1এবং False = 0) এবং তালিকাটি যোগ করুন, সুতরাং পুরো ব্লকের ফলাফলটি কলামটির 0-ভিত্তিক নম্বর যেখানে সুইটি পাওয়া গেছে।

নেলহনফের আরও ভাল পন্থা, পার্ল 6 , 34 বাইট

{map *.first(:k,*.Set>1),.&[Z],$_}

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

ব্যাখ্যা

সাধারণত একই পদ্ধতি, আরও কার্যকর more এটি এখনও অ্যারে এবং এর ট্রান্সপোজের উপর একটি ব্লক ব্যবহার করে তবে এখন ব্লকটি সমস্ত সারিগুলিকে রূপান্তর করে Setsএবং উপাদানগুলির সংখ্যা পরীক্ষা করে। এর পরে firstফাংশনটি :kপ্রথম সারির সূচক দেয় (এর কারণে ) যেটিতে 1 টিরও বেশি উপাদান রয়েছে। যে কারণে, ক্রম $_এবং .&[Z]প্রয়োজন আনা হবে।


চমৎকার পন্থা! 34 বাইট সহ first(:k), Setএবং .&[Z]
nwellnhof

@ ননহ্নহফ, খুব ভালভাবে সম্পন্ন হয়েছে। আপনি মূলত আমি যা সন্ধান করতে চেয়েছি তা পেয়েছি কিন্তু এটি করতে ব্যর্থ :-)। (এছাড়াও আপনি লিখতে পারেন এমন আমার কোনও ধারণা ছিল না .&[Z]))
রমিলিজ

সাধারণভাবে, .&[op]এটি সমতুল্য বলে মনে হয় না [op] $_তবে এটি Zকোনও কারণে এটির সাথে কাজ করে ।
nwellnhof

@ জোকিং, ধন্যবাদ!
রমিলিজ

9

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

lambda m:[map(len,map(set,a)).index(2)for a in zip(*m),m]

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


পাইথন 3 এ এর একটি বন্দর 62 বাইট হতে পারে :

lambda m:[[len(set(v))for v in a].index(2)for a in(zip(*m),m)]

তালিকার বোধগম্যতা, [len(set(v))for v in a]এখন দুটি বাইট দ্বিগুণ মানচিত্রের চেয়ে ছোট, কারণ এটির তালিকায় কাস্ট করা দরকারlist(map(len,map(set,a)))

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


6

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

c≡ᵍ∋Ȯ&;I∋₎;J∋₎gȮ∧I;J

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

আউটপুটস [I,J], যেখানে Iসারি সূচক এবং Jকলাম সূচক, উভয়ই 0-সূচীযুক্ত।

মূর্খতার সাথে দীর্ঘ, তবে ব্র্যাচল্যাজে সূচক পাওয়া সাধারণত খুব ভার্জোজ is

ব্যাখ্যা

c                       Concatenate the Input into a single string
 ≡ᵍ                     Group identical characters together
   ∋Ȯ                   Ȯ is a list of One element, which is the needle character
     &;I∋₎              Take the Ith row of the Input
          ;J∋₎          Take the Jth character of the Ith row
              gȮ        That character, when wrapped in a list, is Ȯ
                ∧I;J    The output is the list [I,J]

6

পিএইচপি ,99 85 বাইট

('########N###########', 5ইনপুট হিসাবে নিউলাইন এবং প্রস্থ (বা উচ্চতা) ছাড়াই স্ট্রিং ব্যবহার করা ।

  • Chr () কলটি সরিয়ে -5 বাইট, @ টিটাসকে প্রপস করে
  • দুটি ফাংশন আরগ হিসাবে ইনপুট নিয়ে -9 বাইটস, @ টিটাসকেও প্রপস করে
function($a,$l){return[($p=strpos($a,array_flip(count_chars($a,1))[1]))%$l,$p/$l|0];}

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

Ungolfed:

function need_hay( $a, $l ) {

    // identify the "needle" by counting the chars and 
    // looking for the char with exactly 1 occurrence
    // note: this is 1 byte shorter than using array_search()
    $n = array_flip( count_chars( $a, 1 ) )[1];

    // find the location in the input string
    $p = strpos( $a, $n );

    // row is location divided by row length, rounded down
    $r = floor( $p / $l );

    // column is remainder of location divided by row length
    $c = $p % $l;

    return array( $c, $r );

}

আউটপুট:

#####
###N#
#####
#####
[3,1]

^^^
^^^
^N^
^^^
^^^
^^^
[1,2]

jjjjjj
j@jjjj
jjjjjj
[1,1]

1
1) প্রয়োজন নেই chr: স্ট্রপোসের জন্য দ্বিতীয় পরামিতিটি একটি পূর্ণসংখ্যা হয়, তবে এটি ASCII কোড হিসাবে ব্যাখ্যা করা হবে। -> -5 বাইট। 2) দুটি ফাংশন পরামিতি $s,$wঅন্য 9 বাইট সংরক্ষণ করতে পারে।
তিতাস

@ টিটাস, ক্রিয়াকলাপটি মুছে ফেলছেন () এটি উজ্জ্বল। ধন্যবাদ! ফান প্যারামগুলি আমার কাছেও ঘটেছিল, আমি কেবল ইনপুট রেকের উপরের চালাতে চাইনি। আমি W / OP স্পষ্ট করব cla
640 কেবি

5

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

ইনপুট ফর্ম্যাটে স্যুইচিং 3 বাইট সংরক্ষণ করা হয়েছে।

ইনপুটটি স্ট্রিং এবং একটি সারি দৈর্ঘ্যের হিসাবে নেওয়া হয়।
আউটপুট ফর্মের শূন্য-ভিত্তিক তালিকা[y, x]

D.mks‰

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

ব্যাখ্যা

D           # duplicate the input string
 .m         # get the least frequent character
   k        # get its index in the string
    s       # swap the row length to the top of the stack
     ‰      # divmod the index of the least frequent char with the row length

ডাং, তুমি আমাকে মারতে। একটি উত্তর নিয়ে কাজ করা ছিল। সবেমাত্র 13-বাইটার শেষ করেছেন। তবে আপনার দিকটি আরও ভাল, পরিবর্তে +1। :) সম্পর্কে সম্পূর্ণরূপে ভুলে গেছি .m..
কেভিন ক্রুইজসেন

@ কেভিন ক্রুজসেন: হ্যাঁ। আমি মনে করি না যে আমি এর .mআগে কখনও ব্যবহার করেছি , তবে আমি নিশ্চিতভাবে নিশ্চিত যে আমি এটি কোনও সময় দেখেছি :)
এমিগানা

5

পাইথন 3 + নুমপি , 75 66 বাইট

-9 বাইটস কেবলমাত্র ASCII- এর জন্য ধন্যবাদ

lambda x:where(x.view('i')-median(x.view('i')))
from numpy import*

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

এটি ধরে নিয়েছে যে ইনপুটটি একটি NumPy অ্যারে। আউটপুটটি শূন্য-সূচকযুক্ত, এবং প্রথম উলম্ব, তারপর অনুভূমিক।

এটি পরিবর্তন করে থেকে ইনপুট charকরতে intতারপর অ্যারের, যা খড়ের গাদা চরিত্র হতে হবে মধ্যমা হিসাব করে। আমরা এটি অ্যারে থেকে বিয়োগ করি, যা সূঁচকে একমাত্র অ-শূন্য উপাদান করে তোলে। অবশেষে, এর সাথে সেই উপাদানটির সূচকটি ফেরত দিন numpy.where()


1
যেহেতু আপনি জানেন যে ইনপুটটি ASCII হবে (অর্থাত্ একটি বাইটে ফিট করে) কেন একটি বাইটের uint8জন্য কম ব্যবহার করবেন না ?
ড্রাকনিস

1
ভাষাটি এখানে "পাইথন 3 + নম্পি" হতে হবে যেহেতু নপিকে সাধারণ পাইথন বিতরণের সাথে অন্তর্ভুক্ত করা হয় না
ASCII-

@ ড্রাকনিস যা আসলে আমার পরিকল্পনা ছিল তবে এটি সঠিক uint8ASCII- কোডগুলির মধ্যে শূন্যগুলি প্রবর্তন করেছিল । আমি এটি ধরে নিয়েছি কারণ পাইথন 3 স্ট্রিংগুলির জন্য ইউনিকোডকে স্ট্যান্ডার্ড ইনপুট ফর্ম্যাট হিসাবে ব্যবহার করে।
এইচবিডার্টস


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

4

জেলি , 5 বাইট

ফলাফলগুলি [উচ্চতা, প্রস্থ] (1-ইনডেক্সড)।

ŒĠLÐṂ

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

ŒĠLÐṂ – Monadic link / Full program. Takes a list of strings M as input.
ŒĠ    – Group the multidimensional indices by their values (treating M as a matrix).
  LÐṂ – And retrieve the shortest group of indices (those of the unique character).

জেলি , 5 বাইট

ŒĠḊÐḟ

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


4

জেলি , 4 বাইট

সম্ভবত এটি মিঃ এক্সকোডারের পক্ষে একটি মন্তব্য হতে পারত এটি বেশ অনুরূপ ...

ŒĠEƇ

অক্ষরের ম্যাট্রিক্স গ্রহণ করে এমন এক লিঙ্ক লিঙ্ক যা একটি আইটেমের একটি তালিকা দেয়, উপরের-বাম দিক থেকে 1-সূচকযুক্ত (সারি, কলাম) সমন্বয়।
(... একটি সম্পূর্ণ প্রোগ্রাম হিসাবে যেমন একটি আর্গুমেন্ট ফর্ম্যাট করা যেমন অক্ষরের তালিকার তালিকার ফলাফল পার্সিং - এটি পাইথন ফর্ম্যাটে স্ট্রিংগুলির একটি তালিকা - একক স্থানাঙ্কটি মুদ্রিত হয়))

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

কিভাবে?

ŒĠEƇ - Link: matrix, M
ŒĠ   - multi-dimensional indices grouped by Value
     -  ...due to the 2*2 minimum size and one needle this will be a list of two lists one
     -     of which will have length one (the needle coordinates as a pair) and the other
     -     containing all other coordinates as pairs
   Ƈ - filter keeping those for which this is truthy:
  E  -   all equal?
     -   ... 1 for the list of length 1, 0 for the list of at least 3 non-equal coordinates

1
ঠিক আছে ... এটা বর্ডারলাইন বলে মনে হচ্ছে, যেহেতু চতুর চালাক
এরিক আউটগল্ফার

4

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

(গুলি)(W)গুলিW[এক্স,Y]

s=>w=>[(i=s.indexOf(/(.)\1+(.)/.exec(s+s)[2]))%w,i/w|0]

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


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

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

[এক্স,Y]

m=>m.some((r,y)=>r.some((c,x)=>!m[p=[x,y],~y&1].includes(c)))&&p

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

কিভাবে?

(এক্স,Y)R[ওয়াই]ওয়াইY2×2ওয়াই=0Yওয়াই=1Y


1
~y&1একটি বাইট ওভার সাশ্রয় y&1^1
নিল

4

জাভা 8, 132 111 বাইট

m->{int c=m[0][0],i=0,j;for(c=m[1][0]!=c?m[1][1]:c;;i++)for(j=m[i].length;j-->0;)if(m[i][j]!=c)return i+","+j;}

-8 বাইট (এবং -13 আরও স্পষ্টভাবে ) @ ডানাকে ধন্যবাদ ।

অক্ষর-ম্যাট্রিক্স হিসাবে ইনপুট।

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

ব্যাখ্যা:

m->{                    // Method with char-matrix parameter and String return-type
  int c=m[0][0],        //  Character to check, starting at the one at position 0,0
      i=0,j;            //  Index integers
  for(c=m[1][0]!=c?     //  If the second character does not equal the first:
         m[1][1]        //   Use the character at position 1,1 instead
        :c;             //  Else: keep the character the same
      ;i++)             //  Loop `i` from 0 indefinitely upwards:
    for(j=m[i].length;j-->0;)
                        //   Inner loop `j` in the range (amount_of_columns, 0]:
      if(m[i][j]!=c)    //    If the `i,j`'th character doesn't equal our character to check:
        return i+","+j;}//     Return `i,j` as result

1
124 - চূড়ান্ত returnবিবৃতি কখনও আঘাত করা উচিত নয়। বাইরের লুপটি চালিয়ে যাওয়ার আরও ভাল উপায় হতে পারে?
দানা

@ দানা ধন্যবাদ! যেমন: " বাইরের লুপটি চালিয়ে যাওয়ার আরও ভাল উপায় হতে পারে? ", অবশ্যই আছে; কেবল এটি অপসারণ যাতে এটি একটি অসীম লুপ হয়ে যায়। এবং তারপরে এটি return"";অ্যাক্সেসযোগ্য এবং পাশাপাশি সরানো যেতে পারে। : ডি সো -21 বাইটস আপনাকে ধন্যবাদ।
কেভিন ক্রুইজসেন 20

আকর্ষণীয় ... আমি বাইরের লুপের শর্তটি সরিয়ে দেওয়ার চেষ্টা করেছি এবং একটি unreachable codeত্রুটি পেয়েছি । ফাইনাল সরিয়ে returnফিক্স করা ছিল তা জানেন না ।
ডানা

অভ্যন্তরীণ লুপে -> অপারেটরটি ঠিক কী করে? আমি সেই বাক্য
গঠনটির

1
@ কেবাস্ক এটি দুই অপারেটর: i--এবং >। :) আরও তথ্যের জন্য এই তাই উত্তর দেখুন। সুতরাং i > 0প্রথমে মৃত্যুদন্ড কার্যকর করা হবে, i0 এর চেয়ে বড় কিনা তা পরীক্ষা করে এবং তারপরে এটি লুপের শরীরে প্রবেশের আগে i1 দিয়ে হ্রাস পায় i--
কেভিন ক্রুইজসেন

3

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

tX:XM-&f

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

modeসংখ্যাগরিষ্ঠ-আবিষ্কারক হিসাবে ফাংশনটি ব্যবহার করা । 1-ভিত্তিক সূচকগুলি প্রদান করে।

 t           % duplicate the input
  X:         % turn the copy into a linear array
    XM       % find the arithmetic mode of that (the 'haystack' character)
      -      % Subtract that from the original input
       &f    % find the position of the non-zero value in that result

@ লুইস মেন্ডো -4 অক্ষর ধন্যবাদ


1
ধন্যবাদ লুইস মেন্ডো আমি মনে করি না আমি findএমনকি ম্যাটল্যাব- এর 2 আউটপুট সংস্করণ সম্পর্কে জানতাম । (হাই, বিটিডব্লিউ!)
- মনিকা পুনরায় ইনস্টল করুন

3

ওল্ফ্রাম ভাষা 37 58 বাইট

আমার আগের এন্ট্রিটি ম্যাট্রিক্সের উপরের বাম কোণে "বিজোড় চরিত্রের আউট" কেসটি সঠিকভাবে পরিচালনা করতে পারেনি। এটা করে।

#~Position~Keys[TakeSmallest[Counts@Flatten@#,1]][[1]]&

Counts@Flatten@#অ্যারেতে প্রতিটি চরিত্রের কতটি রয়েছে তা তালিকাবদ্ধ করে #,।

TakeSmallest[...,1] সংস্থার বিধি হিসাবে যেমন সর্বনিম্ন ঘন ঘন গণনা প্রদান করে <| "Z"->1|>

Keys...[[1]]অ্যাসোসিয়েশনের একমাত্র আইটেমটিতে "কী" প্রদান করে, স্বল্প ব্যবহৃত চরিত্রটি। (বর্তমান ক্ষেত্রে "জেড")

#~Position~...আসল ম্যাট্রিক্সে কী এর অবস্থান ফিরে আসে #


3

পার্ল 5 -p00, 52 45 বাইট

/^(.)(\1*
)*(\1*)|^/;$_=$&=~y/
//.$".length$3

45 বাইট

52 বাইট

কিভাবে

  • -p00: পছন্দ করুন -nতবে মুদ্রণ করুন, অনুচ্ছেদ মোড
  • /^(.)(\1* )*(\1*)|^/ : হয় মেলে
    • শুরু থেকে $1: প্রথম অক্ষর $2: পুনরাবৃত্তি (ব্যবহৃত হয়নি),$3 : লাইনে "সুই" এর আগে অক্ষর, $&পুরো ম্যাচ
    • বা নাল স্ট্রিং (অবস্থান 0) কোনও ক্যাপচার নেই।
  • $_= : ডিফল্ট ইনপুট / আর্গুমেন্ট ভেরিয়েবল নির্ধারণ করতে
  • সুতরাং $&=~y/ //নিউলাইন সংখ্যা$&
  • .$".: $"ডিফল্টরূপে স্পেস ক্যারেক্টার দিয়ে কনকনেটেট এবং কনকেনেটেট
  • length$3 : দৈর্ঘ্য $3

3

আর 42 বাইট

function(m)which(ave(m,m,FUN=length)==1,T)

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

ইনপুট: একটি খড়খড়ি ম্যাট্রিক্সm

আউটপুট: (row,col) ভেক্টর - সূচকটি শুরু হয়1


1
চমৎকার কাজ, এবং পিপিসিগিতে আপনাকে স্বাগতম! আমি বিশ্বাস করি এটি 42 বাইট, যেহেতু f=বাইট গণনা থেকে বাদ দেওয়া যেতে পারে তবে তা নয় function(m)=
বিএলটি

@ বিএলটি আমি সে সম্পর্কে নিশ্চিত ছিলাম না তবে মাথা উঁচু করার জন্য ধন্যবাদ :)
নিকো

2

সি # (ভিজ্যুয়াল সি # ইন্টারেক্টিভ সংকলক) , 109 108 107 বাইট

প্রথম () => সর্বশেষ () -1 বাইটের জন্য

অজ্ঞতার মূর্ত প্রতীককে -1 বাইটের জন্য কারী করা হচ্ছে

a=>w=>{var d=a.Where(b=>b!=a[0]).Select(b=>a.IndexOf(b));return d.Count()>1?(0,0):(d.Last()%w,d.Last()/w);}

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



2

পাইথন 2 , 53 47 বাইট

lambda s,w:divmod(s.find(min(s,key=s.count)),w)

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

হিসাবে কল f("########N###########", 5)(একটি মন্তব্যে অনুমোদিত )। আউটপুটস (y, x)

এরিক 6 টি বাইট সংরক্ষণ করেছেন, ব্যবহার করে আউটপুট পুনরায় সাজানোর পরামর্শ দিয়েছেন divmod। ধন্যবাদ!


আপনি আউটপুটটিকে পুনরায় অর্ডার করতে পারেনdivmod , যাতে আপনি বিল্টিন ব্যবহার করতে পারেন
এরিক আউটগল্ফার

2

পাওয়ারশেল , 107 98 82 77 বাইট

$l=@{}
$args|%{if($_-10){$l.$_+=$x++,+$y}else{$x=0;++$y}}
$l|% v*|? c*t -eq 2

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

এলএফগুলির সাথে একটি স্প্ল্যাটেড স্ট্রিং নেয়। শূন্য-সূচকযুক্ত অবস্থান x, y প্রদান করে। Unrolled:

$locations=@{}                      # make a hashtable. key=char, value=location array
$args|%{
    if($_-10){                      # if current char is not LF
        $locations.$_+=$x++,+$y     # add $x,$y to hashtable value and move $x to next pos
    }else{
        $x=0;++$y                   # move $x,$y to next line
    }
}
$locations|% Values|? Count -eq 2   # find and output location array with 2 elements (x,y)



1

রেটিনা 0.8.2 , 41 বাইট

s`(?=(.)+\1)(.*?¶)*(.*)(?!\1|¶).+
$.3,$#2

এটি অনলাইন চেষ্টা করুন! 0-ইন্ডেক্স। ব্যাখ্যা:

s`

.নতুন লাইনের সাথে মেলানোর অনুমতি দিন । এই খরচ 3 বাইট (3 য় বাইট ?সামনে ) কিন্তু 6 বাইট পরিমাণ সঞ্চয় হয়।

(?=(.)+\1)

দুটি অভিন্ন চরিত্রের জন্য অপেক্ষা করুন। \1তারপর খড় হয়।

(.*?¶)*

সুই এর আগে নতুন লাইনের সংখ্যা গণনা করুন।

(.*)

সুই এর বাম দিকে খড় ক্যাপচার।

(?!\1|¶)

সুচ খড়খণ্ড বা একটি নতুন লাইন নয় তা নিশ্চিত করুন।

.+

খড়ের বাকী অংশটি মেলে যাতে ফলাফল এটি প্রতিস্থাপন করে।

$.3,$#2

বাম খড়ের প্রস্থ এবং নিউলাইনগুলির সংখ্যা আউটপুট করুন।


1

সি # (ভিজ্যুয়াল সি # ইন্টারেক্টিভ সংকলক) , 82 বাইট

x=>w=>{int y=x.IndexOf(x.GroupBy(c=>c).Last(g=>g.Count()<2).Key);return(y%w,y/w);}

দানা ধন্যবাদ 6 বাইট শেভ করার জন্য!

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

ওল্ড সলিউশন, 106 বাইট

n=>m=>{var z=n.Distinct();int d=n.IndexOf(n.Count(c=>c==z.First())>1?z.Last():z.First());return(d%m,d/m);}

উভয়ই স্ট্রিং এবং কলামগুলির পরিমাণ নির্দিষ্ট করে পূর্ণসংখ্যা হিসাবে ইনপুট নেয়।

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


@ ডানা কখনই জানতেন না যে Enumerable.Last()একটি প্রতিনিধি গ্রহণ করেছেন, ধন্যবাদ
অজ্ঞতার

1

জাভা 8, 104 বাইট

(x,w)->{int i=0,p=x.length;for(;i<p;i++)if(x[i]!=x[(i+1)%p]&&x[i]!=x[(i+2)%p])break;return i/w+","+i%w;}

ইনপুটটি চরের অ্যারে এবং সংখ্যার সারি প্রস্থ নির্দেশ করে।

আউটপুট শূন্য-ভিত্তিক, উল্লম্ব তারপর অনুভূমিক (অর্থাত্, সারি সংখ্যা এবং কলাম নম্বর)

ব্যাখ্যা:

(x,w)->{
    int i=0, p=x.length;
    for (;i<p;i++)          //iterate through characters in x
      if (x[i]!=x[(i+1)%p] && x[i]!=x[(i+2)%p])    //compare x[i] with the two subsequent characters in array, wrapping around if necessary
        break;
    return i/w+","+i%w;}  //return row number then column number, zero-based

1

পাইথন 3 , 93 89 85 58 বাইট

সম্পূর্ণ পুনর্লিখন ইনপুট হিসাবে গ্রহণ concatenated string, width:

lambda g,w:divmod(g.index({g.count(c):c for c in g}[1]),w)

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


আসল উত্তর:

def k(g):t=''.join(g);return divmod(t.index({t.count(c):c for c in t}[1]),len(g[0]))

সম্পাদনা: সেমিকোলনের জন্য লাইন ব্রেক / ইনডেন্ট অদলবদল করে 4 বাইট সংরক্ষণ করা হয়েছে। divmod(ধন্যবাদ জনাথনফ্রেচ) ব্যবহার করে আরও 4 টি বাইট সংরক্ষণ করা হয়েছে ।

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

আমি জানি এটি অনেক খাটো হতে পারে, তবে আমি কেবল এই dictউপলব্ধিটি ঘিরে একটি পদ্ধতির চেষ্টা করতে চেয়েছিলাম ।


1
ব্যবহার divmodকরে পাঁচটি বাইট সাশ্রয় হবে।
জনাথন ফ্রেচ

0

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

tX:YmyYk-&f

আউটপুট সারি, তারপরে কলাম; 1-ভিত্তিক।

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

ব্যাখ্যা

t    % Implicit input. Duplicate
X:   % Linearize into a column
Ym   % Compute mean (characters are converted to ASCII codes)
y    % Duplicate from below: pushes input again
Yk   % Closest value: gives the input value that is closest to the mean
-    % Subtract, element-wise. Gives non-zero for the value farthest from the mean
&f   % Two-output find: gives row and column indices of nonzeros. Implicit display

0

পাইথ, 15 14 12 বাইট

.Dxz-zh.-z{z

সারিটির দৈর্ঘ্য হিসাবে ইনপুট নেয় এবং লাইনগুলি এবং আউটপুটগুলি [সারি, কলাম] হিসাবে ইনপুট নেয়।
এখানে চেষ্টা করুন

ব্যাখ্যা

.Dxz-zh.-z{z
       .-z{z    Subtract one of each character from the input.
      h         Take the first.
    -z          Remove all instances from the input.
  xz            Find the remaining character in the input.
.D          Q   Take the result divmod the (implicit) length of the row.

পুরানো পদ্ধতির

mxJmt{kdeSJ.TB

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

ব্যাখ্যা

mxJmt{kdeSJ.TB
           .TBQ   Take the (implicit) input and its transpose...
m      d          ... and for each...
   mt{k           ... deduplicate each row...
 xJ     eSJ       ... and find the index of the largest.     

0

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

≔§⎇⌕θ§θ¹ηθ⁰ζSθW⁼№θζLθ«⊞υωSθ»I⌕Eθ⁼ιζ⁰,ILυ

এটি অনলাইন চেষ্টা করুন! লিঙ্কটি কোডটির ভার্জোজ সংস্করণ। আমি অবশ্যই কিছু ভুল করছি কারণ রেটিনা উত্তর হিসাবে এটি প্রায় দীর্ঘ। ব্যাখ্যা:

≔§⎇⌕θ§θ¹ηθ⁰ζ

প্রথম স্ট্রিংয়ের দ্বিতীয় অক্ষরটিও প্রথম অক্ষর কিনা তা পরীক্ষা করে দেখুন এবং প্রথম স্ট্রিংয়ের প্রথম অক্ষরটি গ্রহণ করুন যদি তা নাহলে দ্বিতীয় স্ট্রিংয়ের প্রথম অক্ষর না হয়। এই তাহলে খড়।

SθW⁼№θζLθ«⊞υωSθ»

তার পাদদেশের দৈর্ঘ্যের চেয়ে কম খাঁজ পাওয়া স্ট্রিং না পাওয়া পর্যন্ত স্ট্রিংগুলি পড়তে থাকুন।

I⌕Eθ⁼ιζ⁰,ILυ

মেলে না এমন উপাদানের অবস্থান এবং তারপরে পূর্বে পড়া স্ট্রিংয়ের সংখ্যা আউটপুট দেয়।


0

ম্যাটল্যাব, 68 22 বাইট

[r,c]=find(v~=v(1));if size(r,1)>1 disp([1,1]);else disp([r,c]);end;

আমি যদি [1,1]এই সমাধানে কোনও একটি মামলা বাদ দিতে পারি তবে আমি বেশ কয়েকটি বাইট সংরক্ষণ করতে পারতাম।

আপডেট সমাধান :

@(v)find(v-mode(v(:)))

@ কেস বিশেষ ধন্যবাদ সমস্যাটি আমাকে সাহায্য করার জন্য এবং 42 বাইট সংরক্ষণ করার জন্য ধন্যবাদ! এছাড়াও, পরামর্শগুলি এবং আমাকে আরও 2 বাইট সংরক্ষণের জন্য @ লুইস_মেন্ডোকে ধন্যবাদ!


আমি মনে করি আপনি এর পরিবর্তে [1,1]ব্যবহার করে চেক থেকে মুক্তি পেতে পারেন । mode(v(:))v(1)
- মনিকা পুনরায় ইনস্টল করুন

আপনার কোডটি মোড়ানো দরকার যাতে এটি একটি সম্পূর্ণ প্রোগ্রাম বা কোনও ফাংশন; আপনি অনুমান করতে পারে না যে ইনপুট একটি পরিবর্তনশীল হয় v। এছাড়াও, আপনি সম্ভবত প্রতিস্থাপন করতে পারেন ~=দ্বারা -এবং অপসারণ চূড়ান্ত;
লুইস Mendo

0

রাদা , 81 বাইট

f a{i=indexOf;l=i("
",a)+1;chars a|sort|count|[[_2,_1]]|min|i _[1],a|[_%l,_1//l]}

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

নিউলাইন-টার্মিনেটেড লাইনগুলি যুক্ত স্ট্রিং হিসাবে ইনপুট নেয়। 0-সূচিযুক্ত অনুভূমিক এবং উল্লম্ব সূচকযুক্ত একটি স্ট্রিম ফিরিয়ে দেয়।

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