- 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
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
xxx: Теперь сделайте так, чтобы цифры выводились следующим образом (используя программу из предыдущего задания):
1
2 1
3 2 1
4 3 2 1
5 4 3 2 1
yyy:
#include <print>
inline constexpr std::size_t kSize = 5;
template <std::size_t N, std::size_t NN>
constexpr auto operator+(const std::array<char, N>& first, const std::array<char, NN>& second) -> std::array<char, N + NN> {
std::array<char, N + NN> response; // NOLINT
std::ranges::copy(first, response.begin());
std::ranges::copy(second, response.begin() + first.size());
return response;
};
auto main() -> int {
[]<std::size_t... Is>(std::index_sequence<Is...>) {
// clang-format off
([&]<std::size_t... IIs, std::size_t... IIIs>(std::index_sequence<IIs...>, std::index_sequence<IIIs...>) {
constexpr std::format_string<decltype(IIs)...> fmt = [] {
static constexpr auto response = ((std::ignore = IIIs, std::array{' ', ' '}) + ... + ((std::ignore = IIs, std::array{'{', '}', ' '}) + ... + std::array{'\0'}));
return response.begin();
}();
constexpr auto v = Is;
std::println(fmt, (v - IIs + 1)...);
}(std::make_index_sequence<Is + 1>(), std::make_index_sequence<kSize - Is - 1>()), ...);
// clang-format on
}(std::make_index_sequence<kSize>());
};