অন্য তালিকায় মানের সূচকগুলি সন্ধান করুন


21

আপনাকে অবশ্যই ইনপুট হিসাবে ধনাত্মক পূর্ণসংখ্যার দুটি তালিকা নিতে হবে, আসুন এইগুলিকে এন এবং এম কল করুন ।

আপনি ধরে নিতে পারেন:

  • N তে সমস্ত পূর্ণসংখ্যা মিটার অংশ
  • মি তে সমস্ত পূর্ণসংখ্যা অনন্য
  • তালিকাগুলি খালি নয়

চ্যালেঞ্জ: ফিরে যেখানে আপনি মান খুঁজে সূচকের এন , এ এম

এটি বিভ্রান্তিকর হতে পারে, তবে আমি মনে করি পরীক্ষার কেসগুলি কার্যটি পরিষ্কার করে দেবে। উদাহরণগুলি 1-ইনডেক্সড, আপনি চাইলে 0-সূচিযুক্ত চয়ন করতে পারেন (দয়া করে নির্দিষ্ট করুন)।

n = 5 3 4 1
m = 6 8 4 1 2 5 3 100
output: 6 7 3 4    // 5 is in the 6th position of m 
                   // 3 is in the 7th position of m
                   // 4 is in the 3rd position of m
                   // 1 is in the 4th position of m

n = 5 3 4 9 7 5 7
m = 3 4 5 7 9
output: 3 1 2 5 4 3 4

n = 1 2 3 4 5 6
m = 1 2 3 4 5 6
output: 1 2 3 4 5 6

n = 16 27 18 12 6 26 11 24 26 20 2 8 7 12 5 22 22 2 17 4
m = 15 18 11 16 14 20 37 38 6 36 8 32 21 2 31 22 33 4 1 35 3 25 9 30 26 39 5 23 29 10 13 12 7 19 24 17 34 27 40 28
output: 4 38 2 32 9 25 3 35 25 6 14 11 33 32 27 16 16 14 36 18

n = 54
m = 54
output: 1

বিজয়ীরা প্রতিটি ভাষায় সংক্ষিপ্ত সমাধান হবে।


এটি উপায় দ্বারা একটি খুব সুন্দর মেটা পোস্ট!


এটি একটি আশ্চর্যজনক প্রশ্ন হতে পারে, তবে কি অনুমান করা ঠিক হবে যে ইনপুটটির পিছনে স্থান থাকবে?
ডিজেএমসিএমহেম

আপনি জিজ্ঞাসা কেন কৌতূহল, তবে হ্যাঁ, নিশ্চিত ...
স্টিভি গ্রিফিন

উত্তর:


13

ভি , 26 বাইট

jòdf kÄ/-
DÓÓ
ÒC1@"Gòdk

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

এটি একটি খুব আশ্চর্যজনক এবং হ্যাকি সমাধান, কারণ ভি সংখ্যার কোনও ধারণা নেই little ইনপুট এই বিন্যাসে আসে:

6 8 4 1 2 5 3 100 
5 3 4 1 

প্রতিটি লাইনে একটি পিছনের স্থান সহ With

Hexdump:

00000000: 6af2 6466 206b c42f 122d 0a44 d3d3 0ad2  j.df k./.-.D....
00000010: 0143 311b 4022 47f2 646b                 .C1.@"G.dk

ব্যাখ্যা:

j                   " Move down one line (to N) (1)
 ò                  " Recursively:
  df                "   (d)elete until you (f)ind a space. This will be saved into
                    "   register '-' (2)
     k              "   Move up one line (to M)
      Ä             "   Duplicate line M (3)
       /<C-r>-      "   Move the cursor forward until the next occurence of register '-' 
                    "   (the number we deleted from N)
                    "   (4)
D                   "   Delete every character *after* the cursor (5)
 ÓÓ                 "   Remove everything on this line except for whitespace
Ò<C-a>              "   Replace every character on this line with `<C-a>`, which is the 
                    "   command for incrementing a number (6)
      C             "   Delete this line into register '"', and enter insert mode
       1<esc>       "   Enter a '1' and return to normal mode
             @"     "   Run register '"' as V code (7)
               G    "   Go to the last line (1)
                ò   " End recursion
                 dk " Delete the last two lines (m and n)

