কোডগলফ রেইনবো: পূর্ণসংখ্যার-অ্যারেগুলির সাথে মজা করুন


12

পরিচিতি:

এখানে চিত্র বর্ণনা লিখুন(উত্স: উইকিপিডিয়া )
যখন আমরা একটি রংধনু দেখি তখন সর্বদা উপরে থেকে নীচে পর্যন্ত রঙ থাকে:
লাল; কমলা; হলুদ; সবুজ; নীল; নীল; বেগুনী

যদি আমরা এই স্বতন্ত্র রিংগুলিতে নজর রাখি তবে লাল রিং অবশ্যই ভায়োলেট রিংয়ের চেয়ে বড়।
তদ্ব্যতীত, একই সাথে দুটি বা এমনকি তিনটি রংধনু রাখাও সম্ভব।

এই সমস্ত মিলিত এই চ্যালেঞ্জটিতে ব্যবহৃত হবে:

চ্যালেঞ্জ:

সঠিক আকার 7 এর পূর্ণসংখ্যার একটি তালিকা দেওয়া, যেখানে প্রতিটি মান রং-কণাকে রেইনবোগুলি তৈরি করার জন্য নির্দেশ করে (যেখানে বৃহত্তম সূচকটি লাল এবং সবচেয়ে ছোট সূচকটি নির্দেশিত ভায়োলেট নির্দেশ করে), বৃষ্টিপাতের পরিমাণ নির্ধারণ করে যা গঠন হতে পারে output

একটি একক পূর্ণসংখ্যা-রংধনুতে কমপক্ষে 3x ভায়োলেট, 4x নীল, 5x নীল, 6x সবুজ, 7x হলুদ, 8x কমলা, 9x লাল থাকতে হবে। এর উপরে একটি দ্বিতীয় রংধনু প্রথম রংধনুর লাল আংটির চেয়েও বড় হবে (তাদের মধ্যে একটি স্থান সহ), সুতরাং এটির জন্য কমপক্ষে 11x বেগুনি, 12x নীল, 13x নীল, 14x সবুজ, 15x হলুদ, 16x কমলা লাগবে , প্রথম রংধনু কী ব্যবহার করে তা ছাড়া 17x লাল। তৃতীয় রংধনু আবার 19x ভায়োলেট থেকে শুরু হবে।

উদাহরণ:

ইনপুট-তালিকা: [15,20,18,33,24,29,41]
আউটপুট:2

কেন? আমাদের কাছে 15x ভায়োলেট রয়েছে এবং দুটি রেইনবোয়ের জন্য আমাদের কমপক্ষে 3 + 11 = 14 প্রয়োজন। আমাদের কাছে 20 নীল রয়েছে এবং দুটি বৃষ্টির জন্য আমাদের কমপক্ষে 4 + 12 = 16 প্রয়োজন। ইত্যাদি দুটি রেনবোজের জন্য আমাদের পর্যাপ্ত রং রয়েছে তবে তিনটি রেইনবো তৈরি করার পক্ষে পর্যাপ্ত নয়, ফলে আউটপুট 2

চ্যালেঞ্জ নিয়ম:

  • ইনপুট-অ্যারেতে পূর্ণসংখ্যাগুলি অ-নেতিবাচক হওয়ার গ্যারান্টিযুক্ত ( >= 0)।
  • ইনপুট-তালিকাটি ঠিক 7 মাপের গ্যারান্টিযুক্ত।
  • যখন কোনও রেইনবোজ তৈরি করা যায় না আমরা আউটপুট 0
  • ইনপুট এবং আউটপুট বিন্যাস নমনীয়। দশমিকের পূর্ণসংখ্যার তালিকা বা অ্যারে হতে পারে, এসটিডিএন থেকে নেওয়া যেতে পারে। আউটপুট কোনও যুক্তিসঙ্গত আউটপুট-প্রকারের কোনও ক্রিয়াকলাপ থেকে ফিরে আসা বা সরাসরি STDOUT এ মুদ্রিত হতে পারে।

