একটি অ্যারে বৃদ্ধি


44

ইতিবাচক পূর্ণসংখ্যার একটি অযৌক্তিক অ্যারে দেওয়া, এটি একবার হিসাবে "বৃদ্ধি":

  • যদি সমস্ত অ্যারে উপাদান সমান 1হয় তবে অ্যারের শেষে একটি যুক্ত করুন । উদাহরণ স্বরূপ:

    [1] -> [1, 1]
    [2] -> [2, 1]
    [1, 1] -> [1, 1, 1]
    [3, 3, 3, 3, 3] -> [3, 3, 3, 3, 3, 1]
    
  • অন্যথায় অ্যারেতে প্রথম উপাদানটি বৃদ্ধি করুন যা অ্যারের সর্বনিম্ন মান। উদাহরণ স্বরূপ:

    [1, 2] -> [2, 2]
    [2, 1] -> [2, 2]
    [3, 1, 1] -> [3, 2, 1] -> [3, 2, 2] -> [3, 3, 2] -> [3, 3, 3]
    [3, 4, 9, 3] -> [4, 4, 9, 3] -> [4, 4, 9, 4] -> [5, 4, 9, 4] -> [5, 5, 9, 4] -> ...
    

(প্রত্যেকে ->একটি করে ইনক্রিমেন্ট উপস্থাপন করে যা আপনার সমস্ত প্রোগ্রামের করা দরকার))

ফলাফল বৃদ্ধি প্রাপ্ত অ্যারে আউটপুট।

বাইটের মধ্যে সংক্ষিপ্ততম কোডটি জয়ী।


0 কে ইতিবাচক পূর্ণসংখ্যার হিসাবে গণনা করে
ডাউনগোট

20
@ ডাউনগোট 0 পিপিসিজিতে কখনও ইতিবাচক হয় না। যদি 0 এর অনুমতি দেওয়া হয় তবে এই শব্দটি "অ-নেতিবাচক" হতে পারে
ETH প্রোডাকশনগুলি

উত্তর:


13

জেলি , 8 7 বাইট

‘;ṀỤḢṬ+

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

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

‘;ṀỤḢṬ+  Main link. Argument: A

‘        Increment all elements of A.
  Ṁ      Yield the maximum of A.
 ;       Concatenate both results. Note that the appended maximum will be the 
         minimum of the resulting array if and only if all elements of A are equal.
   Ụ     Grade up; yield the indices of the resulting array, sorted by their
         corresponding values in that array.
    Ḣ    Head; extract the first index, which is the index of the first occurrence
         of the minimum. For an array of equal elements, this will be the index
         of the appended maximum.
     Ṭ   Untruth; for index i, yield an array of i-1 zeroes, followed by a 1.
      +  Add this array to A, incrementing the minimum or appending a 1.

11

পাইথন 3, 62 53 51 50 বাইট

ফাংশন যা তালিকাটিকে এতে পরিবর্তন করেছে ( মেটা দ্বারা অনুমোদিত )।

def F(a):a+=1//len({*a})*[0];a[a.index(min(a))]+=1

Repl.it চেষ্টা করুন!

-9 বাইট লিনকে এটি চিহ্নিত করার জন্য ধন্যবাদ, কারণ অ্যারেটি ইতিবাচক পূর্ণসংখ্যার হবে, তাই আমি অ্যারের শেষের দিকে '0' যুক্ত করতে পারি এবং সেই বর্ধিত করতে পারি।

গল্ফ len(set(a))করার জন্য mbomb007 এবং ফ্লোরডাটিভ ট্রিকের জন্য ডেনিসকে বিশেষ ধন্যবাদ len({*a})!


হুম। "ফলাফল বৃদ্ধি প্রাপ্ত অ্যারে আউটপুট করুন"। এটি কি যোগ্যতা অর্জন করে?
Yytsi

আমি কোথায় ছিল তা পুরোপুরি মনে করতে পারি না তবে একটি মেটা পোস্ট দেখে মনে আছে যে কোনও প্রদত্ত তালিকার জায়গায় সংশোধন করার বিষয়টি ডিফল্টরূপে অনুমোদিত। আমি এটির জন্য @ টুকুএক্সএক্স
ফ্লিপট্যাক

@ টুকুএক্সএক্স আমি সম্পূর্ণ নিশ্চিত নই এটি ঠিক আছে বলে মনে হচ্ছে তবে আমি যদি সেখানে থাকে তবে অ্যারেগুলি পরিবর্তনের বিষয়ে মেটা কনসেন্সাসটি স্থগিত করব।
ক্যালভিনের

1
পাইথন 3 এ, আপনি len({*L})<2তালিকার সমস্ত উপাদান সমান কিনা তা অনুসন্ধান করতে ব্যবহার করতে পারেন ।
mbomb007

1
a+=1//len({*a})*[0]একটি বাইট সংরক্ষণ করা উচিত।
ডেনিস

9

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

a=>new Set(a).size>1?++a[a.indexOf(Math.min(...a))]:a.push(1)

এর যুক্তিটি সংশোধন করে আউটপুট । অ্যারেতে কেবলমাত্র 17 বাইটের মধ্যে একটি মাত্র অনন্য আইটেম রয়েছে তা নির্ধারণের উপায় আমি খুঁজে পাচ্ছি না, তবে পরামর্শগুলি স্বাগত।

