Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <vector>
- #include <algorithm>
- #include <string>
- #define YEAR 6
- #define isleap(y) (((y) % 4) == 0 && (((y) % 100) != 0 || ((y) % 400) == 0))
- int Dispersion(std::vector<int> vec) {
- int meanVec = 0; // Среднее значение чисел вектора
- int sum = 0; // сумма всех элементов массива
- int dispNum = 0; // Дисперсия
- for (int i : vec) {
- sum += i;
- }
- meanVec = sum / vec.size();
- for (int i : vec) {
- dispNum += ((i - meanVec) * (i - meanVec)) / vec.size();
- }
- return dispNum;
- }
- double closeNum(std::vector<double> vec, double R) {
- double min = abs(vec.at(0) - R);
- double output = 0.0;
- for (double x : vec) {
- if (abs(x - R) <= min) {
- min = abs(x - R);
- output = x;
- }
- }
- return output;
- }
- std::vector<int> EqNums(std::vector<int> vec) {
- std::vector<int> mas1;
- std::vector<int> mas2;
- std::vector<int> mas3;
- int prev = vec[0];
- int counter = 0;
- for (int i = 0; i < vec.size(); i++) {
- if (prev != vec[i]) {
- counter = 0;
- prev = vec[i];
- }
- mas2.push_back(counter++);
- }
- counter = 0;
- prev = vec[vec.size()-1];
- for (int i = vec.size()-1; i >= 0; --i) {
- if (prev != vec[i]) {
- counter = 0;
- prev = vec[i];
- }
- mas1.push_back(counter++);
- }
- std::reverse(std::begin(mas1), std::end(mas1));
- for (int i = 0; i < mas2.size(); i++) {
- mas3.push_back(mas1[i] > mas2[i] ? mas2[i] : mas1[i]);
- }
- return mas3;
- }
- bool isPolindrome(std::string str) {
- return str == std::string(str.rbegin(), str.rend());
- }
- std::string createOutputPolindromes(std::string date) {
- return date.substr(0, 2) + "." + date.substr(2, 2) + "." + date.substr(4);
- }
- std::string createDate(const std::string& year, const std::string& month, const std::string& day) {
- return day + month + year;
- }
- std::vector<std::string> datePolindrom(std::string dateStart, std::string dateEnd) {
- std::vector<std::string> Polindromes;
- int currentYear = std::stoi(dateStart.substr(YEAR)) - 1;
- int lastYear = std::stoi(dateEnd.substr(YEAR));
- while (++currentYear < lastYear) {
- std::string currentStringYear = std::to_string(currentYear);
- std::string currentStringOriginalYear = currentStringYear;
- std::reverse(currentStringYear.begin(), currentStringYear.end());
- std::string LastFourNumsInTheYear = currentStringYear.substr(currentStringYear.length() - 4);
- std::string stringDay = LastFourNumsInTheYear.substr(0, 2);
- std::string stringMonth = LastFourNumsInTheYear.substr(2,2);
- int intDay = std::stoi(stringDay);
- int intMonth = std::stoi(stringMonth);
- if (intMonth == 2) {
- if (!((isleap(std::stoi(currentStringOriginalYear)) && intDay < 30) || (!isleap(std::stoi(currentStringOriginalYear)) && intDay < 29))) {
- continue;
- }
- }
- if ((0 < intDay && intDay <= (31 - (intMonth - 1) % 7 % 2)) && (0 < intMonth && intMonth < 13)) {
- std::string potincailPolindrome = createDate(currentStringOriginalYear, stringMonth, stringDay);
- std::string potentialPalindromeReversed = createDate(currentStringYear, stringMonth, stringDay);
- if (isPolindrome(potincailPolindrome)) {
- std::string datePolindrome = createOutputPolindromes(potincailPolindrome);
- Polindromes.push_back(datePolindrome);
- }
- else if (potincailPolindrome != potentialPalindromeReversed && isPolindrome(potentialPalindromeReversed)) {
- std::string datePolindrome = createOutputPolindromes(potincailPolindrome);
- Polindromes.push_back(datePolindrome);
- }
- }
- }
- return Polindromes;
- }
- int main(){
- for (std::string str : datePolindrom("06.22.1000", "06.22.2261")) {
- std::cout << str << "\n";
- }
- return 1;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement