ম্যাচমেকার, ম্যাচমেকার, আমাকে ম্যাচ বানান


21

(আমরা একটি খুঁজে Findবা একটি ধরা হবে নাtryCatch যদিও না)

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

কাজটি:

আপনি আর এর ফাংশন বাস্তবায়ন করতে হবেmatch যতটা সম্ভব কম কয়েকটি বাইটে ।

ইনপুট:

  • x, সম্ভবত খালি তালিকা / পূর্ণসংখ্যার অ্যারে
  • table, সম্ভবত খালি তালিকা / পূর্ণসংখ্যার অ্যারে
  • nomatch, একটি একক পূর্ণসংখ্যার মান
  • incomparables, সম্ভবত খালি তালিকা / পূর্ণসংখ্যার অ্যারে

আউটপুট:

  • একক অ্যারে / Oসমান দৈর্ঘ্যের পূর্ণসংখ্যার তালিকা x, যেখানে প্রতিটি মান O[i]উভয়ই উপস্থাপন করে:
    • সূচক jএর প্রথম মান tableযেখানেtable[j]==x[i]
    • nomatch, যা নির্দেশ করে কোনো মূল্যই tableসমান x[i] বা যে x[i]তালিকায় নেই incomparables

পরীক্ষার মামলা

All in the form x, table, nomatch, incomparables -> output
outputs 

[], [1,2,3], 0, [5] -> []

[1, 2, 3], [], 0, [5] -> [0, 0, 0]

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

[8, 6, 7, 5, 3, 0, 9], [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5, 8, 9, 7, 9, 3, 2, 3, 8, 4, 6, 2, 6], 1000, [1] -> [12, 8, 14, 5, 1, 1000, 6]

প্রয়োজন অনুযায়ী আরও পরীক্ষার কেস তৈরি করা যেতে পারে।

অতিরিক্ত নিয়ম:

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

এটি , তাই বাইটের মধ্যে সংক্ষিপ্ততম সমাধান!


এটা নেতিবাচক সংখ্যা সমর্থন করা উচিত? আমি ধরে নেব যে এটির দরকার নেই, যেহেতু কেবল উদাহরণ এটি ধরে নেয় এবং আমি নিশ্চিত যে এর কোনও মানক নিয়ম আছে।
wizzwizz4

@ wizzwizz4 No, কারণ এতে 4আছে incomparables, সুতরাং এটি মিলানো যায় না । যদি আপনার ভাষা নেতিবাচক সংখ্যাগুলি সমর্থন করতে না পারে তবে অ-নেতিবাচক সংখ্যার প্রয়োজন হয় তবে এটি আপনার জমা দেওয়ার অনুমিতিটি উল্লেখ করুন।
জিউসেপ

1
শিরোনাম মন্তব্য যোগ করুন: আমরা এছাড়াও করা হবে না make
ভ্যাল 21 ডিসেম্বর

1
@ অবশেষে এটি ছাদে ফিডলারের কাছে খুব খারাপ একটি রেফারেন্স ; এই সমস্ত চ্যালেঞ্জগুলির বিভিন্ন শ্যুটুনের পরে থিমযুক্ত শিরোনাম কারণ এটি একটি এতটাই ফিট করে যে আমি ভেবেছিলাম এটি একটি ভাল থিম তৈরি করবে।
জিউসেপ

উত্তর:


8

জেলি ,  10  8 বাইট

-২ এরিক দ্য আউটগলফারকে ধন্যবাদ

,⁷y⁵iⱮ⁶o

একটি সম্পূর্ণ প্রোগ্রাম চারটি কমান্ড লাইন আর্গুমেন্ট গ্রহণ করে, incomparables nomatch table xযা আর এর matchফাংশন ফলাফলের তালিকার জেলি প্রতিনিধিত্ব * মুদ্রণ করে ।

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

কিভাবে?

যেমন incomparables nomatch table x= সহ [1,4], 2, [2,4], [4,3,2,1,0]:

,⁷y⁵iⱮ⁶o - Main Link: list, incomparables; list, nomatch
 ⁷       - newline character                                '\n'
,        - pair (incompararables) with (right)              [[1,4],'\n']
   ⁵     - 5th argument (3rd input = table)                 [2,4]
  y      - translate (right) with lookup (left)             [2,'\n']             
      ⁶  - 6th argument (4th input = x)                     [4,3,2,1,0]
     Ɱ   - map with:
    i    -   first index of (right) in (left)               [0,0,1,0,0]
       o - logical OR                                       [2,2,1,2,2]