পরীক্ষার স্নিপেট

অন্যান্য প্রচেষ্টা

অ্যারেতে একাধিক অনন্য ইনপুট রয়েছে কিনা তা সিদ্ধান্ত নেওয়ার কয়েকটি বিকল্প উপায় এখানে রয়েছে:

a=>a.some(x=>x-a[0])?++a[a.indexOf(Math.min(...a))]:a.push(1)
a=>a.some(x=>x-m,m=Math.min(...a))?++a[a.indexOf(m)]:a.push(1)

someগুলি উভয় findপাশাপাশি প্রতিস্থাপন করা যেতে পারে । .sortসর্বনিম্ন সন্ধানের জন্য সংক্ষিপ্ত হবে, যদি ডিফল্ট সাজানোর শব্দভাণ্ডার না থাকে (কেন, জেএস, কেন?):

a=>new Set(a).size>1?++a[a.indexOf(a.sort()[0])]:a.push(1)
// Instead we have to do:
a=>new Set(a).size>1?++a[a.indexOf(a.sort((x,y)=>x-y)[0])]:a.push(1)

আমি সর্বনিম্ন সন্ধানের জন্য পুনরাবৃত্তি চেষ্টা করেছি, তবে এটি দীর্ঘতর হয়ে উঠেছে:

f=(a,n=1,q=a.indexOf(n))=>~q?a.some(x=>x-n)?++a[q]:a.push(1):f(a,n+1)

এবং এখানে একটি স্ট্রিং-ভিত্তিক সমাধান যা প্রথমে ভাল ধারণা মত মনে হয়েছিল: (ইনপুট একটি স্ট্রিং এ অ্যারে বিন্যাসে দেওয়া হয়, যেমন "[1,2,3]")

a=>a.replace(m=/(\d+),(?!\1)/.test(a)?Math.min(...eval(a)):']',+m+1||",1]")

A.find (n => n == ম্যাথ.মিন (... ক)) কি খাটো ব্যবহার করছেন?
ডাউনওয়েট

@ ডাওনগোট আমি নিশ্চিত না যে আমি কীভাবে এটি ব্যবহার করব, কারণ এটি সূচকের চেয়ে আইটেমটি ফেরত দেয়
ETH প্রোডাকশন

হ্যাঁ <_> ওফস, আমি আপনার ++ মিস করেছি এবং বুঝতে পারিনি যে আপনার কোনও রেফারেন্সের দরকার আছে
ডাউনওয়েট

7

গণিত, 70 57 55 বাইট

কার্যত সমস্ত উন্নতি মার্টিন ইন্ডারের কারণে, যিনি আমার গাধাটিকে প্যাটার্ন মেলানোর পদ্ধতির সাথে লাথি মারছেন! এছাড়াও জেএইচএম মূলত একই সময়ে মূলত একই সমাধানটি নিয়ে আসে solution (বাইট গণনা ASCII এনকোডিং ব্যবহার করে)

±{p:x_ ..}:={p,1};±{x___,y_,z___}/;y≤x~Min~z:={x,y+1,z}

একটি ±তালিকা আর্গুমেন্ট গ্রহণ করে একটি ফাংশন সংজ্ঞায়িত করে । যদি সেই তালিকার যুক্তিতে একই উপাদানটির কয়েকটি সংখ্যক অনুলিপি থাকে (সনাক্ত করা x_..এবং নাম দেওয়া হয়েছে p), তবে 1সংযোজন দিয়ে তালিকাটি আউটপুট করুন । অন্যথায়, যদি সেই তালিকার যুক্তিটির একটি বিশেষ উপাদান থাকে y( xশূন্য বা আরও বেশি উপাদান আগে yএবং zশূন্য বা তার পরে আরও উপাদান হয়ে থাকে y) যা অন্যান্য উপাদানের সর্বাধিক ন্যূনতম হয়, তবে সেই তালিকাটি yবাড়ানো দিয়ে আউটপুট দেয় । তালিকার সর্বনিম্ন উপাদানটির কোনও উদাহরণ মিলে যাবে yতবে ভাগ্যক্রমে ম্যাথমেটিকা ​​প্রথমটিকে বেছে নেওয়ার জন্য বেছে নিয়েছে।


কারণ ±একটি 2-বাইট অক্ষর, আপনার কোডটি 59 বাইট দীর্ঘ। এছাড়াও, এর মধ্যে অবশ্যই একটি স্থান থাকতে হবে x_এবং ..কারণ ম্যাথমেটিকা ব্যাখ্যা x_..করে x_. .(যা ত্রুটি ছুড়ে দেয়)। এছাড়াও, Min( x~Min~z) এর ইনফিক্স ফর্মটি এই 2 বাইটকে আরও সংক্ষিপ্ত করে তুলবে (যা এই সমাধানটিকে আমার একটির সাথে একরকম করে তোলে: পি ...) স্বাগতম আপনি কৃতিত্ব নিতে পারেন কারণ আমার সম্পাদনাটি আপনার চেয়ে পরে ছিল ....
JungHwan Min