nরংধনু পরিমাণের জন্য প্রয়োজনীয় রঙের ন্যূনতম পরিমাণ :

Amount of Rainbows    Minimum amount per color
0                     [0,0,0,0,0,0,0]
1                     [3,4,5,6,7,8,9]
2                     [14,16,18,20,22,24,26]
3                     [33,36,39,42,45,48,51]
4                     [60,64,68,72,76,80,84]
5                     [95,100,105,110,115,120,125]
etc...

সাধারাইওন রুল:

  • এটি , তাই বাইট জেতে সংক্ষিপ্ত উত্তর।
    কোড-গল্ফ ভাষাগুলি আপনাকে নন-কোডগলফিং ভাষার সাথে উত্তর পোস্ট করতে নিরুৎসাহিত করবেন না। 'যে কোনও' প্রোগ্রামিং ভাষার জন্য যতটা সম্ভব সংক্ষিপ্ত উত্তর নিয়ে আসার চেষ্টা করুন।
  • স্ট্যান্ডার্ড নিয়মগুলি আপনার উত্তরের জন্য প্রযোজ্য , সুতরাং আপনাকে সঠিক পরামিতি এবং রিটার্ন-টাইপ, সম্পূর্ণ প্রোগ্রাম সহ STDIN / STDOUT, ফাংশন / পদ্ধতি ব্যবহারের অনুমতি দেওয়া হবে। আপনার কল
  • ডিফল্ট লুফোলগুলি নিষিদ্ধ।
  • যদি সম্ভব হয় তবে আপনার কোডের জন্য একটি পরীক্ষার সাথে একটি লিঙ্ক যুক্ত করুন।
  • এছাড়াও, আপনার উত্তরের জন্য একটি ব্যাখ্যা যুক্ত করা অত্যন্ত প্রস্তাবিত।

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

Input:  [15,20,18,33,24,29,41]
Output: 2

Input:  [3,4,5,6,7,8,9]
Output: 1

Input:  [9,8,7,6,5,4,3]
Output: 0

Input:  [100,100,100,100,100,100,100]
Output: 4

Input:  [53,58,90,42,111,57,66]
Output: 3

Input:  [0,0,0,0,0,0,0]
Output: 0

Input:  [95,100,105,110,115,120,125]
Output: 5

Input:  [39525,41278,39333,44444,39502,39599,39699]
Output: 98