* একটি খালি তালিকা কিছুই হিসাবে উপস্থাপন করা হয়, একটি তালিকাভিত্তিক একটি তালিকা কেবল আইটেম হিসাবে উপস্থাপিত হয়, অন্য তালিকা তালিকাগুলি দ্বারা আবদ্ধ থাকে []এবং এর মাধ্যমে সীমান্ত থাকে,



6

আর , 55 বাইট

এই ক্ষেত্রে, কোডটি matchতার সম্পূর্ণ কার্যকারিতা সহ ব্যবহার করে না , এটি কেবলমাত্র একটি হিসাবে ব্যবহৃত হয়index ফাংশন । প্রথম আর উত্তর, সম্ভবত অবিশ্বাস্যভাবে অক্ষম বাইট-ওয়াইজ!

নোট (ধন্যবাদ : Giuseppe তথ্যের জন্য) : %in% এবং setdiffএছাড়াও উভয় অভ্যন্তরীণভাবে ব্যবহার করে বাস্তবায়ন করা match, তাই সম্পূর্ণরূপে এই আশ্চর্যজনক দরকারী ফাংশন পরিত্রাণ একটি পরিণাম ডেকে আনবে জগাখিচুড়ি । অতএব, এর জন্য কোনও সময়সীমা ছাড়াই একটি 150-প্রতিনিধি অনুদান রয়েছে! (নোট যে setdiffঅনুমোদিত, যদিও)

function(x,t,n,i)ifelse(x%in%setdiff(t,i),match(x,t),n)

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

বা ...

আর , 5 বাইট

match

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


আমি নিশ্চিত আমি ভাল যদিও আমি ব্যবহার eschewing ছিল কাজ করতে পারে %in%এবং match; আপনি যদি এই ফাংশনগুলি (ভয়ঙ্কর হতে পারে) এর বাইরে না করে কোনও ভাল গোল্ফির উত্তর পেতে চান তবে আমি এটিকে অনুগ্রহ করব।
জিউসেপ

আহ lol, আমি কেবল সে সম্পর্কে গল্ফআর তে মন্তব্য করেছি ...
মিঃ এক্সকোডার

কেবলমাত্র ছদ্মবেশী matchজমা দেওয়ার জন্য
উত্সাহিত

আপনি খাটো করতে পারেন ifelse: এই ডগা ব্যবহার codegolf.stackexchange.com/a/97826/59530
JAD

2
এছাড়াও, আপনার দীর্ঘ match
জমাটি






4

পাইথন 3 , 60 বাইট

lambda x,t,n,i:[v in{*t}-{*i}and-~t.index(v)or n for v in x]

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


এর বৈশিষ্ট্যগুলি 3.8 এর সাথে নির্দিষ্ট? আমার এই মত দেখায় পাইথন 3. কোন বৈধরূপে প্রতিষ্ঠিত সরকারকে উত্খাত জন্য কাজ করতে পারে
থিও

ঠিক আছে, এটি 3.8 দ্বারা নির্দিষ্ট নয় । আমি কেবল টিআইওতে স্বতঃ-উত্পন্ন টেম্পলেটটি অনুলিপি করে ফেলেছি যাতে আমি লক্ষ্য করি না যে আমি 3.8 ব্যবহার করেছি। মাথা আপ জন্য ধন্যবাদ, সামঞ্জস্য করবে।
মিঃ এক্সকোডার

1
R has 1-based indices, but a consistent alternative-based indices are acceptable.সুতরাং আপনি বের করতে পারেন -~এবং কেবল -1 বাইটের জন্য 0-ইনডেক্সিং ব্যবহার করতে পারেন ।
মান্য কালি

1
@ ভালিউইঙ্ক এটি তৃতীয় পরীক্ষার ক্ষেত্রে ব্যর্থ হয় (এবং সাধারণভাবে যখন কোনও মিলের উপাদান তালিকার শুরুতে থাকে), যেহেতু পাইথনে 0 টি মিথ্যা।
মিঃ এক্সকোডার

1
আহ, ফেয়ার শো ঘটনাক্রমে, t.index(v)if v in{*t}-{*i}else nআপনার বর্তমান v in{*t}-{*i}and-~t.index(v)or nসমাধান হিসাবে ঠিক একই বাইক্যান্ট আছে , হাহা
মান কালি



