ওল্ড কর্ডলেস ফোন


9

আমাকে আমার বন্ধুদের কল করতে হবে তবে আমার কর্ডলেস ফোনের বোতামগুলি সঠিকভাবে কাজ করছে না। আমি যে বোতাম টিপতে পারি তা হ'ল [আপ], [ডাউন] এবং [কল]। [আপ] এবং [ডাউন] আমার সাম্প্রতিক কলগুলিতে নেভিগেট করতে ব্যবহার করা যেতে পারে এবং নির্বাচিত নামটি কল করার জন্য [কল] ব্যবহার করা যেতে পারে। আমার ফোনে একটি তালিকা রয়েছে যা Nসাম্প্রতিক কলগুলি ধরে রেখেছে এবং আমি জানি যে আমার যে সমস্ত বন্ধুরা কল করতে হবে তারা এই তালিকায় রয়েছে।


টাস্ক:

আপনি একটি নম্বর Nএবং নামের একটি তালিকা পাবেন L:

  • N আমার ফোনটি স্মরণ করতে পারে এমন সাম্প্রতিক কলগুলির সংখ্যা কি;
  • L আমার কল করার প্রয়োজন অনুসারে নাম রয়েছে।

সাম্প্রতিক কল তালিকার একটি অনুকূল ব্যবস্থা করতে আমার যে বোতাম টিপতে হবে তা আপনাকে আউটপুট করতে হবে।


উদাহরণ:

-> ইনপুট:

আন্না, বব এবং তারপরে আবার আন্নাকে ডাকছে। আকারের সাম্প্রতিক কলগুলির তালিকা সহ।

5
Anna
Bob
Anna

-> আউটপুট:

সম্ভাব্য সর্বোত্তম ব্যবস্থা: Anna, Foo, Bar, Foobar, Bob

5    # Key presses: [Call] Anna, [Up] + [Call] Bob, [Down] + [Call] Anna

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

Input: 5, Anna, Bob, Carl
Output: 5

Input: 5, Anna, Bob, Carl, Anna
Output: 8

Input: 5, A, B, C, D, E, A
Output: 11

Input: 6, A, B, C, D, E, A
Output: 12

Input: 4, A, B, C, B, A
Output: 10

নিয়মাবলী:

  • আপনার কার্সার সর্বদা তালিকার প্রথম অবস্থানে শুরু হবে;
  • আপনি ইনপুট নিতে পারেন Nএবং Lকোন উৎস থেকে: কীবোর্ড, পরামিতি, ফাইল, ইত্যাদি;
  • তালিকার নামগুলি যেকোন যুক্তিসঙ্গত ফর্ম্যাটে হতে পারে যেমন: স্ট্রিংস, পূর্ণসংখ্যা, অক্ষর;
  • আপনি যখন সাম্প্রতিক কল তালিকার শেষে পৌঁছেছেন এবং আবার [ডাউন] টিপেন তখন আপনার কার্সারটি প্রায় জড়িয়ে যায়। আপনি যখন সাম্প্রতিক কল তালিকা এবং টিপস [আপ] এর সূচনা করছেন তখন একই ঘটনা ঘটে;
  • আপনি যখন কাউকে কল করবেন তখন সেই ব্যক্তির নাম সাম্প্রতিক কল তালিকার প্রথম অবস্থানে স্থানান্তরিত হবে এবং বাকী অংশটি নীচে নামিয়ে দেওয়া হবে;
  • আপনি যখন কাউকে কল করবেন তখন আপনার কার্সারটি প্রথম অবস্থানে চলে যাবে;
  • বন্ধুর নাম সাম্প্রতিক কল তালিকায় একাধিকবার উপস্থিত হতে পারে না;
  • আপনি ডামি এন্ট্রি সহ আপনার সাম্প্রতিক কলগুলির তালিকা পূরণ করতে পারেন (উদাহরণ দেখুন);
  • কল করার বন্ধুদের সংখ্যা এর চেয়ে বেশি হবে না N

উত্তর:


1

রুবি , 97 95 94 বাইট

->n,a{r=a.size;1.upto(r-1){|i|r+=[p=a[(a[0,i].rindex(a[i])||i-2)+1...i].uniq.size,n-p].min};r}

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

একটি অনুকূল বিন্যাসে, প্রথম নামটি একটি প্রেস নেবে ( Call)। যে নামগুলি এখনও বলা হয় নি সেগুলি দুটি টিপুন ( Up Call) নেবে এবং যে নামগুলি পরে অন্য কতগুলি অনন্য নাম আহ্বান করা হয়েছে তার উপর নির্ভর করে বিভিন্ন নম্বর নিয়েছে এবং সেগুলি তালিকার শীর্ষে বা তালিকার নীচে অবস্থিত কিনা।

আমি মনে করি এটি ওয়াফলকোহনের মতো বা অনুরূপ কৌশল।


3

পাইথন 3 , 195 185 164 বাইট

@ নোতাজাগানকে -4 বাইট ধন্যবাদ_২০
বাইট @ ফিলিপনার্ডিবাটিস্টাকে ধন্যবাদ

lambda n,l:min(g([*x],l,n)for x in permutations(range(n)))
def g(x,l,n,r=0):
 for p in l:a=x.index(p);x=[x.pop(a)]+x;r-=~min(a,n-a)
 return r
from itertools import*

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

L থেকে পূর্ণসংখ্যার একটি তালিকা হিসাবে নেওয়া হয় [0, N)



এই @notjagan যেমন কাজ করছে না x=[x[a]]+x[:a]+x[a+1:]নির্ধারণ xএকটি নতুন তালিকা বস্তু। iএখনও indexপুরাতন তালিকার অবজেক্টে পদ্ধতিটি থাকবে
ওভস

ফিলিপের পরামর্শ এবং আমার ব্যতীত অন্যগুলি ব্যবহার করে @ ওভস -১০ বাইটসx.index
notjagan


@FelipeNardiBatista অনেক ধন্যবাদ
ovs

1

জাভাস্ক্রিপ্ট (স্পাইডারমনকি) , 213 143 বাইট

(N,L)=>L.reduce((t,v,i)=>{x=0,a=[v]
for(j=i;j-->=0&!~a.indexOf(L[j]);x++)a+=L[j]+","
return i?t+((x=L.indexOf(v)-i?x:1)<N-x?x:N-x):t},L.length)

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

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

প্রজন্মকে এড়িয়ে গেল এবং সুনির্দিষ্ট বিন্যাসে প্রতিটি নাম নেওয়ার জন্য কতগুলি কী কী টিপতে হবে তা কেবল গণনা করা হয়েছে

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