জলদস্যু বিশ্বের বিতরণ নিয়ম


14

একটি বিদ্যমান "গেম" রয়েছে যেখানে জলদস্যুরা নির্দিষ্ট নিয়ম অনুসারে যৌক্তিকভাবে স্বর্ণের কয়েনগুলিকে ভাগ করে দেয়। উইকিপিডিয়া থেকে উদ্ধৃতি :

5 টি যৌক্তিক জলদস্যু, এ, বি, সি, ডি এবং ই রয়েছে 100 তারা 100 টি সোনার মুদ্রা সন্ধান করে। কীভাবে তাদের বিতরণ করবেন তা তাদের অবশ্যই সিদ্ধান্ত নিতে হবে।

জলদস্যুদের সিনিয়রটির কড়া আদেশ রয়েছে: এ বি এর চেয়ে উচ্চতর, কে সি এর চেয়ে উচ্চতর, কে ডি এর চেয়ে উচ্চতর, যিনি ই এর চেয়ে উচ্চতর is

জলদস্যু বিশ্বের বিতরণের নিয়মগুলি হ'ল: সর্বাধিক প্রবীণ জলদস্যুদের কয়েন বিতরণের প্রস্তাব দেওয়া উচিত। প্রস্তাবক সহ জলদস্যুরা তারপরে এই বিতরণটি গ্রহণ করবেন কিনা তা নিয়ে ভোট দিন। টাই ভোটের ক্ষেত্রে প্রস্তাবকারীর ভোটদানের ভোট রয়েছে। বিতরণ গ্রহণ করা হলে, কয়েনগুলি বিতরণ করা হয় এবং খেলাটি শেষ হয়। যদি তা না হয় তবে প্রস্তাবককে জলদস্যু জাহাজ থেকে ওভারবোর্ডে ফেলে মারা যায় এবং পরবর্তী সিনিয়র জলদস্যু আবার সিস্টেমটি শুরু করার জন্য একটি নতুন প্রস্তাব দেয়।

জলদস্যুরা তিনটি কারণের উপর তাদের সিদ্ধান্তকে ভিত্তি করে। প্রথমত, প্রতিটি জলদস্যু বেঁচে থাকতে চায়। দ্বিতীয়ত, বেঁচে থাকার পরে, প্রতিটি জলদস্যু প্রতিটি প্রাপ্ত সোনার কয়েনের সংখ্যা সর্বোচ্চ করতে চায় ize তৃতীয়ত, প্রতিটি জলদস্যু অন্য একটি ওভারবোর্ড নিক্ষেপ করতে পছন্দ করবে, যদি অন্য সমস্ত ফলাফল সমান হয়। জলদস্যু একে অপরকে বিশ্বাস করে না এবং প্রস্তাবিত বিতরণ পরিকল্পনা ছাড়াও জলদস্যুদের মধ্যে কোনও প্রতিশ্রুতি দেয় না বা সম্মান জানায় না যা প্রতিটি জলদস্যুকে সম্পূর্ণ সংখ্যক সোনার মুদ্রা দেয়।

চ্যালেঞ্জ

ইনপুট হিসাবে পূর্ণসংখ্যার হিসাবে নিন n, 1 <= n <= 99, nজলদস্যুদের সংখ্যা কোথায় - এবং প্রথম জলদস্যু দিয়ে শুরু করে কয়েনের বিতরণ আউটপুট নিন।

পরীক্ষার কেস (প্রথম লাইন ইনপুট; দ্বিতীয় আউটপুট):

1
100

2
100 0

3
99 0 1

5
98 0 1 0 1

এটি , তাই বাইটগুলির মধ্যে সংক্ষিপ্ততম সমাধানটি জিতে।


1
আমার মনে হয় এটি আগে জিজ্ঞাসা করা হয়েছিল, তবে এটি কোথায় পাওয়া যায় তা আমি জানতাম না।
ফেয়ারসুম

2
@ ফেয়ারসাম কোডগল্ফ.স্ট্যাকেক্সেঞ্জাও.ইউকশনস / ৫৪৩৩৫/২ (মুছে ফেলা)
ডেনিস

3
Args [0]। জাভাতে এখন এটি ব্যবহার করার একটি কারণ রয়েছে।
অ্যাডিসন ক্রম্প 21