নাহ, মার্টিন এেন্ডার যাইহোক আমার বেশিরভাগ ক্রেডিট পান। দুই বাইট কেন?
গ্রেগ মার্টিন

±ইউটিএফ -8-তে গ্রেগমার্টিন ( ম্যাথমেটিকা ইউটিএফ -8 ডিফল্টরূপে ব্যবহার করে; চেষ্টা করুন $CharacterEncoding) একটি দ্বি-বাইট অক্ষর (ইউ + 00 বি 1)।
জংহওয়ান মিন

@ জেএইচএম ইউটিএফ -8 উইন্ডোজে ডিফল্ট অক্ষর এনকোডিং নয় । গাণিতিক একক বাইট কোড পৃষ্ঠাতে উত্স ফাইলগুলি পড়তে পারে যা এতে অন্তর্ভুক্ত রয়েছে ±
মার্টিন ইন্ডার

1
উইন্ডোজ, যা হয়েছে @ASimmons আমার তাজা ম্যাথামেটিকাল ইনস্টলেশন $CharacterEncodingসেট WindowsANSIযা (যার জন্য আইএসও 8859-1 সঙ্গে পর্যাপ্ত সামঞ্জস্যপূর্ণ CP1252 হয় ±এবং ·একটি একক বাইট জন্য ব্যবহারযোগ্য হতে)।
মার্টিন এন্ডার

7

সি ++ 14, 178 176 174 155 142 135 বাইট

নমন

#include<list>
#include<algorithm>
[](auto&l){auto e=end(l),b=begin(l);l.size()^count(b,e,*b)?++*min_element(b,e):(l.push_back(1),0);};

আবাহন

std::list<int> s = {4, 4, 9, 4};

//invoke like this
auto i = [](auto&l){auto e=end(l),b=begin(l);l.size()^count(b,e,*b)?++*min_element(b,e):(l.push_back(1),0);};
i(s);

//or like that
[](auto&l){auto e=end(l),b=begin(l);l.size()^count(b,e,*b)?++*min_element(b,e):(l.push_back(1),0);}(s);

ungolfed

#include <list>
#include <algorithm>
#include <iostream>
using namespace std;

void i(list<int>& l) {
    auto e = l.end(), b = l.begin();

    if (l.size() == count(b, e, l.front())) {
        l.push_back(1);
    } else {
        ++*min_element(b, e);
    }
}

int main() {
    list<int> s = {4, 4, 9, 4};

    //invoke like this
    i(s);

    for (auto o:s)
        std::cout << o << ' ';
    std::cout << std::endl;
}

এটি আমার প্রথমবারের মতো গল্ফ খেলছে, সাহায্যের প্রশংসা করা হচ্ছে।

সম্পাদনা: আপনাকে কমপক্ষে এটি সংকলন করতে হবে তা উল্লেখ করতে ভুলে গেছেন -std=c++11 -std=c++14

সম্পাদনা 2: আমি বুঝতে পারি যে আমি অন্তর্ভুক্ত থাকা জায়গাগুলি ছেড়ে দিতে পারি #include <list>

EDIT3: প্রতিস্থাপন l.begin()করে আরও দুটি বাইট সংরক্ষণ করেছেbegin(l)

এডিআইটি 4: @ কেন্টিনের জন্য আরও 19 টি (!) বাইট সংরক্ষণ করেছে (তার মন্তব্য দেখুন)

EDIT5: কোয়ান্টিন 13 আরও বাইট বন্ধ, ধন্যবাদ!

EDIT6: যেমন TuukkaX নির্দিষ্ট, নামহীন lambdas / ফাংশন তাই আমি মুছে চলা auto i=bytecount মধ্যে


5
আমি আপনাকে সি ++ দিয়ে সহায়তা করতে পারি না, তবে আমি বলতে পারি: পিপিসিজিতে আপনাকে স্বাগতম!
জাগারব

1
আমি মনে করি আপনার #includeলাইনের ফাঁকির দরকার নেই ।
খ্রিস্টান সিভর্স

ওহ আপনাকে ধন্যবাদ আমি নিজেই এটি উপলব্ধি করেছি :)
নিওপ

1
একটি ল্যাম্বডা ( auto i=[](auto&l){...};) এর সাথে ফাংশনটি প্রতিস্থাপন করা একটি বাইট সাশ্রয় করে (আপনি যদি ভুলে গিয়েছেন এমন রিটার্নের ধরণটি যদি আমরা গণনা করি তবে আরও বেশি;)) অপারেটরগুলির ^ পরিবর্তে ==এবং অদলবদল করে অন্যটি সংরক্ষণ করে। std::listএর পুনরাবৃত্তি অবশ্যই std::ক্লাস, সুতরাং আপনি std::উভয় থেকে ড্রপ std::countএবং std::min_elementADL (-10) ধন্যবাদ করতে পারেন । l.front()এছাড়াও *b(-7)। আমি একটি 120-বাইট সহ শেষ করছি auto i=[](auto&l){auto e=end(l),b=begin(l);l.size()^count(b,e,*b)?void(++*find(b,e,*min_element(b,e))):l.push_back(1);};:)
কোয়ান্টিন