3

পার্ল 6 , 45 বাইট

->\b,\c,\d{*>>.&{$_d&&~b.first($_,:k)||c}}

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

বেনামি কোড ব্লক যা ইনপুট কারিটেড লাগে, পছন্দ করে f(table, nomatch, incomparables)(x)এবং ম্যাচগুলিকে 0 সূচিযুক্ত করে দেয়।

ব্যাখ্যা:

->\b,\c,\d{                               }    # Anonymous code block taking 3 inputs
           *           # Return an anonymous Whatever lambda
            >>.&{                        }  # Mapping input to
                 $_d                       # If the element is not an uncomparable
                     && b.first($_,:k)      # Return the first index in the table
                       ~                    # Stringified so Nils are false
                                      ||c   # Else the nomatch element
~~

+1 আমি এটির জন্য সংক্ষেপে $_∉d&&b.antipairs.Map{$_}||cকাজ করেছি কিন্তু এটি করছি যা ভাল কাজ করবে তবে মিথ্যা মান 0 এর জন্য for প্রথম ($ _: কে) একটি দুর্দান্ত সমাধান যা দীর্ঘ অ্যান্টিপায়ারগুলি এড়িয়ে চলে ap
user0721090601

2

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

IEθ∨∧¬№ει⊕⌕ηιζ

এটি অনলাইন চেষ্টা করুন! লিঙ্কটি কোডটির ভার্জোজ সংস্করণ। 1-ইন্ডেক্স। ব্যাখ্যা:

  θ             First input (x)
 E              Map over elements
       ε        Fourth input (incomparables)
      №         Count occurrences of
        ι       Current element
     ¬          Is zero
    ∧           Logical And
           η    Second input (table)
          ⌕     Find 0-based index of
            ι   Current element
         ⊕      Convert to 1-indexed
   ∨            Logical Or
             ζ  Third input (nomatch)
I               Cast to string
                Implicitly print on separate lines

2

সি (জিসিসি) , 125 বাইট

1-ইন্ডেক্স।

প্রদত্ত অ্যারেগুলিতে আমি একটি সেন্ডিনেল মান ব্যবহার করতে পারি না তা প্রদত্ত, আমাকে প্রতিটি অ্যারের জন্য অ্যারের সীমানা দেওয়া দরকার।

f(x,c,t,d,n,i,e,j,f)int*x,*t,*i;{for(;f=0,c-->0;x[c]=--f?n:j){for(j=e;!f&j;x[c]-i[--j]||--f);for(;!f&j<d;x[c]-t[j++]||++f);}}

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


2

সংযুক্তি , 39 বাইট

${{[_,y][nil=_or x@_in z]}=>x&Index@_4}

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

খুব সহজ যাচাইকরণ। নোট করুন যে যুক্তির ক্রমটি ম্যাচের চেয়ে পৃথক; বিশেষত, xপ্রথমটির চেয়ে শেষ যুক্তিটি _4এবং এটি উপরের স্নিপেটের সাথে মিলে যায়।

ব্যাখ্যা

${{[_,y][nil=_or x@_in z]}=>x&Index@_4}
${                                    }   named lambda, taking parameters x, y, z, and _4
                            x&Index@_4    short for Index[x, _4];
                                              calculates where each element in _4 occurs in x
                                              returns `nil` for no match
  {                      }=>              over each index:
   [_,y][               ]                     choose y (`nomatch`) if
         nil=_                                    the index is nil
              or x@_in z                          or the element is in `incomparables`
    _                                         otherwise, choose the index


2

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

õ:Ik®I:

0-ইন্ডেক্স। ইনপুটগুলি ক্রমে রয়েছে:incomparables, table, x, nomatch

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

ব্যাখ্যা:

õ:       # Replace all values of the (implicit) first incomparables-list in
         # the (implicit) second table-list with an empty string
         #  i.e. incomparables=[4] and table=[9,8,7,6,5,4,3,2,1] → [9,8,7,6,5,"",3,2,1]
  Ik     # Get the index of each value in the third x-list in this list (-1 if not found)
         #  i.e. x=[9,4,3,6,3] → [0,-1,6,3,6]
    ®I:  # Replace all -1 with the fourth input-integer
         #  i.e. nomatch=-99 → [0,-99,6,3,6]
         # (and output the mapped list implicitly as result)
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.