Функционал C++23 при вычислении строк в треугольнике ПаскаляC++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Функционал C++23 при вычислении строк в треугольнике Паскаля

Сообщение Anonymous »

Я изучаю современный C++ и являюсь адептом функциональной парадигмы. Вот ситуация: я хочу вычислить строки в треугольнике Паскаля, используя C++23 и его библиотеку диапазонов.
Вот реализация на Haskell (и я нахожу реализация чрезвычайно красивая):

Код: Выделить всё

pascal 0 = [1]
pascal n = zipWith (+) (0:pascal (n-1)) (pascal (n-1) ++ [0])
Реализация взята отсюда.
Ниже представлена ​​моя попытка реализовать это на C++23:

Код: Выделить всё

#include 
#include 
#include 

namespace stdv = std::views;

std::vector triangle_row(int n);
auto add = [](auto a, auto b) {return a + b; };

std::vector triangle_row(int n) {
if (n == 0) {
return {1};
}
else {
auto left = (triangle_row(n-1)).insert(triangle_row(n-1).begin(), 0);
auto right = (triangle_row(n-1)).insert(triangle_row(n-1).end(),0);
auto tri_row = stdv::zip_transform(add, left, right);
return tri_row;
}
}
Часть else в приведенной выше реализации вызывает следующую ошибку:

Код: Выделить всё

: In function 'std::vector triangle_row(int)':
:17:41: error: no match for call to '(const std::ranges::views::_ZipTransform) (&, __gnu_cxx::__normal_iterator&, __gnu_cxx::__normal_iterator&)'
17 |       auto tri_row = stdv::zip_transform(add, left, right);
|                      ~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~
...
Как я могу реализовать это (используя функциональную парадигму; то есть без циклов for и т. д.) правильно и более красиво?

Подробнее здесь: https://stackoverflow.com/questions/793 ... l-triangle
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C++»