1
যখন আমরা এটিতে এসেছি, ডকুমেন্টেশনেstd::min_element বলা হয়েছে যে এটি প্রথম ক্ষুদ্রতম উপাদানটি ফেরত দেয় , তাই find()অতিমাত্রায় হয়, এটি 11 বাইট। শর্তসাপেক্ষে, এক জোড়া বন্ধনীর সাহায্যে এবং কমা অপারেটরকে বাধ্যতামূলক করতে ডান এক্সপ্রেশনটি intবাম দিকে void2 বাইটে কাস্টিংয়ের চেয়ে কম । এটি auto i=[](auto&l){auto e=end(l),b=begin(l);l.size()^count(b,e,*b)?++*min_element(b,e):(l.push_back(1),0);};142 বাইট :)
কোয়ান্টিন

6

05 এ বি 1 ই , 21 20 16 বাইট

আদনানকে ধন্যবাদ 4 বাইট সংরক্ষণ করা ।

DÙgi0¸«}ÐWksgÝQ+

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

ব্যাখ্যা

                      # input = [3,2,1] used as example
D                     # duplicate input
 Ùgi                  # if all elements are equal
    0¸«}              # append 0
        Ð             # triplicate list
                      # STACK: [3,2,1], [3,2,1], [3,2,1]
         Wk           # index of minimum element
                      # STACK: [3,2,1], [3,2,1], 2
           s          # swap top 2 elements of stack
                      # STACK: [3,2,1], 2, [3,2,1]
            g         # length of list
                      # STACK: [3,2,1], 2, 3
             Ý        # range [0 ... length]
                      # STACK: [3,2,1], 2, [0,1,2,3]
              Q       # equal
                      # STACK: [3,2,1], [0,0,1,0]
               +      # add
                      # OUTPUT: [3,2,2]

আমি মনে করি DÙgi0¸«}ÐWksgÝQ+এটিও কাজ করে।
আদনান

@Adnan: আরে, চমৎকার ধারণা ব্যবহার ÝQসঙ্গে k। ধন্যবাদ!
এমিগানা

5

স্ক্র্যাচ, 25 34 ব্লক + 7 6 বাইট

কার্যক্রম

পূর্ণসংখ্যার পূর্বনির্ধারিত অ্যারে হিসাবে ইনপুট নেয়। নোট করুন যে অ্যারেগুলি স্ক্র্যাচগুলিতে 1-ইনডেক্সযুক্ত।

পাইথনে, এটি দেখতে দেখতে এমন হবে: (দ্রষ্টব্য যে স্ক্র্যাচের বিপরীতে পাইথনটি 0-সূচিযুক্ত)

lowval = 0
hival = 0
n = 1
for i in range(len(input)):
    if(input[i] < input[lowval]):
        lowval = i
    if(input[i] > input[hival]):
        hival = i
    # No increment statement needed because python.
if(lowval == hival):
    input.append(1)
else:
    input[lowval] += 1
print(input)

গল্ফিং মন্তব্য দয়া করে?
OldBunny2800

কেন আপনি fval ঘোষণা?
ক্রিস্টোফ

আমার কাছে মনে হচ্ছে রঙগুলি সহ সরল পাঠ্যে স্ক্র্যাচ কেবল পাইথন ...
স্টিভি গ্রিফিন

এবং 1-ইনডেক্সেড অ্যারে এবং কোনও এলিফ স্টেটমেন্ট নেই!
OldBunny2800

1
গুড পয়েন্ট @ ক্রিসটফ! এটি পূর্বের সংস্করণটির অংশ ছিল যা গল্ফ আউট হয়েছিল। সম্পাদনা করা।
OldBunny2800

4

জে, 25 22 বাইট