এটি যদি এটি আরও পরিষ্কার করে না তোলে, লুপটি যে বিভিন্ন পর্যায়ে চলেছে তার জন্য এখানে বাফারের উদাহরণ রয়েছে:

মঞ্চ 1 ( |কর্সার)

6 8 4 1 2 5 3 100
|5 3 4 1

ধাপ ২:

6 8 4 1 2 5 3 100
|3 4 1

পর্যায় 3:

|6 8 4 1 2 5 3 100
6 8 4 1 2 5 3 100
3 4 1

পর্যায় 4:

6 8 4 1 2 |5 3 100
6 8 4 1 2 5 3 100
3 4 1

মঞ্চ 5:

6 8 4 1 2 |
6 8 4 1 2 5 3 100
3 4 1

পর্যায় 6:

|<C-a><C-a><C-a><C-a><C-a>
6 8 4 1 2 5 3 100
3 4 1

মঞ্চ 7:

|6
6 8 4 1 2 5 3 100
3 4 1

প্রথম পর্যায়ে ফিরে যান:

6
6 8 4 1 2 5 3 100
|3 4 1


8

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

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

দ্রষ্টব্য: ফাংশনটি স্কেলারগুলিকে তার বাম আর্গুমেন্ট হিসাবে গ্রহণ করে না , সুতরাং এটির মতো বাম যুক্তি 54দেওয়ার জন্য আপনাকে এটির ,মতো ব্যবহার করে এটি অ্যারে তৈরি করতে হবে (,54)


7

গণিত, 25 বাইট

#&@@@PositionIndex@#/@#2&

দুটি ইনপুট নেয় mএবং n, এবং nইন -এর 1-ভিত্তিক সূচকগুলি প্রদান করে m


6

রেটিনা , 32 31 30 বাইট

ক্রিটিকি লিথোসকে 1 বাইট এবং মার্টিন ইন্ডারকে 1 বাইট ধন্যবাদ রক্ষা করা হয়েছে

(\d+)(?=.*¶(\d+ )*\1 )
$#2
G1`

0-ইনডেক্সিং ব্যবহার করে। ইনপুট প্রতিটি লাইনে একটি পিছনে স্থান আছে।

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

ব্যাখ্যা

(\d+)(?=.*¶(\d+ )*\1 )
$#2

এখানে আমরা প্রথম লাইনে প্রতিটি সংখ্যা দ্বিতীয় লাইনে একই সংখ্যার আগে সংখ্যা সংখ্যা দ্বারা প্রতিস্থাপন করব।

G1`

তারপরে, আমরা দ্বিতীয় লাইনটি মুছব, কেবলমাত্র প্রথম প্রথম লাইনটিকে আউটপুট হিসাবে রেখে।



5

সি #, 32 বাইট

(n,m)=>n.Select(i=>m.IndexOf(i))

এটি ল্যাম্বডা এক্সপ্রেশন হিসাবে কোড, তাই এটি বৈধ হওয়া উচিত।

সমাধানটি 0 ভিত্তিক সূচক সহ। আমি মনে করি এটি কীভাবে কাজ করে তা বেশ সোজা হয়ে যায় - এটি কেবল এন এর আইটেম নেয় এবং এম এর আইটেমের সূচকগুলি নির্বাচন করে।




3

কে, ঘ

এটি একটি অন্তর্নির্মিত অপারেটর kএবং শূন্য-ভিত্তিক সূচক ব্যবহার করে।

?

উদাহরণ:

k)6 8 4 1 2 5 3 100 ? 5 3 4 1
5 6 2 3



2

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

বাক্য বিন্যাসে অ্যারে নেয় (n)(m)। 0-ইন্ডেক্স।

let f =

n=>m=>n.map(v=>m.indexOf(v))

console.log(JSON.stringify(f([5,3,4,1])([6,8,4,1,2,5,3,100])))
console.log(JSON.stringify(f([5,3,4,9,7,5,7])([3,4,5,7,9])))
console.log(JSON.stringify(f([1,2,3,4,5,6])([1,2,3,4,5,6])))
console.log(JSON.stringify(f([16,27,18,12,6,26,11,24,26,20,2,8,7,12,5,22,22,2,17,4])([15,18,11,16,14,20,37,38,6,36,8,32,21,2,31,22,33,4,1,35,3,25,9,30,26,39,5,23,29,10,13,12,7,19,24,17,34,27,40,28])))
console.log(JSON.stringify(f([54])([54])))



