#include <iostream>
#include <cassert>
bool is_different_digits(int value) {
assert(value >= 100 and value < 1000);
auto v1 = value % 10;
auto v2 = (value / 10) % 10;
auto v3 = (value / 100) % 10;
return (v1 != v2) and (v2 != v3) and (v3 != v1);
}
int main() {
unsigned count = 0;
for(auto i = 100; i < 1000; ++i) {
if (is_different_digits(i)) {
std::cout << i << '\n';
++count;
}
}
std::cout << "Liczb 3 cyfrowych których cyfry się różnią, jest w przedziale [100,100): " << count <<'\n';
}
#include <iostream>
#include <cassert>
bool is_different_digits(int value) {
assert(value >= 100 and value < 1000);
auto v1 = value % 10;
auto v2 = (value / 10) % 10;
auto v3 = (value / 100) % 10;
return (v1 != v2) and (v2 != v3) and (v3 != v1);
}
int main() {
unsigned count = 0;
for(auto i = 100; i < 1000; is_different_digits(i) and (std::cout << i << '\n', ++count), ++i);
std::cout << "Liczb 3 cyfrowych których cyfry się różnią, jest w przedziale [100,100): " << count <<'\n';
}
#include <string>
#include <iostream>
#include <unordered_set>
bool is_different_digits(unsigned value) {
auto value_str = std::to_string(value);
auto value_set = std::unordered_set<char>(value_str.cbegin(), value_str.cend());
return value_str.size() == value_set.size();
}
int main() {
auto count = 0;
for(auto i = 100U; i < 1000; ++i) {
if(is_different_digits(i)) {
std::cout << i << '\n';
++count;
}
}
std::cout << "Liczb 3 cyfrowych których cyfry się różnią, jest w przedziale [100,100): " << count <<'\n';
}
#include <string>
#include <iostream>
#include <unordered_set>
#include <array>
#include <numeric>
#include <algorithm>
#include <iterator>
bool is_different_digits(unsigned value) {
auto value_str = std::to_string(value);
auto value_set = std::unordered_set<char>(value_str.cbegin(), value_str.cend());
return value_str.size() == value_set.size();
}
int main() {
std::array<unsigned, 1000 - 100> values;
std::iota(values.begin(), values.end(), 100);
auto count = std::count_if(values.cbegin(), values.cend(), is_different_digits);
std::copy_if(values.cbegin(), values.cend(), std::ostream_iterator<unsigned>(std::cout, "\n"), is_different_digits);
std::cout << "Liczb 3 cyfrowych których cyfry się różnią, jest w przedziale [100,100): " << count <<'\n';
}
i tak do ranges, generatorów itp.. Nie wszystkie są wydajne ale starałem się by nie były (bardzo) typowe.