C ++ 14, 178176174155142135 바이트
제출
#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);
언 골프
#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
EDIT2 : 포함에 공백을 남길 수 있음을 깨달았습니다. #include <list>
EDIT3 :로 교체 l.begin()
하여 두 바이트를 더 절약 했습니다.begin(l)
EDIT4 : @Quentin 덕분에 19 (!) 바이트를 더 절약했습니다 (댓글 참조)
EDIT5 : Quentin이 13 바이트를 더 줄였습니다. 감사합니다!
EDIT6 : TuukkaX가 지적했듯이 이름이없는 람다 / 함수로 충분하므로 바이트 수 auto i=
에서