2

জাপট , 4 বাইট

m!bV

এটি অনলাইন পরীক্ষা!

ব্যাখ্যা

এখানে ব্যাখ্যা করার মতো অনেক কিছুই নেই তবে এটি জাপটের একটি আকর্ষণীয় বৈশিষ্ট্য দেখায়। সাধারণত, আপনি এখানে একটি ফাংশন পাস হবে m:

mX{VbX}

এটি মূলত U.map(X => V.indexOf(X))( Uঅন্তর্নিহিত)। যাইহোক, যখন আপনি কেবল দুটি মান ( bএখানে, চালু Vএবং X) এর মধ্যে একটি অপারেশন করছেন , আপনি কেবল অপারেটরটিকে এবং অন্য মানটি দিতে পারেন এবং জাপট এটির বাইরে একটি ফাংশন তৈরি করবে। এর অর্থ mX{X+2}গল্ফ করা যেতে পারে m+2

তবে মানগুলি যখন ভুল ক্রমে থাকে তখন এটি কার্যকর হয় না (এর mbVজন্য সংক্ষিপ্ত হবে mX{XbV})। এটি পেতে, আপনি অপারেটরের কাছে একটি বিস্ময়বোধক চিহ্ন প্রচার করতে পারেন, যা জাপটকে অপারেশনগুলি অদলবদল করতে বলে। এটির জন্য অতিরিক্ত বাইট খরচ হয় তবে এটি বিকল্পের তুলনায় এখনও কয়েক বাইট কম। এবং এখন আপনি জাপট সম্পর্কে আরও কিছু জানেন।


2

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

&m

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

ব্যাখ্যা

মেটা-ফাংশনটি &নির্দেশ করে যে পরবর্তী ফাংশনটি (আউট-নির্দিষ্টকরণের ক্ষেত্রে / ফাংশন-নির্দিষ্ট) গৌণ ডিফল্ট ব্যবহার করবে। ফাংশন m( ismember) এর জন্য, এটি &নির্দিষ্ট করে যে এর দ্বিতীয় আউটপুট উত্পাদিত হবে। এটিতে দ্বিতীয় ইনপুটটিতে প্রথম ইনপুটটির প্রতিটি প্রবেশের সূচক (প্রথম ঘটনা) রয়েছে।


2

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

n#m=[i|a<-n,(i,e)<-zip[1..]m,e==a]

ব্যবহারের উদাহরণ: [5,3,4,9,7,5,7] # [3,4,5,7,9]->[3,1,2,5,4,3,4]

অন্তর্নির্মিত elemIndexরয়েছে Data.Listএবং তাই উপরের সংস্করণটির চেয়ে দীর্ঘ। বাইরের লুপ মাধ্যমে যায় nএবং জোড়া মাধ্যমে ভেতরের লুপ (i,e)যেখানে iএর সূচক eমধ্যে m। বর্তমান উপাদানের সমান iযেখানে রাখুন ।en


2

আর, 20 5 বাইট

1-ইন্ডেক্স; matchএটি অন্তর্নির্মিত ফাংশন যা প্রথমগুলির উপাদানগুলির দ্বিতীয় ইনপুটটিতে সূচকগুলি খুঁজে পায়, অর্থাত, match(n,m)পছন্দসই উত্তর দেয়

match

@ ফ্লোডেলকে একটি ফাংশন ফিরিয়ে দেওয়া উত্তর হিসাবে পুরোপুরি গ্রহণযোগ্য বলে উল্লেখ করার জন্য ধন্যবাদ!

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


2
আমি মনে করি match(5 বাইট) একা গ্রহণযোগ্য সমাধান হবে।
ফ্লোডেল

আপনি সঠিক, আপডেট হয়েছে।
জিউস্পে




1

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