(+~:*[=<./)@,0#~1=#@~.

একটি বেনাম ক্রিয়াটি মূল্যায়ন করে। এটি অনলাইন চেষ্টা করুন!

ব্যাখ্যা

(+~:*[=<./)@,0#~1=#@~.  Input is y.
                  #@    Is the length of
                    ~.   deduplicated y
                1=       equal to 1?
            ,0#~        Append that many 0s to y (one or none).
(         )@            Call the result z and apply this verb to it:
      =                  take the bit array of equality
     [                   between z
       <./               and its minimum element,
    *                    multiply that element-wise by
  ~:                     the bit array of first occurrences in z
 +                       and add the result to z.

3

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

t&=?1h}t2#X<wQw(

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

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

t         % Take input implicitly. Duplicate
&=        % Matrix of all pairwise equality comparisons
?         % If all comparisons were true
  1h      %   Append 1 to the original copy ofthe array
}         % Else
  t       %   Duplicate array
  2#X<    %   Push minimum and index of its first occurrence
  wQw     %   Swap, increment, swap (adds 1 to the minimum)
  (       %   Assign the incremented minimum to that position
          % End if implicitly. Display implicitly

3

গণিত, 56 বাইট

±{b:a_ ..}:={b,1};±a_:=a/.{p___,b:Min@a,q___}:>{p,b+1,q}

নামকরণ ফাংশন ব্যবহার করে ±। ISO8859-1 এনকোডিং ব্যবহার করে

বিকল্প সমাধান (58 বাইট)

±{b:a_ ..}:={b,1};±{p___,b_,q___}/;b<=p~Min~q:={p,b+1,q}
(* @GregMartin and I both independently came up with this above solution *)

±{b:a_ ..}:={b,1};±a:{p___,b_,q___}/;b==Min@a:={p,b+1,q}

ব্যবহার

±{1, 1}

{1, 1, 1}

±{3, 4, 5}

{4, 4, 5}


3

হাস্কেল, 71 70 62 বাইট

f(a:b)|(x,y:z)<-span=<<(<).minimum$a:b++[0|all(a==)b]=x++y+1‌​:z

@ জগারব 8 টি বাইট সংরক্ষণ করেছে, ধন্যবাদ!

আমি যখন শুরু করি তখন কিছু গাঁটছড়া বাঁধার কৌশল সম্পর্কে আশা করি, তবে @ জাগার্বের পথটি ঠিক ততটাই আশ্চর্যজনক।


কিছু পুনর্গঠন, 62 বাইট:f(a:b)|(x,y:z)<-span=<<(<).minimum$a:b++[0|all(a==)b]=x++y+1:z
জাগারব

@ জগারব ঠিক বাহ!
খ্রিস্টান সিভর্স

ওহ, আমার মস্তিষ্ক ফাংশনগুলির monad উদাহরণের জন্য
ধরণটি নির্ধারণ

@ অ্যাঙ্গস দ্য মোনাড (->)r, যা প্রকারভেদে প্রয়োগ হয় (->)r a = r->a। তারপরে return:: a->r->aএবং এর (>>=)::(r->a)->(a->r->b)->(r->b)প্রয়োগগুলি থেকে (আমি কি এটি বলার সাহস করি?) সুস্পষ্ট: return=constএবং m>>=f = \r->f(m r)r। পরেরটি হ'ল কেবল একবার span(predicate_depending_on l)lউল্লেখ করার সময় এর মতো কিছু প্রকাশ করার জন্য যা প্রয়োজন l। এখন আমার কেবল এটির প্রয়োজন যখন প্রয়োজন হয়।
ক্রিশ্চান সিভর্স

@ অ্যাংসগুলি আপনি আমাদের হাসকল গল্ফ টিপস সংগ্রহে এই কৌশলটি এবং আরও অনেকগুলি খুঁজে পেতে পারেন ।
Zgarb

3

সি #, 123 121 120 79 77 বাইট

using System.Linq;l=>{if(l.All(o=>o==l[0]))l.Add(0);l[l.IndexOf(l.Min())]++;}

ফাংশনে পাস হওয়া যুক্তিটি সংশোধন করে।

3 বাইট বাঁচানোর জন্য সাইয়েসকে ধন্যবাদ ! -> !Anyথেকে All, +=1থেকে ++

বর্ধমান 43 বাইট সংরক্ষণ করার জন্য TheLethalCoder কে ধন্যবাদ ! -> সরানো পদ্ধতি স্বাক্ষর কোড। প্যারামিটার তালিকার চারপাশে অপসারণ করা বন্ধনী।


আপনি প্রতিস্থাপন করতে পারে !l.Any(o=>o!=l[0]))সঙ্গে l.All(o=>o==l[0])?
সাইয়েস

@ কিয়েস এটি সত্যই করে। আমি একই জিনিসটি ভেবেছিলাম, তবে Anyপরিবর্তে লিখেছি Allএবং এই চিন্তায় ছিলাম যে এটি কার্যকর হয় না: ডি থ্যাঙ্কস!
Yytsi

2
সি # আছে না ++?
সাইয়েস

Action<List<int>>সমস্ত পদ্ধতিতে স্বাক্ষর কোডটি মুছে ফেলার জন্য আপনি
একটিতে

1
@ স্টেফান হুম। আমি অনেক লোককে usingসি # এর সাথে প্রয়োজনীয় এস ড্রপ করতেও দেখেছি , তাই আমি বিশ্বাস করি না যে এটি ছেড়ে দেওয়া আইনসম্মত using System.Linq। যতক্ষণ না আমি একটি স্পষ্ট বিবৃতি না দেখি যা বলে যে এটি প্রয়োজনীয় নয়, আমি এই সাথেই থাকব। যদিও পরামর্শ জন্য ধন্যবাদ! :)
ইয়াতসি

2

পার্ল 6 , 46 বাইট

{.[[==]($_)??.elems!!.first(*==.min,:k)]++;$_}

(ইনপুট অ্যারে সংশোধন করে, এবং এটি ফেরত দেয়)

সম্প্রসারিত:

{     # bare block lambda with implicit parameter 「$_」

  .[      # use the following as an index into the array

      [==]( $_ )    # reduce the array with 「&infix:<==>」

    ??              # if they are equal

      .elems        # the value past the end ( 「.end+1」 would also work )

    !!              # else

      .first(       # find the first value
        * == .min,  # where the element is equal to the minimum
        :k          # return the key rather than the value
      )

  ]++;              # increment it ( auto vivifies if it doesn't exist )

  $_                # return the modified array
}


2

জেলি, 9 বাইট

;1µ‘i¦E?Ṃ

-২ বাইটের জন্য ডেনিসকে ধন্যবাদ।

শরীরের কমপক্ষে 30 টি অক্ষর হওয়া উচিত; তুমি প্রবেশ করেছিলে ... .


আপনার যদি শরীরে প্রবেশের অতিরিক্ত অক্ষর থাকে তবে কোডটি ব্যাখ্যা করার জন্য এটি সর্বদা মূল্যবান, যা প্রত্যেককে এটি বুঝতে সহায়তা করে এবং উত্তরটিকে আরও আকর্ষণীয় করে তোলে :)
অ্যালফি গুডাক্রে

