1. C++ / Говнокод #29054

    +1

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 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>());
    };

    Запостил: Fluttie, 07 Ноября 2024

    Комментарии (1) RSS

    • Лямбда в лямбде? Программист, вероятно, раньше на Лиспе писал.
      Ответить

    Добавить комментарий