কিউরেটারের দ্বিধা


9

ভূমিকা

আপনি একটি আর্ট মিউজিয়ামের একজন কিউরেটারের বন্ধু, যিনি চার শিল্পীর কাছ থেকে আধুনিক শিল্প পাওয়ার সাম্প্রতিক আনন্দ পেয়েছেন ( যার মধ্যে কিছুতে কিউরেটরকে শৈলীর শূন্য টুকরা, তরুণ পাগল দিতে পারে )। যেহেতু এটি আধুনিক শিল্প, প্রদত্ত কোনও শিল্পীর টুকরোগুলির সমস্ত দেখতে একই রকম। এই টুকরোটি কোন অর্ডারে রাখবে তা সিদ্ধান্ত নিতে সহায়তা করার জন্য আপনার বন্ধু একটি কম্পিউটার ব্যবহার করতে চান।

প্রোগ্রাম প্রয়োজনীয়তা

আপনার প্রোগ্রামে অবশ্যই পাঁচটি পূর্ণসংখ্যা গ্রহণ করতে হবে (কোনও ফাংশনে উত্তীর্ণ হয়েছে বা স্ট্ডিনের মাধ্যমে আউটপুট করা হয়েছে (বা অন্য কোনওভাবে))। প্রথম চারটি চারটি শিল্পীর প্রত্যেকটির সরবরাহ করা পেইন্টিংয়ের সংখ্যা। শেষ মান হ'ল একটি অনুক্রম সূচক i(1 থেকে গণনা 0 নয়)। কিউরেটর iচিত্রকোষের ডিক্সিকোগ্রাফিক ক্রমের মাধ্যমে তম অনুচ্ছেদটি দেখতে চান ।

আপনার প্রোগ্রামটি অবশ্যই কোনও যুক্তিসঙ্গত ফর্ম্যাটে এই অনুমতিটি আউটপুট দিতে হবে: যেমন abbccdবা [0 1 1 2 2 3]। মোট দশটি কম পেইন্টিংয়ের ইনপুটটির রানটাইমটি অবশ্যই এক ঘন্টারও কম সময় নিতে হবে (এটি আশা করি কোনও সমস্যা হওয়া উচিত নয়)।

অনুমতি ছাড়াই কাজ করার জন্য আপনাকে কোনও অন্তর্নির্মিত ফাংশন ব্যবহার করার অনুমতি নেই

উদাহরণ

ইনপুট: 0 1 2 0 2

আমাদের দেওয়া হয়েছে যে শিল্পী বি দ্বারা একটি চিত্রশিল্পী এবং দুটি শিল্পী সি দ্বারা (এবং তারা সকলেই একরকম দেখায়), অভিধানিক ক্রমে ক্রমবিন্যাসটি হ'ল:

[ 'BCC', ' সিবিসি ', 'CCB']

হাইলাইটেড ক্রমটিশনটি সঠিক আউটপুট হবে, কারণ এটি অভিধানিক ক্রমে দ্বিতীয়।

ইনপুট: 1 2 0 1 5

['abdd', 'abdb', 'adbb', 'babd', 'Badb', 'bbb', ' bbda ', 'bbab', 'bdba', 'dabb', 'dbab', 'dbba']

পরীক্ষামূলক

এখানে কিছু পরীক্ষা দেওয়া উচিত যা সঠিক হওয়া উচিত।

1 2 4 1 5    - ABBDCCCC
2 2 3 1 86   - ABBCACDC
4 1 2 0 24   - AACACBA
1 4 3 2 65   - ABBCBBDCDC

পাইথন 3-এ একটি সংক্ষিপ্ত কোডের কোড যা এলোমেলোভাবে ইনপুট এবং আউটপুট উত্পন্ন করতে পারে তা এখানে উপলব্ধ (প্রবেশের জন্য বৈধ নয়, এটি পাইথনের পাইথন আমদানি ব্যবহার করে):

