Trong nỗ lực đầu tiên của tôi tại mã golf cho nhiệm vụ "Trừ các số tiếp theo" tôi đã bắt đầu từ hàm (58 byte)
int f(int N, int P){int F;for(F=N;P;F-=++N,P--);return F;}
sau đó an toàn 5 byte khi chuyển sang lambda và di chuyển khởi tạo ra khỏi for
(53)
[](int N,int P){int F=N;for(;P;F-=++N,P--);return F;}
và cuối cùng sau khi chuyển từ for
sang while
tôi đã nhận được 51 byte:
[](int N,int P){int F=N;while(P--)F-=++N;return F;}
Mã kiểm tra không được mã hóa là một cái gì đó như:
#include <iostream>
int main(void)
{
int N, P;
std::cin >> N >> P;
auto f = [](int N,int P)
{
int F = N;
while (P--)
F -= ++N;
return F;
};
std::cout << f(N, P) << std::endl;
return 0;
}
CẬP NHẬT:
Trên thực tế for
có thể đạt đến độ dài tương tự như while
:
[](int N,int P){int F=N;for(;P--;F-=++N);return F;}