Initial data commit
This commit is contained in:
parent
72d218235f
commit
f23f22d71c
199087 changed files with 3378941 additions and 0 deletions
66
Task/Five-weekends/PureBasic/five-weekends.basic
Normal file
66
Task/Five-weekends/PureBasic/five-weekends.basic
Normal file
|
|
@ -0,0 +1,66 @@
|
|||
Procedure DateG(year.w, month.b, day)
|
||||
;Returns the number of days before or after the earliest reference date
|
||||
;in PureBasic's Date Library (1 Jan 1970) based on an assumed Gregorian calendar calculation
|
||||
Protected days
|
||||
days = (year) * 365 + (month - 1) * 31 + day - 1 - 719527 ;DAYS_UNTIL_1970_01_01 = 719527
|
||||
If month >= 3
|
||||
days - Int(0.4 * month + 2.3)
|
||||
Else
|
||||
year - 1
|
||||
EndIf
|
||||
days + Int(year/4) - Int(year/100) + Int(year/400)
|
||||
|
||||
ProcedureReturn days
|
||||
EndProcedure
|
||||
|
||||
Procedure startsOnFriday(year, month)
|
||||
;0 is Sunday, 1 is Monday, ... 5 is Friday, 6 is Saturday
|
||||
Protected referenceDay = DayOfWeek(Date(1970, 1, 1, 0, 0, 0)) ;link to the first day in the PureBasic's date library
|
||||
Protected resultDay = (((DateG(year, month, 1) + referenceDay) % 7) + 7) % 7
|
||||
If resultDay = 5
|
||||
ProcedureReturn #True
|
||||
EndIf
|
||||
EndProcedure
|
||||
|
||||
Procedure has31Days(month)
|
||||
Select month
|
||||
Case 1, 3, 5, 7 To 8, 10, 12
|
||||
ProcedureReturn #True
|
||||
EndSelect
|
||||
EndProcedure
|
||||
|
||||
Procedure checkMonths(year)
|
||||
Protected month, count
|
||||
For month = 1 To 12
|
||||
If startsOnFriday(year, month) And has31Days(month)
|
||||
count + 1
|
||||
PrintN(Str(year) + " " + Str(month))
|
||||
EndIf
|
||||
Next
|
||||
ProcedureReturn count
|
||||
EndProcedure
|
||||
|
||||
Procedure fiveWeekends()
|
||||
Protected startYear = 1900, endYear = 2100, year, monthTotal, total
|
||||
NewList yearsWithoutFiveWeekends()
|
||||
|
||||
For year = startYear To endYear
|
||||
monthTotal = checkMonths(year)
|
||||
total + monthTotal
|
||||
;extra credit
|
||||
If monthTotal = 0
|
||||
AddElement(yearsWithoutFiveWeekends())
|
||||
yearsWithoutFiveWeekends() = year
|
||||
EndIf
|
||||
Next
|
||||
|
||||
PrintN("Total number of months: " + Str(total) + #CRLF$)
|
||||
PrintN("Years with no five-weekend months: " + Str(ListSize(yearsWithoutFiveWeekends())) )
|
||||
EndProcedure
|
||||
|
||||
If OpenConsole()
|
||||
fiveWeekends()
|
||||
|
||||
Print(#CRLF$ + #CRLF$ + "Press ENTER to exit"): Input()
|
||||
CloseConsole()
|
||||
EndIf
|
||||
Loading…
Add table
Add a link
Reference in a new issue