При экспериментах с вардрайвингом столкнулся с отсутствием словаря дат, решил поправить, вот скрипты на С++ и shell для создания словаря.
Для спортивного интереса обозначу что на написание и отладку кода на С++ мне понадобилось минут 15, на shell я убил часа 4
, потому что приходилось догадываться где и что не так написано (консоль при неправильно коде просто закрывалась, без ошибки + пока наловчился, первый раз что-то серьёзней набора команд писал.)
На shell делал из соображений нафига козе баян? (на кой чёрт компилировать, если можно нативно)
По поводу кода на С++, я знаю что его можно улучшить и написать ещё четырьмя альтернативными способами, но в данном случае способ второстепеннен.
Выкладываю чтобы не потерялись.
#!/bin/bash
dd1=0 #первое число даты
dd2=0 #второе число даты
mm1=0 #первое число месяца
mm2=0 #второе число месяца
yy=1700 #!!!<1000, начальныйгод, редактируем по потребностям
#для 6 значных кодов убираем первых 2 символа
yy1=2021 #конечный год -||-
out=Bdate.txt
while [[ $yy < $yy1 ]]
do
((dd2++))
if [[ $dd2 = 10 ]]
then
dd2=0
((dd1++))
else
if [ $dd1 = 3 ] && [ $dd2 = 2 ]
then
dd1=0
dd2=1
((mm2++))
if [ $mm2 = 10 ]
then
mm2=0
((mm1++));
else
if [ $mm1 = 1 ] && [ $mm2 = 3 ]
then
mm1=0
mm2=1
((yy++))
fi
fi
fi
fi
echo $dd1$dd2$mm1$mm2$yy && echo $dd1$dd2$mm1$mm2$yy >> $out
done
read
#include <iostream>
#include <fstream>
int dd1 = 0, dd2 = 0;
int mm1 = 0, mm2 = 0;
int yy = 1800;
int yy1 = 2021;
void date();
void mm();
void file();
int main()
{
std::ofstream out;
out.open("output.txt");
for ( ; ; ) { #из-за отсутствия пробелов в () форум мне там смайлики рисовал =_=..
date();
out << dd1 << dd2 << mm1 << mm2 << yy << '\n';
if (yy==yy1) break;
}
return 0;
}
void date() {
dd2++;
if (dd2 == 10) {dd2 = 0; dd1++;}
else if (dd1 == 3 && dd2 == 2) {dd1=0; dd2=1; mm();}
}
void mm() {
mm2++;
if (mm2 == 10) {mm2 = 0; mm1++;}
else if (mm1 == 1 && mm2 == 3) {mm1=0; mm2=1; yy++;}
}