3
সীমা কেন n < 100? অতিরিক্ত কর্মীযুক্ত, নিম্ন-স্বর্ণের জলদস্যু জাহাজগুলির পাশাপাশি বিতরণ সহায়তাও প্রয়োজন।
রায়ান কাভানহো

1
@ নিল এটি একটি ভয়ানক ধারণা। যদি এটিই "যুক্তিযুক্ত" জলদস্যুরা করেন, তবে এ ছাড়া অন্য সমস্ত জলদস্যু A কে হত্যা করার চেষ্টা করবে যাতে তারা পরিবর্তে $ 100 / (n-1) get পায়। এটি দ্রুত শেষ দুটি জলদস্যু ছাড়া সবাইকে মেরে ফেলবে।
কেইন

উত্তর:


12

জেলি , 11 10 বাইট

R%2ḊµSȷ2_;

এটি অনলাইন চেষ্টা করুন! বা একবারে সমস্ত পরীক্ষার কেস যাচাই করুন

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

ইনপুট করতে এন , কার্য তালিকা তৈরি নিচে boils এক্স, 0, 1, 0, ... দৈর্ঘ্যের এন যার সমষ্টি 100

R%2ḊµSȷ2_;  Main link. Input: n

R           Yield [1, 2, ..., n].
 %2         Replace each integer by its parity. Yields [1, 0, 1, 0, ...].
   Ḋ        Dequeue; remove the first 1. This yields the list a = [0, 1, ...].
    µ       Begin a new, monadic link. Argument: a
     S      Compute the sum of a.
      ȷ2_   Subtract the sum from 100. (ȷ2 is 1e2 in Python syntax)
         ;  Prepend the difference to a.

7

পাইথন, 33 বাইট

lambda n:([-n/2+101]+[0,1]*n)[:n]

প্রথম মানটি গণনা করে, কিছু সংযোজন করে 0, 1, 0, 1..., দৈর্ঘ্যে কাটা হয় n

দ্রষ্টব্য যে -n/2+101সংক্ষিপ্ত করা যাবে না 101-n/2কারণ অ্যানারি এবং বাইনারিগুলির -পৃথক নজির রয়েছে: পূর্ববর্তীটি পার্স করা হয় (-n)/2এবং পরে হিসাবে রয়েছে 101-(n/2)

পুনরাবৃত্তি অনেক দীর্ঘ ছিল (45):

f=lambda n,i=100:1/n*[i]or f(n-1,i-n%2)+[n%2]

4

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

