// Да, сначала мы делаем map, потому что он делается полюбому:
let doSomething$ = this.myApi.getSomething(id).pipe(
map(tags => ({ ...updatedShop, tags }))
)
// А затем мы делаем mergeMap если понадобится:
if (shop.isNew) {
doSomething$ = doSomething$.pipe(
mergeMap(() =>
this.myApi.addTags(updatedShop.id, shop.tags).pipe(
map(() => {
return {
...updatedShop,
tags: shop.tags
};
})
)
)
)
}
// ну и затем подписываемся на это дело чтоб оно начало работать:
doSomething$.subscribe();
this.myApi.getSomething(id).pipe(
map(tags => ({ ...updatedShop, tags })),
mergeMap((tags) => {
if (!shop.isNew) {
return of(tags);
}
return this.myApi.addTags(updatedShop.id, shop.tags).pipe(
map(() => {
return {
...updatedShop,
tags: shop.tags
};
})
)
}),
)
нет, костяк идеи: замер ускорения авто... (разумеется, outdoor)Для этого он точно не пойдет.
if ((dist[i, k] * dist[k, j] != 0) && (i != j))
#include <iostream>
#define INF 9000000
#define MatrixLen 5
/* Алгоритм Флойда — Уоршелла.*/
/* Исходная матрица расстояний */
int matrix[MatrixLen][MatrixLen] =
{
{0, 5, 2, INF, INF},
{5, 0, INF, 7, INF},
{2, INF, 0, 2, 8},
{INF, 7, 2, 0, 1},
{INF, INF, 8, 1, 0}
};
/* Поиск расстояния минимального пути от каждой до каждой вершины */
for (size_t k(0); k < MatrixLen; ++k)
for (size_t i(0); i < MatrixLen; ++i)
for (size_t j(0); j < MatrixLen; ++j)
if (matrix[i][k] < INF && matrix[k][j] < INF)
if (matrix[i][k] + matrix[k][j] < matrix[i][j])
matrix[i][j] = matrix[i][k] + matrix[k][j];
int from = 0;
int to = 4;
/* Теперь минимальное расстояние от любой до любой будет matrix[ОТКУДА][КУДА] */
std::cout << "Path length from " << from << " to " << to << " is " << matrix[from][to] << std::endl;