from itertools import permutations
from random import randint
a,b,c,d,n = randint(1,2),randint(1,2),randint(1,3),randint(1,3),randint(1,15)
print(str(a) + " " + str(b) + " " + str(c) + " " + str(d) + " " + str(n) + " - " + str(sorted(set([''.join(p) for p in permutations(a * "a" + b * "b" + c * "c" + d * "d")]))[n-1]))

স্কোরবোর্ড

Optimizer - CJam       - 39  - Confirmed - Bruteforce
EDC65     - JavaScript - 120 - Confirmed - Bruteforce
Jakube    - Python2    - 175 - Confirmed - Algorithmic

1
আপনি বলছেন, "সমস্ত টুকরো একই রকম দেখতে"। আপনার অর্থ কি "প্রদত্ত শিল্পীর সমস্ত টুকরোগুলি একই রকম, তবে বিভিন্ন শিল্পীর টুকরোগুলি অন্যরকম লাগে"?
ডেভিডসি

এটি বৈধ এন্ট্রি হবে না তবে আমি মনে করি এটি কারওর জন্য এখনও কার্যকর হতে পারে: {:A.a.{~97+[:I.}:বৈধ জে এবং কাজ করে তবে A.বেশিরভাগ কাজের জন্য ব্যবহার করে , সুতরাং এটি বৈধ নয়। আপনি যদি একটি ফাংশন লিখতে পারেন যা প্রতিস্থাপন A.করতে এবং এই ফাংশনটিতে এটি অন্তর্ভুক্ত করতে পারে তবে আপনার একটি বৈধ উত্তর হবে।
Januʎs

@ --uʎs - আপনাকে "এবিসিডি" ব্যবহার করতে হবে না, আপনি কোনও চরিত্র / সংখ্যাসূচক / প্রতীকী সিস্টেমটি ব্যবহার করতে পারেন। আমি আশঙ্কা করছি আমি জে জানি না, এবং তাই সঠিক সমস্যাটি বলতে পারব না, তবে আশা করি এটি সাহায্য করবে =)
আলেকজান্ডার

@ পোপি গিলবার্ট ওয়েল, এমন একটি সংস্করণ যা কেবলমাত্র সংখ্যাগুলি ছড়িয়ে দেয় {:A.[:I.}:... জিনিসটি হ'ল, তবে আমি এখনও মনে করি A.না এটি কার্যকর হবে: jsoftware.com/help/d অভিধান
ʎuʎs

প্রয়োজনীয় অনুমানের উপস্থিতি না থাকলে কী হবে? 1 0 0 0 100?
edc65

উত্তর:


5

পাইথন 2: 175 163 অক্ষর

এটি কোনও গুরুতর গল্ফ উত্তর নয়। ভিন্ন অ্যালগরিদম দিয়ে আমি 138 বাইটে পৌঁছেছি। কেবল এখানে এটি পোস্ট করতে চেয়েছিলেন, কারণ এটি নিষ্ঠুর শক্তি ব্যবহার করে না। জটিলতা হ'ল থিতা (# চিত্র)।

f=lambda x:0**x or x*f(x-1)
def g(Q,n):
 while sum(Q):
  for j in 0,1,2,3:
   p=f(sum(Q)-1)*Q[j]
   for k in Q:p/=f(k)
   if p<n:n-=p
   else:print j;Q[j]-=1;break

ব্যবহার:

g([1, 4, 3, 2], 65)

সম্পাদনা:

একই অ্যালগরিদম, কেবল কিছু গল্ফিং: গৌণ পদ্ধতিটি এবং গণনার ক্রমে সামান্য পরিবর্তন আমদানি করবেন না।

পাইথ অনুবাদ: 61 টি অক্ষর

Lu*GhHUb1WsPQV4J*@QNytsPQFZPQ=J/JyZ)I<JeQ XQ4-eQJ)EN XQNt@QNB