2

ম্যাথামেটিকা, 53 বাইট 57 বাইট 59 বাইট

If[Equal@@#,#~Join~{1},x=#;x[[#~FirstPosition~Min@#]]++;x]&

7
এটি 57 বাইট। এবং একটি 3 বাইট অক্ষর। এছাড়াও, আপনার কোডটি কাজ করে না কারণ {##,1}অংশটি বোঝায় যে ইনপুটটি পৃথক পূর্ণসংখ্যার (অর্থাত্ f[1, 2, 3]) তবে x=#অংশটি বোঝায় যে ইনপুটটি একটি List(ie f[{1, 2, 3}])। একটি দ্রুত ফিক্স হ'ল আপনার কোড 59 বাইট লম্বা করে কাঁচা পূর্ণসংখ্যাকে ইনপুট হিসাবে পরিবর্তন x=#করা x={#}এবং গ্রহণ করা।
জংহওয়ান মিন

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

1
আমি মনে করি আপনি বোঝাতে চাইছেন Equal@#যদিও #==##এটি সংক্ষিপ্ত is
মার্টিন এন্ডার

তুমি ঠিক বলছো. আমি লিস্টের পরিবর্তে একাধিক যুক্তি গ্রহণ করার জন্য @ জেএইচএম প্রতি পরিবর্তন করেছি কিন্তু সর্বত্র পরিবর্তনটি প্রচার করি নি। প্রম্পটের সাথে সামঞ্জস্যপূর্ণ হওয়ায় আমি একটি তালিকা গ্রহণ করতে ফিরে গিয়েছি।
নেজেনিসিস

2

আর , 72 66 65 বাইট

"if"(any((x=scan())-x[1]),"[<-"(x,u<-which.min(x),1+x[u]),c(x,1))

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

বৃদ্ধিটি ব্যবহার করে করা হয় which.minযা প্রথম ম্যাচটি দেয় returns "[<-"মানটি প্রতিস্থাপন করতে দেয় এবং এক ফাংশন কলে পরিবর্তিত ভেক্টরকে ফিরিয়ে দেয়।

-7 বাইট জিউসেপ্পিকে ধন্যবাদ!



@ জিউস্পেপ আমি সত্য চেষ্টা করেছি এবং এসডি সহ এটিই গল্ফিয়ার নয় :(
জয়সি

হেহ, 65 বাইট প্রতিস্থাপন !=সঙ্গে -!
জিউসেপ

@ জিউসেপ অবশ্যই!
জয়সি

1

রুবি, 46 বাইট

->a{a.uniq.size<2?a<<1:a[a.index(a.min)]+=1;a}

আমি মনে করি যে সমস্ত উপাদানগুলির তুলনায় একই উপাদান রয়েছে কিনা তা যাচাই করার আরও ভাল উপায় আছে a.uniq.size<2তবে এটি সন্ধান করতে আমি খুব অলস।


6
a.uniq[1]যদি আলাদা মান থাকে তবে সত্যবাদিতা হবে।
হিস্টোক্র্যাট

আপনি বাঁক দ্বারা একটি বাইট সংরক্ষণ করতে পারবেন a[a.index(a.min)]মধ্যেa[a.index a.min]
Cyoce

1

অক্টাভা, 69 67 64 বাইট

এটি উভয় inputএবং ব্যবহারের চেয়ে সম্পূর্ণ নামকরণের ফাংশনটি তৈরি করা খাটো ছিল disp

লুইসের জন্য 3 বাইট সংরক্ষণ করা হয়েছে।

function x=f(x)
[a,b]=min(x);if any(x-a),x(b)++;else x=[x,1];end

পুরানো উত্তর, কোনও ফাংশন ব্যবহার না করে:

[a,b]=min(x=input(''));if any(x-a),x(b)++;else x(end+1)=1;end;disp(x)

1

আর, 97 বাইট

if(all((a=scan())==a[1])){a=c(a,1)}else{while(!all(a==a[1])){a[which(a==min(a))][1]=min(a)+1}};a

খুব খারাপ যে সংশ্লেষটি x=+1আর-তে উপস্থিত নেই!

অসমাপ্ত:

if(all((a=scan())==a[1]))
{
    a=c(a,1)
}
else
{
    while(!all(a==a[1]))
    {
        a[which(a==min(a))][1]=min(a)+1
    }
a

1

টিআই-বেসিক, 53 বাইট

If min(not(ΔList(Ans
Then
Ans->L1
cumSum(1 or Ans
min(Ans+ᴇ9(L1≠min(L1
L1(Ans)+1->L1(Ans
Else
augment(Ans,{1
End

1

মতলব, 83 , 77 , 71 বাইট

function a=x(a)
if~nnz(a-a(1));a=[a,1];else[~,I]=min(a);a(I)=a(I)+1;end

আমি কোড গল্ফ তুলনামূলকভাবে নতুন তাই দয়া করে দয়া করুন! আমি বেনামে ফাংশনগুলি ব্যবহার করার চেষ্টা করেছি তবে গুগলিং বলেছে / / অন্যের বিবৃতিতে এবং মাতালাবের টের্নারি অপারেটর না থাকলে আপনি এটি ব্যবহার করতে পারবেন না, তাই আমি অনুভব করতে পেরেছিলাম এটি সবচেয়ে ভাল।

সম্পাদনা করুন: স্টিও-গ্রিফিনকে ধন্যবাদ এবং সংক্ষিপ্ত করে (দুবার!)


পিপিসিজিতে আপনাকে স্বাগতম! এই কোডটিতে কিছু ত্রুটি রয়েছে। sum(a)/length(a)==a(1)গ্যারান্টি দেয় না যে সমস্ত উপাদান সমান, এটি কেবল দেখায় যে গড়ের সমান a(1)। এটি করার একটি সহজ উপায় হবে mean(a)==a(1)numelএর চেয়ে এক বাইট কম length, তবে যেহেতু আপনি জানেন যে সমস্ত মান ইতিবাচক, আপনি এটি ব্যবহার করতে পারেন nnzযা আরও ছোট হয় (এটি এখনও এই চ্যালেঞ্জের সঠিক ফলাফল দিতে পারে না, তবে এটি কমপক্ষে সংক্ষেপে: পি)। আপনি যদি min(a)লুপটির সামনে কলটি গ্রহণ করেন , আপনি এটি থেকে উভয় আউটপুট ব্যবহার করতে পারেন এবং এর সমান allউপাদানগুলির চেক aকরতে পারেন min(a)
স্টিভি গ্রিফিন

তুমি ঠিক! এটি ব্যর্থ হয় যখন গড়টি প্রথম মৌলের সংখ্যার সমান হয়। আমি মনে করি আমার নতুনটি সঠিক এবং সংক্ষেপেও। যুক্তিটি হ'ল যদি অবশিষ্ট উপাদানগুলি প্রথম উপাদানটির সমান না হয় তবে একটি (a a = a (1)) বাকী উপাদানগুলি প্রদান করে যা সংজ্ঞা অনুসারে একটি অ-অ্যারেতে 0 এর চেয়ে বড়। তারপরে গণনা করা এবং না করা উচিত বলে মনে করি সঠিক যুক্তি দেওয়া উচিত। যদি এখনও এটি ভুল হয় তবে দয়া করে আমাকে জানান, আমি কয়েক বছর ধরেই কোডিং করছি এবং এখনও আমার অনেক দীর্ঘ পথ বাকি রয়েছে।
ওভেন মরগান

~nnz(a(a~=a(1)))সহজভাবে ~nnz(a-a(1))। এছাড়াও, আপনার প্রথম বন্ধনী প্রয়োজন নেই। if ~nnz(a-a(1));a=[a,1];else[~,I]=min(a);a(I)=a(I)+1;end। এটি 5 বাইট সংক্ষিপ্ত হওয়া উচিত (দ্রষ্টব্য: আমি এটি পরীক্ষা করে দেখিনি)।
স্টিভি গ্রিফিন

আপনি এর range(a)পরিবর্তে 3 বাইট সংরক্ষণ করতে পারবেনnnz(a-a(1))
MattWH

@ বাবাকোয়াক, সেই কোডটি পরীক্ষা করে যে উপাদানগুলির সংখ্যা aসেই ভেক্টরের সর্বনিম্ন মানের সমান। একটি ভেক্টর a = [3 4 6]ফলাফল trueএবং একটি ভেক্টর a = [4 4 6]ফলাফল হবে false। আমি মনে করি না যে এখানে দরকারী হবে ...?
স্টিভি গ্রিফিন

1

ক্লোজার, 112 100 বাইট

দুর্ভাগ্যক্রমে min-keyসর্বনিম্ন সূচকের শেষ সূচকটি প্রদান করে, প্রথমটি নয়। এটি 10 ​​^ 9 উপাদানগুলির চেয়ে পূর্ণসংখ্যা ইনপুট এবং সংক্ষিপ্ত অ্যারেগুলির জন্য কাজ করে;)

সম্পাদনা করুন: এর (apply = a)পরিবর্তে একটি বেনামি ফাংশন সংজ্ঞায়িত করা (= 1(count(set a)))

(fn[a](if(apply = a)(conj a 1)(update a(apply min-key #(+(nth a %)(* % 1e-9))(range(count a)))inc)))

মূল:

(defn f[a](if(= 1(count(set a)))(conj a 1)(update a(apply min-key #(+(nth a %)(* % 1e-9))(range(count a)))inc)))

একটি কম হ্যাকি 134-বাইট সমাধানটি আপডেট করার আগে ভেক্টরটিকে বিপরীত করে এবং তারপরে আবার এটিকে বিপরীত করুন:

(defn f[a](if(= 1(count(set a)))(conj a 1)(let[r #(vec(reverse %))a(r a)](r(update a(apply min-key #(nth a %)(range(count a)))inc)))))

1

জাভা 8, 85 + 38 = 123 বাইট

অকার্যকর ল্যাম্বদা নেওয়া List<Integer>(আউটপুটটি মিউটেটেড ইনপুট হয়)। বাইট কাউন্টে ল্যাম্বদা এবং প্রয়োজনীয় আমদানি অন্তর্ভুক্ত।

import static java.util.Collections.*;

l->{if(min(l)==max(l))l.add(0);int i=0,n;while((n=l.get(i))>min(l))i++;l.set(i,n+1);}

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

এই পদ্ধতিটি আমদানির সাথে এটি পাইথনের মতো দেখতে প্রায় ...


1

ম্যাটল্যাব, 66 53 বাইট

if(range(a))[~,b]=min(a);a(b)=a(b)+1;else;a=[a 1];end

আউটপুট:

আরম্ভ:

a = [3 2]

ধারাবাহিক রান:

[3 2] -> [3 3] -> [3 3 1] -> [3 3 2] -> [3 3 3] -> [3 3 3 1] ...

2
আপনি ইনপুটগুলিকে হার্ডকোড করতে পারবেন না, আপনার মতো কিছু করা দরকার @(x) …
12

1

স্মাইলব্যাসিক 3, 101 বাইট

একটি বিবৃতি ফাংশন সংজ্ঞা দেয় I Aযেখানে Aআমাদের সংখ্যার পূর্ণসংখ্য অ্যারে রয়েছে। ইনপুটটি সংশোধন করে আউটপুট অর্জন করা হয় (অ্যারেগুলি রেফারেন্স হিসাবে রয়েছে))

DEF I A
M=MIN(A)IF M==MAX(A)THEN PUSH A,1RETURN
FOR C=0TO LEN(A)IF M==A[C]THEN INC A[C]BREAK
NEXT
END

আপনি প্রতিস্থাপন 2 বাইট সংরক্ষণ করতে পারবেন BREAKসঙ্গে M=0, কারণ Aথাকতে পারে না 0তাই M==A[C]সত্য হতে হবে।
12Me21

1

স্মাইলব্যাসিক, 77 বাইট

DEF I A
IF MIN(A)==MAX(A)THEN PUSH A,0
WHILE A[I]>MAX(A)I=I+1WEND
INC A[I]END

0

পাইথ, 16 বাইট

?tl{QXxQhSQQ1+Q1

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

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

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

?tl{QXxQhSQQ1+Q1  Program. Input: Q
?                 If:
  l                The length
   {Q              of Q deduplicated
 t                 - 1
                   is non-zero:
     X     Q1       Increment in Q at index:
      xQ             Index in Q of
        h            the first element
         SQ          of Q sorted (minimum)
                  else:
             +     Append
               1   1
              Q    to Q
                   Implicitly print                    

0

হাস্কেল, 93 বাইট

f z|and$(==)<$>z<*>z=z++[1]|1>0=z#minimum z where(x:z)#m|x==m=x+1:z;(x:z)#m|1>0=x:z#m;[]#_=[]

Ungolfed:

incrementArray :: [Int] -> [Int]
incrementArray xs | and [x == y | x <- xs, y <- xs] = xs ++ [1]
                  | otherwise = g xs (minimum xs)
     where g (x:xs) m | x == m = (x + 1):xs
           g (x:xs) m | otherwise = x:g xs m
           g [] _ = []

প্রাথমিক প্রচেষ্টা, পরে আরও পরিশীলিত কিছু নিয়ে আসার চেষ্টা করবে।


1
কেন ব্যবহারের পরিবর্তে আলাদা ফাংশন করবেন না where?
মাইকেল ক্লেইন

0

আশ্চর্য , 44 বাইট

@[dp1unq#0?:=#[:0(iO f\min#0)#0+1f]#0?++#0 1

আমি এই ভাষাটি তৈরি করার সময় আমার মনে ছিল না ... এটি পঠনযোগ্যতার দিক থেকে পার্লের চেয়ে আক্ষরিক অর্থে খারাপ!

ব্যবহার:

(@[dp1unq#0?:=#[:0(iO f\min#0)#0+1f]#0?++#0 1])[3 4 9 3]

ব্যাখ্যা

আরও পঠনযোগ্য:

@[
  dp 1 unq #0
    ? set #[
            get 0 (iO f\ min #0) #0
            + 1 f
           ] #0
    ? con #0 1
 ]

মূলত আর্গুমেন্টের অনন্য সাবসেট থেকে 1 টি আইটেম বাদ দেওয়া তালিকাটি খালি করে কিনা তা পরীক্ষা করে। যদি না হয়, তবে আমরা অ্যারের সর্বনিম্ন বৃদ্ধি করি। অন্যথায়, আমরা কেবল 1 টি যুক্তি দিয়ে সম্মতি জানাই।


0

কোটলিন, 75 বাইট

fun a(s:MutableList<Int>){if(s.toSet().size<2)s+=0;s[s.indexOf(s.min())]++}

ফাংশন যুক্তি সংশোধন করে।

মজাদার টাইপিং! :MutableList<Int>একা 17 বাইট জন্য অ্যাকাউন্ট। দুর্ভাগ্যক্রমে, কোনও ধরণের অনুমান করা যায় এমন কোনও সমাধান আছে বলে আমি মনে করি না।

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