মাছ খাওয়া, আকারে বাড়ছে


16

আপনি একটি পুকুরের এমন মাছ যা অন্য মাছ খেয়ে বেঁচে থাকার দরকার। আপনি কেবল নিজের চেয়ে একই আকার বা ছোট আকারের মাছ খেতে পারেন। আপনাকে অবশ্যই এমন একটি প্রোগ্রাম তৈরি করতে হবে যা সাজানো ইনপুট হিসাবে মাছের শোল গ্রহণ করবে। এ থেকে আপনি কয়টি মাছ খেতে পারবেন এবং শেষ পর্যন্ত আপনি যে আকারে বাড়বেন সে বিষয়ে অবশ্যই কাজ করা উচিত।

মাপের তালিকা

+--------------+--------------+--------------+--------------+
|              | Amount extra | Total size 1 | Increase to  |
| Current size |  needed for  |     fish     |    size      |
|              |  next size   |              |              |
+--------------+--------------+--------------+--------------+
|      1       |      4       |      4       |      2       |
+--------------+--------------+--------------+--------------+
|      2       |      8       |      12      |      3       |
+--------------+--------------+--------------+--------------+
|      3       |      12      |      24      |      4       |
+--------------+--------------+--------------+--------------+
|      4       |      16      |      40      |      5       |
+--------------+--------------+--------------+--------------+
|      5       |      20      |      60      |      6       |
+--------------+--------------+--------------+--------------+
|      6       |      24      |      84      |      7       |
+--------------+--------------+--------------+--------------+

বিধি

  1. আপনার আকার 1 থেকে শুরু হয়
  2. শোল ইনপুটটিতে 0-9 এর মধ্যে মাছের পূর্ণসংখ্যা থাকবে
  3. 0 = শেত্তলাগুলি এবং আপনাকে খাওয়ানোতে অভ্যাস করবে না।
  4. ফিশ ইন্টিজারটি মাছের আকারকে প্রতিনিধিত্ব করে (1-9)।
  5. আপনি নিজের চেয়ে একই আকার বা তার চেয়ে কম মাছ খেতে পারেন।
  6. আপনি নিজের আকারকে সর্বাধিকীকরণ করতে যে কোনও ক্রমে মাছটি খেতে পারেন।
  7. আপনি একবারে প্রতিটি মাছ খেতে পারেন।
  8. আপনি যত বড় মাছ খান, তত দ্রুত আপনার বৃদ্ধি হবে। একটি আকার 2 মাছ সমান দুটি আকার 1 মাছ, আকার 3 মাছের সমান তিন আকার 1 মাছ এবং আরও on
  9. প্রতিবার আপনি নীচের পরিমাণগুলিতে পৌঁছালে আপনার আকার বাড়বে ments

আপনি যে আকারের হতে পারেন তার পূর্ণসংখ্যা ফেরত দেয়

উদাহরণ

"11112222" => 3  
4 fish size 1 increases to 2, 4 size 2 makes you 3

"111111111111" => 3
4 fish size 1 increases to 2, 8 size 1 makes you 3

সংক্ষিপ্ততম কোড (বাইটগুলিতে গণনা করা) যে কোনও ভাষায় সংখ্যা জয়ী করে তা করতে।


1
পিপিসিজিতে আপনাকে স্বাগতম, আমি প্রশ্নে ছোটখাটো ফর্ম্যাটিং পরিবর্তনগুলি করতে স্বাধীনতা নিয়েছি, আপনি যদি মনে করেন যে এগুলি বরাদ্দ করা হয়নি তবে এগুলি রোলব্যাক করতে পারেন না।
রড


5
আরও প্রশ্ন: (1) আমরা একটি পূর্ণসংখ্যার স্ট্রিংয়ের পরিবর্তে পূর্ণসংখ্যার একটি তালিকা নিতে পারি? (2) আমরা কি অনুমান করতে পারি যে ইনপুটটি সাজানো হয়েছে?
জংহওয়ান মিন

1
আমি যোগ করেছি এটি বাছাই করা হবে এবং কোনও ইনপুট নিতে পারে
স্কেথ

2
কেউ মার্কের শেষ উদাহরণটি মুছে ফেলতে 5,6বা 6,6এটিকে থেকে আকার 13 এ পেতে পারে; তবুও 5,5পরিবর্তে সরান এবং এক মাত্র পাঁচটি আকারে পৌঁছতে পারে।
জোনাথন অ্যালান 21

উত্তর:


10

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

পূর্ণসংখ্যার অ্যারের হিসাবে ইনপুট নেয়।