এখানে বিশেষ কিছু নয়, আমার অজগর কোডটির সঠিক অনুবাদ। যদিও অনেক দীর্ঘ। আমি খুব কুরুচিপূর্ণ (দীর্ঘ) জিনিস ব্যবহার করেছি। প্রথম 9 অক্ষরটি এককভাবে বর্ণনাকারীর সংজ্ঞা।

Lu*GhHUb1    def y(b): G=1; for H in range(b): G*= H+1; return G

এছাড়াও স্টাফ যেমন Q[j]-=1দীর্ঘ দীর্ঘ: XQNt@QN(পাইথনের চেয়ে 1 অক্ষর বেশি !!!)

ব্যবহার:

এটি এখানে চেষ্টা করুন: পাইথ কম্পাইলার / নির্বাহক । ডিবাগ মোড অক্ষম করুন এবং [2, 2, 3, 1, 86]ইনপুট হিসাবে ব্যবহার করুন।


এটি কাজ করে! প্রথম পাইথন সমাধান নিয়ে অভিনন্দন! যাইহোক, আমি খুঁজে পেয়েছি যে আমার পরিবেশে আমাকে from math import*ফাংশনের বাইরে চলে যেতে হবে। আপনাকে লিডারবোর্ডে যুক্ত করছে!
আলেকজান্ডার ক্রেগস 5'15

বাহ ... আপনার সমাধানটি অবিশ্বাস্যভাবে দক্ষ - 32 চিত্রগুলির জন্য এটি কেবল 0.034 সেকেন্ড সময় নেয় o.০।
আলেকজান্ডার ক্রেগস

3

সিজেম, 50 43 39 বাইট

