C++ Library Extensions 2022.12.09
To help learn modern C++ programming
015-set-trio.cpp
Go to the documentation of this file.
1#include <tpf_ncrnpr.hpp>
2#include <tpf_output.hpp>
3
4namespace types = tpf::types;
5namespace ncrnpr = tpf::ncrnpr;
6namespace output = tpf::output;
8
10{
11 tpf::console stream;
12 auto nl = output::nl();
13 auto nL = output::nL();
14
19
20 set_t people{"Alice", "Benjamine", "Charles", "Dracula"};
21
22 size_t n = people.size();
23
25
26
27 using m_th_t = ncrnpr::combination::m_th_t;
28
29 for(size_t r=0; r <= n; ++r)
30 {
31 combinations.set_r(r);
32
33 for(m_th_t m_th = 0; m_th < combinations(); ++m_th)
34 {
35 stream << ncrnpr::build_combination(m_th, people, r) << nl;
36 }
37 }
38}
39
41{
42 tpf::console stream;
43 auto nl = output::nl();
44 auto nL = output::nL();
45 auto newline = "\n";
46
51
52 set_t people{"Alice", "Benjamine", "Charles", "Dracula"};
53
54
55 auto sets = ncrnpr::build_combination_indices<std::vector>(5);
56
57 for(auto& duet: sets)
58 {
59 auto& [selected_set, complement_set] = duet;
60
61 stream << selected_set << " - " << complement_set << newline;
62 }
63
64 stream << nl;
65}
66
67
69{
70 tpf::console stream;
71 auto nl = output::nl();
72 auto nL = output::nL();
73 auto newline = "\n";
74
79
80 set_t include_set{2, 3, 5};
81
82
83 auto sets = ncrnpr::build_combination_including_indices<std::vector>
84 (include_set, 9);
85
86 for(auto& duet: sets)
87 {
88 auto& [selected_set, complement_set] = duet;
89
90 stream << selected_set << " - " << complement_set << newline;
91 }
92
93 stream << nl;
94}
95
97{
98 tpf::console stream;
99 auto nl = output::nl();
100 auto nL = output::nL();
101 auto newline = "\n";
102
103 using set_tag = tpf::set_tag<std::vector, size_t>;
107
108 set_t exclude_set{1, 3, 5, 7, 9};
109
110
111 auto sets = ncrnpr::build_combination_excluding_indices<std::vector>
112 (exclude_set, 9);
113
114 for(auto& duet: sets)
115 {
116 auto& [selected_set, complement_set] = duet;
117
118 stream << selected_set << " - " << complement_set << newline;
119 }
120
121 stream << nl;
122}
123
124
125int main()
126{
127 // examples_build_combinations();
128 // examples_build_combinations_include();
130}
void examples_build_combinations_exclude()
void examples_build_combinations_include()
void examples_build_combinations()
int main()
void examples_set_alias()
Definition: 015-set-trio.cpp:9
auto nl
auto nL
Definition: 020-random.cpp:21
constexpr size_t combinations
std::deque< element_t > set_t
Definition: 061-subsets.cpp:9
tpf::sstream stream
String conversions are implemented.
Implements nCr, nPr.
Definition: tpf_ncrnpr.hpp:64
Stream output operators are defined.
Definition: tpf_output.hpp:58
Type to string name conversions are defined.
Definition: 31-visit.cpp:7
typename SetTagType::set_t set_t
Definition: tpf_types.hpp:1966
typename SetTagType::duet_set_t duet_set_t
Definition: tpf_types.hpp:1981
typename SetTagType::set_element_t set_element_t
Definition: tpf_types.hpp:1963
Stream output operators << are implemented.