a*b=[[fst x|x<-zip[0..]b,y==snd x]!!0|y<-a]
a*b=                                         -- define function * with 2 args
    [                                |y<-a]  -- for each elt in first arg
               zip[0..]b                     -- match elts in second arg w/ idxs
                                             -- [a,b,c] -> [[0,a],[1,b],[2,c]]
     [fst x|x<-                  ]           -- take first element in each pair
                        ,y==snd x            -- if the index matches
                                  !!0        -- first element (always only 1)

1

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

#(map(zipmap %2(range))%)

0-ইন্ডেক্স।


1

পার্ল 5, 38 34 বাইট

4 বাইট সংরক্ষণ দাদাকে ধন্যবাদ

sub{map$x{$_}//($x{$_}=++$x)x0,@_}

1-ইন্ডেক্স। তালিকাগুলি মি এবং এনকে একক তালিকা হিসাবে নেয় f(@m,@n)x0শুধু দিয়ে শুরু থেকে আউটপুট রাখা 1,2,3,4,5ইত্যাদি


চমৎকার উত্তর. নোট করুন যে বেনামে ফাংশন অনুমোদিত, তাই sub{...}আপনাকে 2 বাইট সংরক্ষণ করতে পারে। এছাড়াও, আপনি আরও দুটি বাইট সংরক্ষণ করার x0পরিবর্তে ব্যবহার করতে পারেন &&()
দাদা

1

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

অনলাইন সংস্করণ

0 সূচীকরণ

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

<?foreach($_GET[0]as$v)echo" ".array_flip($_GET[1])[$v];

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

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

<?foreach($_GET[0]as$v)$r[]=array_flip($_GET[1])[$v];print_r($r);

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

সঙ্গে workaround array_map

<?print_r(array_map(function($v){return array_flip($_GET[1])[$v];},$_GET[0]));

অনন্য অ্যারে সঙ্গে প্রতিস্থাপন না array_flip($_GET[1])[$v] array_search($v,$_GET[1])



0

জাভা 7, 80 বাইট

void c(int[]a,java.util.List b){for(int i=0;i<a.length;a[i]=b.indexOf(a[i++]));}

0-ইন্ডেক্স

ব্যাখ্যা:

void c(int[]a,java.util.List b){  // Method with integer-array and List parameters
  for(int i=0;i<a.length;         //  Loop over the integer-array
    a[i]=b.indexOf(a[i++])        //   And change every value to the index of the List
  );                              //  End of loop (no body)
}                                 // End of method

পরীক্ষার কোড:

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

import java.util.Arrays;
class M{
  static void c(int[]a,java.util.List b){for(int i=0;i<a.length;a[i]=b.indexOf(a[i++]));}

  public static void main(String[] a){
    int[] x = new int[]{ 5, 3, 4, 1 };
    c(x, Arrays.asList(6, 8, 4, 1, 2, 5, 3, 100));
    System.out.println(Arrays.toString(x));

    x = new int[]{ 5, 3, 4, 9, 7, 5, 7 };
    c(x, Arrays.asList(3, 4, 5, 7, 9));
    System.out.println(Arrays.toString(x));

    x = new int[]{ 1, 2, 3, 4, 5, 6 };
    c(x, Arrays.asList(1, 2, 3, 4, 5, 6));
    System.out.println(Arrays.toString(x));


    x = new int[]{ 16, 27, 18, 12, 6, 26, 11, 24, 26, 20, 2, 8, 7, 12, 5, 22, 22, 2, 17, 4 };
    c(x, Arrays.asList(15, 18, 11, 16, 14, 20, 37, 38, 6, 36, 8, 32, 21, 2, 31, 22, 33, 4, 1, 35, 3, 25, 9, 30, 26, 39, 5, 23, 29, 10, 13, 12, 7, 19, 24, 17, 34, 27, 40, 28));
    System.out.println(Arrays.toString(x));


    x = new int[]{ 54 };
    c(x, Arrays.asList(54));
    System.out.println(Arrays.toString(x));
  }
}

আউটপুট:

[5, 6, 2, 3]
[2, 0, 1, 4, 3, 2, 3]
[0, 1, 2, 3, 4, 5]
[3, 37, 1, 31, 8, 24, 2, 34, 24, 5, 13, 10, 32, 31, 26, 15, 15, 13, 35, 17]
[0]
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.