q~(])\{W):Wa*}%s:X{Xm*:s_&}X,(*{$X=},$=

এটি অনেক গল্ফ করা যেতে পারে।

নিম্নলিখিত বিন্যাসে STDIN থেকে ইনপুট নেয়:

4 1 2 0 24

পেইন্টিং আউটপুট। উপরের ইনপুট জন্য উদাহরণস্বরূপ:

0020210

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

মনে রাখবেন যে অনলাইন সংকলক বৃহত্তর পেইন্টিং আকারের জন্য ছেড়ে দেয়। আপনাকে জাভা সংস্করণে আরও বড় ইনপুট চেষ্টা করতে হবে


প্রথম সলভার হওয়ার জন্য অভিনন্দন! 50 বাইট অবশ্যই বীট একটি হার্ড মান। আমি আপনাকে লিডারবোর্ডের শীর্ষ হিসাবে যুক্ত করব!
আলেকজান্ডার ক্রেগস

@ পোপি গিলবার্ট উত্তর গ্রহণের আগে আপনার কমপক্ষে 1 সপ্তাহ বা তার বেশি অপেক্ষা করা উচিত
অপটিমাইজার

আহ, ঠিক আছে, আমি খুব দুঃখিত! আমার পূর্ববর্তী চ্যালেঞ্জের মধ্যে আমি যখন কেউ মারধর করে তখন আমি স্বীকৃত উত্তরটি পরিবর্তন করেছি। আমার খারাপ।
আলেকজান্ডার ক্রেগস

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

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

3

জাভাস্ক্রিপ্ট (ES6) 120 138 147

প্রয়োজনীয় পাঁচটি পরামিতি সহ একটি ফাংশন হিসাবে, কনসোলের মাধ্যমে আউটপুট।
প্রতীক 0,1,2,3 ব্যবহার করে। আমি প্রতীকগুলির মোট গণনা করি, তারপরে প্রতিটি বেস 4 সংখ্যাটি প্রয়োজনীয় সংখ্যার সাথে তৈরি করে চেক করি। কোনও অঙ্কের ভুল সংখ্যার নম্বরগুলি বাতিল করা হয়।
দ্রষ্টব্য: জাভাস্ক্রিপ্ট 32 বিট সংখ্যার সাথে এটি 15 টি চিত্রের কাজ করে।

সংক্ষিপ্ত সম্পাদনা করুন (.TString এড়ানো) এবং দ্রুততর উপায় (পরিবর্তিত প্রস্থান শর্ত)। 1 সেকেন্ডের নীচে প্রতিটি পরীক্ষার জন্য সময়।

সম্পাদনা 2 কোনও অ্যালগরিদম পরিবর্তন নেই, আরও গল্ফ করেছে (পঠনযোগ্যতার জন্য ইনডেন্টেশন যুক্ত হয়েছে)

F=(w,x,y,z,n)=>{
  for(a=0;n;n-=l=='0,0,0,0')
    for(l=[w,x,y,z],t=w+x+y+z,v='',b=a++;t--;b/=4)--l[d=b&3],v=d+v;
  console.log(v)
}

অবহেলিত এবং কোনও ফায়ারফক্সের প্রয়োজন নেই

F=function(w,x,y,z,n) {
  for(a=0; n; a++) // exit when solution found (if wrong parameters, run forever)
  {
    l=[w,x,y,z]; // required number of each symbol
    t=w+x+y+z; // total of digits
    v=''; // init output string
    for(b=a;
      t--; // digit count down
      b >>= 2) // shift for next digit
    {
        d = b & 3; //get digit
        --l[d]; // decrement for the current digit
        v = d + v; // add to output string         
    }
    l[0]|l[1]|l[2]|l[3] // if digits ok
    ||--n // decrement counter
  }
  console.log(v) // when found, exit for and print the answer
}

টেস্ট ইন Firebug / ফায়ারফক্স কনসোল

F(1, 2, 4, 1, 5) 
F(2, 2, 3, 1, 86)
F(4, 1, 2, 0, 24)
F(1, 4, 3, 2, 65)

আউটপুট

01132222
01120232
0020210
0112113232

হ্যালো! এটি চালাতে কিছুটা সমস্যা হচ্ছে। এটি ফায়ারফক্স ডাউনলোড করে দিচ্ছি কিনা তা সাহায্য করবে কিনা তা দেখার জন্য। আমি আপনাকে লিডারবোর্ডে যুক্ত করব!
আলেকজান্ডার

আমি বরং একটি সুন্দর টেবিল পাওয়া এখানে - আমি অনুমান করব ফায়ারফক্স প্রয়োজন। পরীক্ষিত এবং এটি কাজ করে! লিডারবোর্ডে নিশ্চিত হয়ে গেছে।
আলেকজান্ডার

লিডারবোর্ড তবে কোনও উঁচুতে নেই ... আপনি সত্যিই এটি পছন্দ করেন না! :(
edc65

AGH! আমি খুব দুঃখিত = (এটি এখন upvated =)
আলেকজান্ডার

আমি ভাবছি সিজেমে এই অ্যালগরিদমটি কত দিন থাকবে। তবে এখন পর্যন্ত আমার কী ধারণা নেই যে এটি কীভাবে কাজ করে: পি
অপটিমাইজার 21

2

পাইথ , 20

@fqPQm/TdU4^U4sPQteQ

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

ইনপুট পাইথন তালিকার ফর্মে রয়েছে, যেমন [1, 2, 4, 1, 5]

আউটপুট পাইথন তালিকার ফর্মটিতেও রয়েছে, যেমন [0, 1, 1, 3, 2, 2, 2, 2]উপরের ইনপুটটির জন্য।

সমাধানটি হিংস্র শক্তি, এবং আমার মেশিনে প্রায় 10 সেকেন্ড সময় লাগে, সবচেয়ে খারাপ পরিস্থিতি।

কিভাবে এটা কাজ করে:

@fqPQm/TdU4^U4sPQteQ
           ^U4sPQ         All permutations of [0, 1, 2, 3] with length equal to the number
                          of paintings.
     m/TdU4               Find the count (/) of paintings by painter in the input list.
 fqPQ                     Filter the permutations on the counts being the desired counts
                          in the input.
                          This gives all possible orderings of the paintings.
@                teQ      Index into this list at the given location - 1. (0-indexing)
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.