সি ++ 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 মধ্যে