:2\ts_101+l(

এটি ভাষা / সংকলকের বর্তমান সংস্করণ (9.2.2) ব্যবহার করে যা এই চ্যালেঞ্জের চেয়ে আগের is

উদাহরণ

>> matl :2\ts_101+l(
> 5
98  0  1  0  1

ব্যাখ্যা

:         % implicitly input number "n". Generate vector [1, 2, ..., n]
2\        % modulo 2. Gives [1, 0, 1, ...]
ts        % duplicate and compute sum
_101+     % negate and add 101
l(        % assign that to first entry of [1, 0, 1, ...] vector. Implicitly display


3

পাইথন, 62 58 বাইট

সম্পাদনা: খুশী আমি এটিকে ওয়ান-লাইনার করেছিলাম। তবে আমি পাইথনের কাছে হেরেছি। সুতরাং, এটি কেবল রেফারেন্সের জন্য। ধন্যবাদ @ জগারব

def x(i):n=[~j%2for j in range(i)];n[0]=101-sum(n);print n

এটি ইনপুট নেয়, 1 থেকে i পর্যন্ত সমস্ত সংখ্যার একটি তালিকা পিএফ প্যারিটি তৈরি করে। তারপরে i-101-যোগ (এন) এবং প্রিন্টগুলিতে প্রথম উপাদান সেট করে।

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


3

জাভাস্ক্রিপ্ট ES6, 45 বাইট

a=>[...Array(a)].map((x,y)=>y?--y%2:202-a>>1)

1 নাইট সংরক্ষণ করার জন্য ধন্যবাদ 1 বাইট!


1
202-a>>1একটি বাইট সংরক্ষণ করে।
নিল

3

𝔼𝕊𝕄𝕚𝕟, 14 অক্ষর / 26 বাইট

⩥ï⒨?‡$%2:ỉ-ï»1

Try it here (Firefox only).

খারাপ নয়, তবে ভালও নয় ...

ব্যাখ্যা

⩥ï⒨?‡$%2:ỉ-ï»1 // implicit: ï=input, ṥ=101
⩥ï⒨            // map over a range [0,ï) and return:
    ?‡$%2       // (if mapitem>0) then ($-1) mod 2
         :ỉ-ï»1 // (else) 202-ï>>1
                // implicit output

2

গুরুতরভাবে, 23 17 বাইট

সম্পাদনা : ধন্যবাদ @ কুইন্টোপিয়া

,R`2@%`M;Σ2╤u-0(T

আমার পাইথন উত্তরের মতো একই পদ্ধতির ব্যবহার করে তবে আমি ম্যাপিং ব্যবহার করে মডুলো 2 করি এবং বেশ কয়েকবার আমি আমার স্ট্যাকটি ঘোরাই।

ব্যাখ্যা :

এই কোড ইনপুট পুশ করে (আমি এটি কল করব i)। পরবর্তী ধাক্কা দেয় range(1,i+1)এবং একটি ফাংশন করে। তারপরে 2 টি পুশ করে, স্ট্যাকটি ঘোরায় এবং অবশেষে মডুলো নেয়।

এরপরে, এই ফাংশনটি পুনরাবৃত্তযোগ্য পরিসরে ম্যাপ করুন। এটি তালিকার প্রতিটি উপাদানের সমতা দেয়।

পরিশেষে, স্ট্যাকটিকে সদৃশ করে, সমতা তালিকার সমষ্টি করে, 2, 10 ^ 2 এবং 100 + 1 টিপুন এবং যোগফলটি বিয়োগ করে (আমাকে এই মানটি বলি n)। পরবর্তী কোড 0 টি পুশ করে, স্ট্যাকটিকে 1 দ্বারা আবর্তিত করে এবং তালিকার সূচী 0 উপাদানটিকে এন-তে সেট করে। ফলাফল তালিকা সুস্পষ্টভাবে মুদ্রিত হয়।


এটি 17 বাইটের বেশি হওয়া উচিত নয়:,R`2@%`M;Σ2╤u-0(T
কুইন্টোপিয়া

1

জাপট, 14 বাইট

তবুও অন্য একটি চ্যালেঞ্জ যেখানে আমি নিজেকে বিল্ট-ইন করার জন্য আশা করি যা আমি সবেমাত্র যোগ করার বিষয়ে বিবেচনা করেছি ...

1oU mv u#Ê-UÁ1

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

1oU mv u#Ê-UÁ1  // Implicit: U = input integer
1oU             // Create the range [1, U).
    mv          // Map each item to 1 if even, 0 otherwise.
       u        // Unshift (add to the beginning of the array)
        #Ê-UÁ1  //  the char code of Ê (202), minus U >>> 1 (floor of U / 2).

1

অ্যাকশনস্ক্রিপ্ট 3, 87 বাইট

function x(n){var l=[],i=1;for (l[0]=int(101-n/2);i<n;){l[i]=++i%2;}return l.join(" ")}

এটি সেরা গল্ফিং ভাষা নয়, তবে আমি as3 উত্তর পোস্ট করা উপভোগ করি।



0

পার্ল 51 49 44 বাইট

$,=$";@"=map{$i++%2}2..<>;say 100-(@">>1),@"

নিম্নলিখিত পার্লারুন বিকল্পগুলির প্রয়োজন -E

$ perl -E'$,=$";@"=map{$i++%2}2..<>;say 100-(@">>1),@"'<<<5
98
0
1
0
1

0

কিউবিআইসি , 28 25 বাইট

:?100-(a-1)'\`2[2,a|?b%2

ব্যাখ্যা

:               Get command line parameter, assign to 'a'
                Determine the part of the treasure for the crew:
      (a-1) \ 2 Integer Divide 'a'-1 by 2. The -1 compensates for even cases.
           ' `  Make \ a direct command for QBasic instead of substituting it for ELSE.
?100-           Print 100 coins, minus the crew-share --> Captain's booty.
[2,a|           FOR b=2; b <= a; b++; ie for every other crew member
?b%2            Give every odd crewman a coin.
                [FOR loop implicitly closed by QBIC]
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.