অর্ডারড বাছাই করা অ্যারেতে অর্ডার সাজান


14

পিপিসি ইনকসে আপনার প্রথম দিনটিতে স্বাগতম our এটি খুব সহজ একটি বানর এটি করতে পারে। ঠিক আছে, রূপকভাবে বলতে গেলে, আমরা এটি করার জন্য কোনও বানরকে ভাড়া করেছি। কি অনুমান? দেখা যাচ্ছে বানরদের আমাদের বর্ণমালা বোঝার অভাব আছে। যাইহোক, এখনই জগাখিচুড়ি ঠিক করার সময় নেই, তাই পরিস্থিতিটিকে আরও খারাপ না করার চেষ্টা করুন, ঠিক আছে? তারপর এটি পেতে! আপনি যদি ক্ষুধার্ত হন তবে ওয়াটার কুলার দিয়ে কলা রয়েছে। শুভকামনা!

কাজের বিবরণী

ইনপুট

  • আপনি স্ট্রিংগুলির একটি তালিকা (সংরক্ষণাগার) এবং একটি স্ট্রিং পাবেন যা সেই তালিকায় যুক্ত করতে হবে (দস্তাবেজ)
  • সমস্ত স্ট্রিংয়ে কেবল বড় হাতের অক্ষর, ছোট হাতের অক্ষর এবং স্পেস থাকবে
  • স্ট্রিংগুলি সর্বদা শুরু হয় এবং একটি চিঠি দিয়ে শেষ হয়

কার্য

দস্তাবেজের লক্ষ্য অবস্থান নির্ধারণ করুন: সংরক্ষণাগারে এটির অবস্থানটি গ্রহণ করা উচিত receive লক্ষ্য অবস্থানটি নিম্নলিখিত হিসাবে নির্ধারণ করা যেতে পারে:

  • প্রতিটি পদের জন্য:
    • নথির আগে বর্ণানুক্রমিকভাবে অবস্থানের পূর্বে সংরক্ষণাগারটিতে স্ট্রিংয়ের পরিমাণ গণনা করুন
    • নথির পরে বর্ণানুক্রমিকভাবে অবস্থানের পরে সংরক্ষণাগারটিতে স্ট্রিংয়ের পরিমাণ গণনা করুন
    • উপরের দুটি গনের যোগফল হিসাবে পজিশনের স্কোরকে সংজ্ঞায়িত করুন
  • নথির টার্গেটের অবস্থানটি সর্বোচ্চ স্কোরের অবস্থান position
  • টাই করার ক্ষেত্রে, সর্বোচ্চ স্কোর সহ সমস্ত অবস্থান লক্ষ্য অবস্থান হিসাবে সমানভাবে বৈধ। শুধুমাত্র একটি নির্বাচন করা প্রয়োজন।

বাছাই করার সময়:

  • বড় হাতের অক্ষর এবং ছোট হাতের অক্ষর সমান
  • অক্ষরের আগে স্পেস আসে

আউটপুট

  • দস্তাবেজ সহ সংরক্ষণাগারটি এটি কোনও রূপে যুক্ত হয়েছে

অথবা

  • 0-ভিত্তিক বা 1-ভিত্তিক সূচকগুলিতে নথির লক্ষ্য অবস্থান

কাজ মূল্যায়ন

সবচেয়ে কম বাইট জিতেছে!

উদাহরণ I / O

Archive:
    Applebuck Season
    Friendship is Magic
    The Ticket Master
    Griffon the BrushOff
    Boast Busters
    Bridle Gossip

Document: Dragonshy

Position scores (0-based index):
0: 0 + 3 = 3
1: 1 + 3 = 4
2: 1 + 2 = 3
3: 1 + 1 = 2
4: 1 + 0 = 1
5: 2 + 0 = 2
6: 3 + 0 = 3

Target position: 1

5
পিপিসিজিতে আপনাকে স্বাগতম, এটি একটি সুন্দর প্রথম পোস্টের মতো বলে মনে হচ্ছে! :) যদিও "টাস্ক" বিভাগে আপনার নির্দেশাবলী পড়া এক ধরণের কঠিন। অনুভূমিক স্ক্রোলিং বিরক্তিকর: আমি এর পরিবর্তে বুলেট তালিকা ব্যবহার করার বিষয়টি বিবেচনা করব। আমাদের কাছে একটি সহজ স্যান্ডবক্স রয়েছে যেখানে আপনি চাইলে সম্প্রদায়ে পর্যালোচনা করার জন্য চ্যালেঞ্জগুলি পোস্ট করতে পারেন।
FryAmTheEggman

ড্রাগনশি আমি ঠিক পেয়েছি! খুব সুন্দর :
লুইস মেন্ডো

@Lex আরও একটি বা দুটি পরীক্ষার মামলা করা ভাল হবে
লুইস মেন্ডো

উত্তর:


4

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

(a,d)=>a.map((e,i)=>d[l="toLowerCase"]()<e[l]()?s--:++s>m&&(++m,p=++i),m=s=p=0)|p

Ungolfed:

function position(archive, document) {
    var score = 0;
    var max = 0;
    var pos = 0;
    var i = 0;
    while (i < archive.length) {
        if (archive[i++].toLowerCase() > document.toLowerCase()) {
            score--;
        } else {
            score++;
            if (score > max) {
                max++;
                pos = i;
            }
        }
    }
    return pos;
}

