001 #!/usr/bin/python
002 
003 from numpy import *
004 
005 
006 def check_date(z1, z2, z3, z4, z5, z6, z7, z8, day, month, year, fobj_out, found_years):
007     control_array = array( [-1, -1, -1, -1, -1, -1, -1, -1] )
008     check_array = array( [z1, z2, z3, z4, z5, z6, z7, z8] )
009     search_array = array( [0, 1, 2, 3, 4, 5, 6, 7] )
010 
011     check_flag = 1 #search_array == control_array
012 
013     for (check_outer in range(0, 8, 1):
014         for (check_inter in range(0, 8, 1):
015             if check_array[check_inter] == search_array[check_outer]:
016                 control_array[check_outer] = check_outer
017         check_flag = 1
018         for (count_check in range(0, 8, 1): #check if the sequence is complete (search_array == control_array
019             if control_array[count_check] != count_check:
020                 check_flag = 0
021         if check_flag == 1:
022             output_actual_day(day, month, year, fobj_out)
023             found_years += 1
024     return found_years
025 
026 def output_actual_day(day, month, year, fobj_out):
027     if (month+1) < 10:
028         if day < 10:
029             print('0' + repr(day) + '.0' + repr(month+1) + '.' + repr(year))
030             fobj_out.write('0' + repr(day) + '.0' + repr(month+1) + '.' + repr(year) + ' \n')
031         else:
032             print(repr(day) + '.0' + repr(month+1) + '.' + repr(year))
033             fobj_out.write(repr(day) + '.0' + repr(month+1) + '.' + repr(year) + ' \n')
034     else:
035         if day < 10:
036             print('0' + repr(day) + '.' + repr(month+1) + '.' + repr(year))
037             fobj_out.write('0' + repr(day) + '.' + repr(month+1) + '.' + repr(year) + ' \n')
038         else:
039             print(repr(day) + '.' + repr(month+1) + '.' + repr(year))
040             fobj_out.write(repr(day) + '.' + repr(month+1) + '.' + repr(year) + ' \n')
041 
042 def main():
043     months = array( [31,28,31,30,31,30,31,31,30,31,30,31] ) # days of a month
044 
045     found_years = 0
046 
047     fobj_out = open("dates.dat","w")
048     fobj_out2 = open("year_counts.dat","w")
049 
050     for (year in range(0, 3000, 1):
051         for (month in range(0, 12, 1):
052             for (day in range(1, months[month]+1, 1):
053 
054                 k1 = 0
055                 k2 = 0
056                 k3 = 0
057                 k4 = 0
058                 k5 = 0
059                 k6 = 0
060                 k7 = 0
061                 k8 = 0
062 
063                 if len(str(day)) == 2: #day ... 2 digit(10...31)
064                     k1 = int(repr(day)[0])
065                     k2 = int(repr(day)[1])
066 
067                 else: #day ... 1 digit long (0..9)
068                     k1 = int(repr(day)[0])
069 
070                 if len(str(month+1)) == 2: #month ... 2 digits
071                     k3 = int(repr(month+1)[1])
072                     k4 = int(repr(month+1)[0])
073                 else:
074                     k3 = int(repr(month+1)[0])
075 
076                 if len(str(year)) == 1:
077                     k5 = year
078                 elif len(str(year)) == 2:
079                     k5 = int(repr(year)[0])
080                     k6 = int(repr(year)[1])
081                 elif len(str(year)) == 3:
082                     k5 = int(repr(year)[0])
083                     k6 = int(repr(year)[1])
084                     k7 = int(repr(year)[2])
085                 else:
086                     k5 = int(repr(year)[0])
087                     k6 = int(repr(year)[1])
088                     k7 = int(repr(year)[2])
089                     k8 = int(repr(year)[3])
090 
091                 found_years = check_date(k1, k2, k3, k4, k5, k6, k7, k8, day, month, year, fobj_out, found_years) #format -> d d m m y y y y day month year file_out1
092                 print " " , year," - " , found_years ,
093         fobj_out2.write(str(year) + ' ' + str(found_years) + ' \n')
094         found_years = 0
095 
096 
097 #    print(year)
098     fobj_out.close()
099     fobj_out2.close()
100 
101 
102 if __name__ == "__main__":
103     main()