32 lines
989 B
Awk
32 lines
989 B
Awk
# syntax: GAWK -f PALINDROME_DATES.AWK
|
|
BEGIN {
|
|
show = 15
|
|
year_b = 2020
|
|
year_e = 9999
|
|
split("31,28,31,30,31,30,31,31,30,31,30,31",daynum_array,",") # days per month in non leap year
|
|
for (y=year_b; y<=year_e; y++) {
|
|
daynum_array[2] = (y % 400 == 0 || (y % 4 == 0 && y % 100)) ? 29 : 28
|
|
for (m=1; m<=12; m++) {
|
|
for (d=1; d<=daynum_array[m]; d++) {
|
|
ymd = sprintf("%04d%02d%02d",y,m,d)
|
|
if (substr(ymd,1,1) == substr(ymd,8,1)) { # speed up
|
|
if (ymd == reverse(ymd)) {
|
|
arr[++n] = ymd
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
printf("%04d0101-%04d1231=%d years, %d palindromes, showing first and last %d\n",year_b,year_e,year_e-year_b+1,n,show)
|
|
printf("YYYYMMDD YYYYMMDD\n")
|
|
for (i=1; i<=show; i++) {
|
|
printf("%s %s\n",arr[i],arr[n-show+i])
|
|
}
|
|
exit(0)
|
|
}
|
|
function reverse(str, i,rts) {
|
|
for (i=length(str); i>=1; i--) {
|
|
rts = rts substr(str,i,1)
|
|
}
|
|
return(rts)
|
|
}
|