0,0,0,0,0,0,0প্রান্ত-কেস যদিও :( (এটা 1-ফাঁক যুক্তি দিয়ে মাপসই করা হবে না)
জোনাথন অ্যালান

উত্তর:


8

পাইথ , 14 বাইট

thS.ef<b*+tkyy

পরীক্ষা স্যুট!

কিভাবে?

Algortihm

প্রথমে, এই উত্তরটি বন্ধ ভিত্তিতে তৈরি সূত্রটি তৈরি করা যাক। আসুন ফাংশনটি কল করুন যা প্রয়োজনীয় পরিমাণে রঙের কণাগুলি , যেখানে স্তরগুলির সংখ্যা এবং রঙের সূচক, 0-ভিত্তিক। প্রথমত, আমরা নোট করি যে একা স্তরটির জন্য (যেখানে 1-সূচিযুক্ত হয়, এই ক্ষেত্রে), আমাদের রঙের কণা প্রয়োজন । এটি মাথায় রেখে, আমরা প্রতিটি স্তর জন্য প্রতিটি এর ফলাফলগুলি সংযুক্ত :C(n,i)ninthnL(n,i)=i+3+8(n1)L(k,i)k

C(n,i)=(i+3)1st layer+(i+3+8)2nd layer++[i+3+8(n1)]nth layer
C(n,i)=(i+3)n+8(0+1++n1)
C(n,i)=(i+3)n+8(n1)n2=(i+3)n+4n(n1)
C(n,i)=n(i+3+4n4)C(n,i)=n(4n+i1)

অতএব, আমরা এখন জানি যে সম্ভব সর্বাধিক সংখ্যক স্তর, কল এটা , বৈষম্য সন্তুষ্ট করা আবশ্যক , যেখানে হয় ইনপুট তালিকার উপাদান।kC(k,i)IiIiith

বাস্তবায়ন

এটি ফাংশনটি প্রয়োগ করে এবং ইনপুট তালিকার উপরে ( ) পুনরুক্তি করে , সূচক (0-ভিত্তিক) এবং উপাদান হিসাবে রয়েছে। প্রতিটি মানের জন্য, প্রোগ্রামটি প্রথম ধনাত্মক পূর্ণসংখ্যার অনুসন্ধান করে যার জন্য ( এর যৌক্তিক অবহেলা, আমরা যে শর্তটি আগে কাটিয়েছি), তারপরে সর্বনিম্ন ফলাফল খুঁজে পায় এবং এটি হ্রাস। এইভাবে, কোনও শর্তটি পূরণ করে এমন সর্বোচ্চ সংখ্যার সন্ধানের পরিবর্তে আমরা সর্বনিম্নটি ​​অনুসন্ধান করি এবং এটির অফসেট সন্ধান করতে এটি থেকে বিয়োগ করে নাকে বি টি বি < সি ( টি , আই ) সি ( টি , আই ) বিC.ekbTb<C(T,i)C(T,i)b


3

পাইথন 2 , 64 61 বাইট

lambda l:min(((16*v+i*i)**.5-i)//8for i,v in enumerate(l,-1))

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


রংধনুর প্রতিটি রঙ (3+i)+n*8স্তর nএবং রঙের জন্য ব্যবহার করে i(0 = ভায়োলেট ইত্যাদি)

এক্স স্তরগুলির জন্য মোট তাই হয়: (3*i)*x + 8*x*(x+1)

আমরা কেবল এন এর জন্য সমাধান করি, এবং সর্বনিম্ন মান গ্রহণ করি।


সংরক্ষিত:

  • -3 বাইট, ওভসকে ধন্যবাদ

2
আহ, এখন আমি সেই প্রতিক্রিয়া পেয়েছি ...
জোনাথন ফ্রেচ


@ ওভস, ধন্যবাদ :)
টিফিল্ড

3

05 এ বি 1 , 18 17 16 বাইট

-1 বাইট ধন্যবাদ ম্যাজিক অক্টোপাস উরনকে

[ND4*6Ý<+*¹›1å#N

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

এন রেইনবোগুলির জন্য প্রয়োজনীয় রঙের পরিমাণ হ'ল এন (4 এন + [-1, 0, 1, 2, 3, 4, 5])


[ND4*6Ý<+*¹›1å#Nকাজ করে তবে আমি জানি না কেন। -1 বাইট যদিও।
ম্যাজিক অক্টোপাস আরন

@ ম্যাজিক অ্যাক্টপাস ইউরান ধন্যবাদ! এটি কাউন্টার ভেরিয়েবলের পরিবর্তে লুপ সূচকটি ব্যবহার করে।
Okx

অদ্ভুত বলে মনে হচ্ছে আমাকে যদিও করতে হবে না N>- কারণ আপনার ¾>আগে ছিল ।
ম্যাজিক অক্টোপাস উরন

@ ম্যাজিকঅ্যাক্টোপাসউরন কাউন্টার ভেরিয়েবল বাড়ানোর কমান্ড কাউন্টার ভেরিয়েবলটিকে ধাক্কা দেয় না।
Okx

2

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

f=(a,n)=>a.some((v,k)=>v<4*n*n-~-k*n)?~n:f(a,~-n)

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

কিভাবে?

P(n,k)nk

P(n,k)=n(4n+(k1))=4n2+(k1)n

nvkP(n,k)

তবে গল্ফিংয়ের উদ্দেশ্যে, আমরা পরে n === undefinedএবং এর nপরে নেতিবাচক মানগুলি ব্যবহার করি । প্রথম পুনরাবৃত্তি সর্বদা সফল কারণ অসমতার ডান দিকটি মূল্যায়ন করে NaN। সুতরাং, প্রথম অর্থবহ পরীক্ষাটি ২ য় পরীক্ষার সাথে n == -1



1

এক্সেল ভিবিএ, 78 বাইট

বেনামে ফাংশন যা [A1:G1]ভিবিই তাত্ক্ষণিক উইন্ডোতে সীমার এবং আউটপুটগুলির ব্যাপ্তি থেকে ইনপুট নেয় ।

[A2:G999]="=A1-(COLUMN()+8*ROW()-14)":[H:H]="=-(MIN(A1:G1)<0)":?998+[Sum(H:H)]

1

কাঠকয়লা , 21 বাইট

I⌊EA÷⁻X⁺X⊖κ²×¹⁶ι·⁵⊖κ⁸

এটি অনলাইন চেষ্টা করুন! লিঙ্কটি কোডটির ভার্জোজ সংস্করণ। ব্যাখ্যা: আমি স্বতন্ত্রভাবে উদ্ভূত একটি সূত্র দিয়ে প্রতিটি রঙের সাথে সরাসরি রঙিন বৃষ্টিপাতের সংখ্যা গণনা করে তবে @ টিফিল্ডের সূত্রের মতোই পরিণত হয়।

   A                   Input array
  E                     Map over values
          κ             Current index
         ⊖              Decrement
        X  ²            Square
               ι        Current index
            ×¹⁶         Multiply by 16
       ⁺                Add
      X         ·⁵      Square root
                   κ    Current index
                  ⊖     Decrement
     ⁻                  Subtract
    ÷               ⁸   Integer divide by 8
 ⌊                      Take the maximum
I                       Cast to string
                        Implicitly print


1

জেলি , 14 বাইট

এই কঠিন ছিল!

Ṃ+9s8Ṗ‘+\>Ż§ỊS

একটি সংঘবদ্ধ লিঙ্ক সাতটি পূর্ণসংখ্যার একটি তালিকা গ্রহণ করে যা পূর্ণসংখ্যার ফল দেয়, সম্ভাব্য বৃষ্টিপাতের সংখ্যা।

এটি অনলাইন চেষ্টা করুন! অথবা পরীক্ষা-স্যুটটি দেখুন

কিভাবে?

দুর্ভাগ্যক্রমে যে কোনও সরল পদ্ধতিতে 16 বাইট লাগবে, এ জাতীয় একটি পদ্ধতি Ṃɓ_J×¥H÷‘H<¬Ȧð€S, তবে এটি এখানে ব্যবহৃত পদ্ধতিটি আরও দক্ষ এবং খাটো হিসাবেও সক্রিয়!

এই পদ্ধতিতে অতি-ভায়োলেট ব্যান্ড সহ কণার গণনা হিসাবে পর্যাপ্ত রংধনু স্ট্যাকগুলি আরও বেশি তৈরি করে এবং প্রতিটি স্ট্যাকের জন্য এটি সম্ভব যা 1 টি যোগ করে।

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

Ṃ+9s8Ṗ‘+\>Ż§ỊS - Link list of integers    e.g. [0,0,0,0,0,0,0]        or [17,20,18,33,24,29,41]
Ṃ              - minimum                       0                         17
 +9            - add nine                      9                         26
   s8          - split into eights             [[1,2,3,4,5,6,7,8],[9]]   [[1,2,3,4,5,6,7,8],[9,10,11,12,13,14,15,16],[17,18,19,20,21,22,23,24],[25,26]]
     Ṗ         - discard the rightmost         [[1,2,3,4,5,6,7,8]]       [[1,2,3,4,5,6,7,8],[9,10,11,12,13,14,15,16],[17,18,19,20,21,22,23,24]]
      ‘        - increment (vectorises)        [[2,3,4,5,6,7,8,9]]       [[2,3,4,5,6,7,8,9],[10,11,12,13,14,15,16,17],[18,19,20,21,22,23,24,25]]
               -   (single rainbow counts, including ultra-violet bands, ready to stack)
       +\      - cumulative addition           [[2,3,4,5,6,7,8,9]]       [[2,3,4,5,6,7,8,9],[12,14,16,18,20,22,24,26],[30,33,36,39,42,45,48,51]]
               -   (stacked rainbow counts, including ultra-violet bands)
          Ż    - zero concatenate              [0,0,0,0,0,0,0,0]         [0,17,20,18,33,24,29,41]
               -   (we got given zero ultra-violet band particles!)
         >     - greater than? (vectorises)    [[1,1,1,1,1,1,1,1]]       [[1,0,0,0,0,0,0,0],[1,0,0,0,0,0,0,0],[1,1,1,1,1,1,1,1]]
               -   (always a leading 1 - never enough particles for the ultra-violet band)
           §   - sum each                      [8]                       [1,1,8]
               -   (how many bands we failed to build for each sacked rainbow?)
            Ị  - insignificant? (abs(X)<=1?)   [0]                       [1,1,0]
               -   (1 if we only failed to build an ultra-violet band for each sacked rainbow, 0 otherwise)
             S - sum                           0                         2
               -   (the number of rainbows we can stack, given we don't see ultra-violet!)

আমি আপনাকে অনুভব করি, 18 বাইটে ওক্সের অ্যালগরিদমটি গ্রহন করা আমার পক্ষে অবশ্যই খুব কঠিন ছিল ...
এরিক দ্য আউটগল্ফার

এছাড়াও, সঙ্গে চালাক ধারণা §ỊS!
এরিক দি আউটগল্ফার

1

05 এ বি 1 ই , 14 বাইট

žv*āÍn+tā-Ì8÷ß

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

n

পাইথ অ্যালগরিদম ⟶ 05AB1E অ্যালগরিদম

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

C(n,i)=n(i+2)+4n(n1)

Ii

4n2+n(i2)Ii=0

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

n1,2=2i±(i2)2+16Ii8

Ii(i2)2+16Iii22ii+2=42ii22i2+i=4n

n=2+(i2)2+16Iii8

এই উত্তরটি কার্যকর করে যা ঠিক সেই সম্পর্ক।


1

সি ++, 127 125 বাইট

কেভিন ক্রুইজসেনকে ধন্যবাদ 2 বাইট অফ শেভ।

#include<cmath>
int f(int x[7]){size_t o=-1;for(int c=0,q;c<7;c++,o=o>q?q:o)q=(std::sqrt(--c*c-c+16*x[++c])-c+1)/8;return o;}

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

ফাংশনটি সাতটি সিঁড়ির সি-স্টাইলের অ্যারে নেয় এবং একটি পূর্বাবস্থায় ফিরে আসে।

c0c6n(n1)yc(n)=(c+3)+8(n1)nYc(n)=k=1nyc(k)=n(c+3)+8n(n1)2xcYc(n)xcn:

n(c1)+(c1)2+16xc8

xc

ব্যাখ্যা:

#include <cmath> // for sqrt

int f (int x[7])
{
     // Note that o is unsigned so it will initially compare greater than any int
     size_t o = -1;
     // Iterate over the array
     for (int c = 0; c < 7; c++)
     {
         // calculate the bound
         int q = c - 1;
         q = (std::sqrt (q * q + 16 * x[c]) - q) / 8;

         // if it is less than previously found - store it
         o = o > q ? q : o;
     }
     return o;
 }

হাই, পিপিসিজিতে আপনাকে স্বাগতম! আমি সি খুব ভাল জানি না ++ কিন্তু আমি নিশ্চিত প্রশংসনীয় আপনি যা করতে পারেন গলফ এই অংশ: for(int c=0;c<7;c++){int q=c-1;q=(std::sqrt(q*q+16*x[c])-q)/8;o=o>q?q:o;}এই: for(int c=0,q;c<7;c++,o=o>q?q:o)q=(std::sqrt(--c*c-c+16*x[++c]))/8;। এছাড়াও, আপনি সম্ভবত পরীক্ষার কোডের সাথে একটি টিআইও-লিঙ্ক সরবরাহ করতে পারেন?
কেভিন ক্রুইজসেন

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