a=>a.map(x=>s+=(t+=s>=x&&x)>s*-~s*2,t=s=1)|s

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

কিভাবে?

Tss+1

Ts=2s(s+1)

গুলিটিt=11

x

  • xtsx
  • st>Tগুলি


5

ওল্ফ্রাম ভাষা (গণিত) , 40 39 বাইট a

(f:=Floor@s;s=1;s<#||(s+=#/4/f)&/@#;f)&

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

ব্যাখ্যা

f:=Floor@s;s=1;

সঞ্চয় করুন floor(s)f, প্রতীকী। s=1(আকার) দিয়ে শুরু করুন ।

... /@#

ইনপুট প্রতিটি উপাদান মাধ্যমে Iterate ...

s<#||(s+=#/4/f)

উপাদান তার চেয়ে অনেক বেশী না হয়, তাহলে s, তারপর বাড়ায় sদ্বারা <element> / (4 * floor(s))Or (||)স্বল্প সার্কিট অন্যথায়।

f

রিটার্ন floor(s)


5

জেলি , 17 বাইট

J×4ÄfSR$ịx`>JTḢȯ1

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

একটি আকর্ষণীয় পদ্ধতি যা ভালভাবে কোনও ধরণের লুপ বা পুনরাবৃত্তি দ্বারা পরাজিত হতে পারে।

কিভাবে?

J×4ÄfSR$ịx`>JTḢȯ1 - Link: list A (ascending digits) e.g. [1,1,1,1,1,1,1,2,2,3]
J                 - range of length                      [1,2,3,4,5,6,7,8,9,10]
 ×4               - multiply all by 4                    [4,8,12,16,20,24,28,32,36,40]
   Ä              - cumulative sums                      [4,12,24,40,60,84,112,144,180,220]
       $          - last two links as a monad (of A):
     S            -   sum                                14
      R           -   range                              [1,2,3,4,5,6,7,8,9,10,11,12,13,14]
   f              - filter keep                          [4,12]
          `       - use left argument as right with:
         x        -   repeat elements                    [1,1,1,1,1,1,1,2,2,2,2,3,3,3]
        ị         - index into                           [      1,              3    ]
                  -                                    = [1,3]
            J     - range of length (of A)               [1,2,3,4,5,6,7,8,9,10]
           >      - greater than?                        [0,1,3,4,5,6,7,8,9,10]
                  -                1 not greater than 1---^ ^---3 is greater than 2
                  -   (note keeps values of longer - i.e. the 3,4,... here)
             T    - truthy indices                       [  2,3,4,5,6,7,8,9,10]
              Ḣ   - head                                 2
                1 - literal one                          1
               ȯ  - logical OR                           2
                  -   (edge-case handling when the head of an empty list yields 0)
                  -   (note that when the shoal is fully consumed the final size will
                  -    still be less than the length of that shoal, so TḢ will still give
                  -    this size due to >J keeping values of the longer argument.)

কেউ বলেছিল তাড়াতাড়ি আমার এই গ্রহণ করা উচিত আপনি সম্মত হন?
স্ক্যাচ

হ্যা আমি রাজি; কিছু লোক কোড-গল্ফের জন্য সবুজ চেক চিহ্ন দেয় না, আবার কেউ কেউ এক সপ্তাহের মধ্যে রেখে দেয় - উত্তর গ্রহণের ফলে ক্রিয়াকলাপ হ্রাসের অর্থ হতে পারে। একদিকে যেমন আমার মনে হয় এটি মারাত্মক হতে হবে (হয় জেলি নিজেই বা কোনও ক্রস-ভাষা প্রতিযোগিতা হিসাবে) যাইহোক! ... কোড-গল্ফ স্ট্যাক এক্সচেঞ্জের কাছে একটি অদ্ভুত ফিট কারণ আসল প্রতিযোগিতা অন্তর্-ভাষা হলেও গ্রহণযোগ্য চিহ্নটি আন্তঃ-ভাষা।
জোনাথন অ্যালান


1

লুয়া , 214 বাইট

l,f=1,{}for j=1,9 do s,f[j]=(...):gsub(j,0)end::z::a,n=0,l*4 for i=1,l do a=a+i*f[i]end if a>=n then e=l while n>0 do if 0<f[e]and e<=n then n=n-e f[e]=-1+f[e]else e=e-1 end end l=l+1 else print(l)return end goto z

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

এমনকি এখানে খুব কম সংখ্যক নিকটবর্তীও নয় তবে এটি নির্ধারণ করা মজাদার: ডি

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