সম্পাদনা: @ ইউজার ৮১1৫৫ এর জন্য প্রচুর বাইট সংরক্ষণ করা হয়েছে।


indexOfমানচিত্রের সময় সেট করা ফলাফলের পরিবর্তনশীলটির সাথে প্রতিস্থাপন করাও ছোট হবে।
ব্যবহারকারী81655

সম্মত, তবে এটি আর আমার সমাধানের মতো মনে হয় না ...
নীল

3

পাইথ, 40 38 বাইট

আমাকে মূলত শিক্ষাদানের জন্য ক্যাটেনকিয়োর কাছে ক্রেডিট । ( এছাড়াও )A xnor BA==BA xor BA!=B

AQJ+],k0.e,rb0hkGteh.Msmq<hdrH0<edeZJJ

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

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

এটি নথির চেয়ে এন্ট্রি ছোট কিনা এবং এন্ট্রির সূচকটি নথির সূচকের চেয়ে ছোট কিনা তা XNOR এর সমষ্টি।

এটি এই সমষ্টিটি সর্বাধিক এমন অবস্থানটি সন্ধান করে, তারপরে এটি আউটপুট করে।


2

পাইথন 3, 135 167 বাইট

def a(b,c):a=[sum(map(lambda x:x.lower()>c.lower(),b[i:]))+sum(map(lambda x:x.lower()<c.lower(),b[:i]))for i in range(0,len(b)+1)];b.insert(a.index(max(a)),c);print(b)

1

রুবি, 97 বাইট

বেনামে ফাংশন, লক্ষ্য অবস্থানটি প্রদান করে।

->a,d{d.upcase!;(0...a.size).max_by{|i|a[0,i].count{|s|s.upcase<d}+a[i..-1].count{|s|s.upcase>d}}}

সংরক্ষণাগারে আসলে 110োকানোর সময় ১১০ বাইট :

->a,d{t=d.upcase;a.insert (0...a.size).max_by{|i|a[0,i].count{|s|s.upcase<d}+a[i..-1].count{|s|s.upcase>d}},d}

1

পাইথ, 54 52 47 45 বাইট

AQVhlG=Ys+m>rH0rd0:G0Nm<rH0rd0gGNI>YZ=ZY=kN;k

প্রত্যাশা ইনপুট একটি তালিকা, প্রথম উপাদানটি স্ট্রিংগুলির একটি তালিকা (সংরক্ষণাগার), দ্বিতীয় উপাদানটি একটি স্ট্রিং (নথি)

AQ                                            # initialize G and H with the archive and the document
  VhlG                                        # iterate over the indexes on archive
      =Ys+                                    # concatenate and sum the following scores
          m>rH0rd0:G0N                        # map a string comparison between the document and the archives up to the index, returning true(1) for lower, and false(0) for higher
                      m<rH0rd0gGN             # same as above, but starts at the index and goes up to the end of the archive, returning false(0) for lower, and true(1) for higher
                                 I>YZ         # Check if score is higher than highest
                                     =ZY      # update highest score
                                        =kN;  # update index
                                            k # print index

পরীক্ষা এখানে

  • ইনপুট সূচনাতে 5 বাইট সংরক্ষণ করা হয়েছে (ধন্যবাদ কেনে লাউ)

জেডটি স্বায়ত্তশাসিত 0যেখানে আমি আপনার কোডটি সঠিকভাবে
পড়লে

["Applebuck Season","Friendship is Magic","The Ticket Master","Griffon the BrushOff","Boast Busters","Bridle Gossip"]\n "Dragonshy"ইনপুট হিসাবে ব্যবহার করা এবং এর Eপরিবর্তে ব্যবহার করা @Q0এবং @Q1আপনাকে চারটি বাইট সংরক্ষণ করতে পারে।
ফাঁস নুন

আপনি AQপরিবর্তে ব্যবহার করতে পারে J@Q0K@Q1
ফাঁস নুন

1

MATL , 32 বাইট

hk4#S4#S%2#0)>t0whYsw~0hPYsP+K#X>

ইনপুট আর্কাইভের জন্য স্ট্রিংগুলির একটি সেল অ্যারে (ফাঁকা দ্বারা পৃথক পৃথক স্ট্রিংগুলি এবং কোঁকড়ানো ধনুর্বন্ধনী বন্ধনীযুক্ত আবদ্ধ) এবং নথির জন্য একটি স্ট্রিং। আউটপুট 1-ভিত্তিক। টাই করার ক্ষেত্রে প্রথম অবস্থানটি ফিরে আসে।

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

ব্যাখ্যা

h      % Concatenate archive and document as a cell array of strings
k      % Convert all strings to lowercase
4#S    % Sort and output the indices of the sorting
4#S    % Again. This gives the indices that applied to the concatenated
       % array would make it sorted
2#0)   % Separate last index (document) from the others (archive)
>      % Is it greater? Gives zero/one array the size of the archive
t      % Duplicate that array
0wh    % Prepend a 0
Ys     % Cumulative sum. This is first part of the score
w~     % Swap. Negate zero/one array
0h     % Postpend a 0
PYsP   % Reverse, cumulative sum, reverse. Second part of the score
+      % Add. This is the score of each position
K#X>   % Arg max
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.