June 2018 Update
This commit is contained in:
parent
ba8067c3b7
commit
22f33d4004
5278 changed files with 84726 additions and 14379 deletions
33
Task/Calendar/BaCon/calendar.bacon
Normal file
33
Task/Calendar/BaCon/calendar.bacon
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
DECLARE month$[] = { "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" }
|
||||
DECLARE month[] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }
|
||||
year$ = "1969"
|
||||
' Leap year
|
||||
INCR month[1], IIF(MOD(VAL(year$), 4) = 0 OR MOD(VAL(year$), 100) = 0 AND MOD(VAL(year$), 400) <> 0, 1, 0)
|
||||
PRINT ALIGN$("[SNOOPY HERE]", 132, 2)
|
||||
PRINT ALIGN$(year$, 132, 2)
|
||||
FOR nr = 0 TO 11
|
||||
row = 3
|
||||
GOTOXY 1+(nr %6)*22, row+(nr/6)*9
|
||||
PRINT ALIGN$(month$[nr], 21, 2);
|
||||
INCR row
|
||||
GOTOXY 1+(nr %6)*22, row+(nr/6)*9
|
||||
PRINT ALIGN$("Mo Tu We Th Fr Sa Su", 21, 2);
|
||||
INCR row
|
||||
' Each day
|
||||
FOR day = 1 TO month[nr]
|
||||
' Zeller
|
||||
J = VAL(LEFT$(year$, 2))
|
||||
K = VAL(MID$(year$, 3, 2))
|
||||
m = nr+1
|
||||
IF nr < 2 THEN
|
||||
INCR m, 12
|
||||
DECR K
|
||||
END IF
|
||||
h = (day + ((m+1)*26)/10 + K + (K/4) + (J/4) + 5*J)
|
||||
daynr = MOD(h, 7) - 2
|
||||
IF daynr < 0 THEN INCR daynr, 7
|
||||
IF daynr = 0 AND day > 1 THEN INCR row
|
||||
GOTOXY 1+(nr %6)*22+daynr*3, row+(nr/6)*9
|
||||
PRINT day;
|
||||
NEXT
|
||||
NEXT
|
||||
71
Task/Calendar/Go/calendar.go
Normal file
71
Task/Calendar/Go/calendar.go
Normal file
|
|
@ -0,0 +1,71 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"time"
|
||||
)
|
||||
|
||||
const pageWidth = 80
|
||||
|
||||
func main() {
|
||||
printCal(1969)
|
||||
}
|
||||
|
||||
func printCal(year int) {
|
||||
thisDate := time.Date(year, 1, 1, 1, 1, 1, 1, time.UTC)
|
||||
var (
|
||||
dayArr [12][7][6]int // month, weekday, week
|
||||
month, lastMonth time.Month
|
||||
weekInMonth, dayInMonth int
|
||||
)
|
||||
for thisDate.Year() == year {
|
||||
if month = thisDate.Month(); month != lastMonth {
|
||||
weekInMonth = 0
|
||||
dayInMonth = 1
|
||||
}
|
||||
weekday := thisDate.Weekday()
|
||||
if weekday == 0 && dayInMonth > 1 {
|
||||
weekInMonth++
|
||||
}
|
||||
dayArr[int(month)-1][weekday][weekInMonth] = thisDate.Day()
|
||||
lastMonth = month
|
||||
dayInMonth++
|
||||
thisDate = thisDate.Add(time.Hour * 24)
|
||||
}
|
||||
centre := fmt.Sprintf("%d", pageWidth/2)
|
||||
fmt.Printf("%"+centre+"s\n\n", "[SNOOPY]")
|
||||
centre = fmt.Sprintf("%d", pageWidth/2-2)
|
||||
fmt.Printf("%"+centre+"d\n\n", year)
|
||||
months := [12]string{
|
||||
" January ", " February", " March ", " April ",
|
||||
" May ", " June ", " July ", " August ",
|
||||
"September", " October ", " November", " December"}
|
||||
days := [7]string{"Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"}
|
||||
for qtr := 0; qtr < 4; qtr++ {
|
||||
for monthInQtr := 0; monthInQtr < 3; monthInQtr++ { // Month names
|
||||
fmt.Printf(" %s ", months[qtr*3+monthInQtr])
|
||||
}
|
||||
fmt.Println()
|
||||
for monthInQtr := 0; monthInQtr < 3; monthInQtr++ { // Day names
|
||||
for day := 0; day < 7; day++ {
|
||||
fmt.Printf(" %s", days[day])
|
||||
}
|
||||
fmt.Printf(" ")
|
||||
}
|
||||
fmt.Println()
|
||||
for weekInMonth = 0; weekInMonth < 6; weekInMonth++ {
|
||||
for monthInQtr := 0; monthInQtr < 3; monthInQtr++ {
|
||||
for day := 0; day < 7; day++ {
|
||||
if dayArr[qtr*3+monthInQtr][day][weekInMonth] == 0 {
|
||||
fmt.Printf(" ")
|
||||
} else {
|
||||
fmt.Printf("%3d", dayArr[qtr*3+monthInQtr][day][weekInMonth])
|
||||
}
|
||||
}
|
||||
fmt.Printf(" ")
|
||||
}
|
||||
fmt.Println()
|
||||
}
|
||||
fmt.Println()
|
||||
}
|
||||
}
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
procedure main(A)
|
||||
printCalendar(\A[1]|1969)
|
||||
printCalendar(\A[1]|1969)
|
||||
end
|
||||
|
||||
procedure printCalendar(year) #: Print a 3 column x 80 char calendar
|
||||
|
|
@ -12,12 +12,12 @@ procedure printCalendar(year) #: Print a 3 column x 80 char calendar
|
|||
write(center("[Snoopy Picture]",cols * 24 + 4)) # mandatory ..
|
||||
write(center(year,cols * 24 + 4), "\n") # ... headers
|
||||
|
||||
M := list(cols) # coexpr container
|
||||
M := list(cols) # coexpr container
|
||||
every mon := 0 to 9 by cols do { # go through months by cols
|
||||
writes(" ")
|
||||
every i := 1 to cols do {
|
||||
writes(center(mons[mon+i],24)) # header months
|
||||
M[i] := create CalendarFormatWeek(1969,mon + i) # formatting coexpr
|
||||
M[i] := create CalendarFormatWeek(year,mon + i) # formatting coexpr
|
||||
}
|
||||
write()
|
||||
every 1 to 7 do { # 1 to max rows
|
||||
|
|
@ -28,17 +28,18 @@ procedure printCalendar(year) #: Print a 3 column x 80 char calendar
|
|||
write()
|
||||
}
|
||||
}
|
||||
return
|
||||
end
|
||||
|
||||
link datetime
|
||||
|
||||
procedure CalendarFormatWeek(year,m) #: Format Week for Calendar
|
||||
static D
|
||||
initial D := [31,28,31,30,31,30,31,31,30,31,30,31]
|
||||
static D
|
||||
initial D := [31,28,31,30,31,30,31,31,30,31,30,31]
|
||||
|
||||
every suspend "Su"|"Mo"|"Tu"|"We"|"Th"|"Fr"|"Sa" # header
|
||||
every 1 to (d := (julian(m,1,year)+1)%7) do suspend "" # lead day alignment
|
||||
every suspend 1 to D[m] do d +:= 1 # days
|
||||
if m = 2 & IsLeapYear(year) then suspend (d +:= 1, 29) # LY adjustment
|
||||
every d to (6*7) do suspend "" # trailer alignment
|
||||
every suspend "Su"|"Mo"|"Tu"|"We"|"Th"|"Fr"|"Sa" # header
|
||||
every 1 to (d := (julian(m,1,year)+1)%7) do suspend "" # lead day alignment
|
||||
every suspend 1 to D[m] do d +:= 1 # days
|
||||
if m = 2 & IsLeapYear(year) then suspend (d +:= 1, 29) # LY adjustment
|
||||
every d to (6*7) do suspend "" # trailer alignment
|
||||
end
|
||||
|
|
|
|||
36
Task/Calendar/PowerShell/calendar.psh
Normal file
36
Task/Calendar/PowerShell/calendar.psh
Normal file
|
|
@ -0,0 +1,36 @@
|
|||
Param([int]$Year = 1969)
|
||||
Begin {
|
||||
$COL_WIDTH = 21
|
||||
$COLS = 3
|
||||
$MONTH_COUNT = 12
|
||||
$MONTH_LINES = 9
|
||||
|
||||
Function CenterStr([string]$s, [int]$lineSize) {
|
||||
$padSize = [int](($lineSize - $s.Length) / 2)
|
||||
($(if ($padSize -gt 0) { ' ' * $padSize } else { '' }) + $s).PadRight($lineSize,' ')
|
||||
}
|
||||
|
||||
Function MonthLines([int]$month) {
|
||||
$dt = [System.DateTime]::new($Year, $month, 1)
|
||||
$line = CenterStr $dt.ToString("MMMM") $COL_WIDTH
|
||||
$line += 'Su Mo Tu We Th Fr Sa'
|
||||
$line += $(' ' * $dt.DayOfWeek.value__)
|
||||
$line += (-join ($(1..$($dt.AddMonths(1).AddDays(-1).Day)) | %{ $("" + $_).PadLeft(3) }))
|
||||
$line = $line.PadRight($MONTH_LINES * $COL_WIDTH)
|
||||
New-Object –TypeName PSObject –Prop(@{
|
||||
'Lines'=(0..($MONTH_LINES - 1)) | %{ $_ * $COL_WIDTH } | %{ -join $line[$_..($_ + $COL_WIDTH - 1)] }
|
||||
'Dt'=$dt})
|
||||
}
|
||||
}
|
||||
Process {
|
||||
Write-Output (CenterStr $Year ($COL_WIDTH * $COLS + 4))
|
||||
$(0..($MONTH_COUNT / $COLS - 1)) | %{
|
||||
$fm = $_ * $COLS
|
||||
$monthNums = $fm..($fm + $COLS - 1) | %{ $_ + 1 }
|
||||
$months = $monthNums | %{ MonthLines $_ }
|
||||
$(0..($MONTH_LINES - 1)) | %{
|
||||
$ml = $_
|
||||
Write-Output $(-join ($(0..($COLS - 1)) | %{ $(if ($_ -eq 0) { '' } else {' '}) + $months[$_].Lines[$ml] }))
|
||||
}
|
||||
}
|
||||
}
|
||||
159
Task/Calendar/Ring/calendar.ring
Normal file
159
Task/Calendar/Ring/calendar.ring
Normal file
|
|
@ -0,0 +1,159 @@
|
|||
# Project : Calendar
|
||||
# Date : 2018/06/05
|
||||
# Author : Gal Zsolt (~ CalmoSoft ~)
|
||||
# Email : <calmosoft@gmail.com>
|
||||
|
||||
load "guilib.ring"
|
||||
load "stdlib.ring"
|
||||
|
||||
new qapp
|
||||
{
|
||||
win1 = new qwidget() {
|
||||
|
||||
day = list(12)
|
||||
pos = newlist(12,37)
|
||||
month = list(12)
|
||||
week = list(7)
|
||||
weekday = list(7)
|
||||
button = newlist(7,6)
|
||||
monthsnames = list(12)
|
||||
week = ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"]
|
||||
months = ["January", "February", "March", "April", "May", "June", "July",
|
||||
"August", "September", "October", "November", "December"]
|
||||
daysnew = [[5,1], [6,2], [7,3], [1,4], [2,5], [3,6], [4,7]]
|
||||
mo = [4,0,0,3,5,1,3,6,2,4,0,2]
|
||||
mon = [31,28,31,30,31,30,31,31,30,31,30,31]
|
||||
m2 = (((1969-1900)%7) + floor((1969 - 1900)/4) % 7) % 7
|
||||
for n = 1 to 12
|
||||
month[n] = (mo[n] + m2) % 7
|
||||
x = (month[n] + 1) % 7 + 1
|
||||
for m = 1 to len(daysnew)
|
||||
if daysnew[m][1] = x
|
||||
nr = m
|
||||
ok
|
||||
next
|
||||
day[n] = daysnew[nr][2]
|
||||
next
|
||||
for m = 1 to 12
|
||||
for n = 1 to day[m] - 1
|
||||
pos[m][n] = " "
|
||||
next
|
||||
next
|
||||
for m = 1 to 12
|
||||
for n = day[m] to 37
|
||||
if n < (mon[m] + day[m])
|
||||
pos[m][n] = n - day[m] + 1
|
||||
else
|
||||
pos[m][n] = " "
|
||||
ok
|
||||
next
|
||||
next
|
||||
setwindowtitle("Calendar")
|
||||
setgeometry(100,100,650,800)
|
||||
label1 = new qlabel(win1) {
|
||||
setgeometry(10,10,800,600)
|
||||
settext("")
|
||||
}
|
||||
year = new qpushbutton(win1)
|
||||
{
|
||||
setgeometry(280,20,60,20)
|
||||
year.settext("1969")
|
||||
}
|
||||
for n = 1 to 4
|
||||
nr = (n-1)*3+1
|
||||
showmonths(nr)
|
||||
next
|
||||
for n = 1 to 12
|
||||
showweeks(n)
|
||||
next
|
||||
for n = 1 to 12
|
||||
showdays(n)
|
||||
next
|
||||
show()
|
||||
}
|
||||
exec()
|
||||
}
|
||||
|
||||
func showmonths(m)
|
||||
for n = m to m + 2
|
||||
monthsnames[n] = new qpushbutton(win1)
|
||||
{
|
||||
if n%3 = 1
|
||||
col = 120
|
||||
rownr = floor(n/3)
|
||||
if rownr = 0
|
||||
rownr = n/3
|
||||
ok
|
||||
if n = 1
|
||||
row = 40
|
||||
else
|
||||
row = 40+rownr*180
|
||||
ok
|
||||
else
|
||||
colnr = n%3
|
||||
if colnr = 0
|
||||
colnr = 3
|
||||
ok
|
||||
rownr = floor(n/3)
|
||||
if n%3 = 0
|
||||
rownr = floor(n/3)-1
|
||||
ok
|
||||
col = 120 + (colnr-1)*160
|
||||
row = 40 + rownr*180
|
||||
ok
|
||||
setgeometry(col,row,60,20)
|
||||
monthsnames[n].settext(months[n])
|
||||
}
|
||||
next
|
||||
|
||||
func showweeks(n)
|
||||
for m = 1 to 7
|
||||
col = m%7
|
||||
if col = 0 col = 7 ok
|
||||
weekday[m] = new qpushbutton(win1)
|
||||
{
|
||||
colnr = n % 3
|
||||
if colnr = 0
|
||||
colnr = 3
|
||||
ok
|
||||
rownr = floor(n/3)
|
||||
if n%3 = 0
|
||||
rownr = floor(n/3)-1
|
||||
ok
|
||||
colbegin = 60 + (colnr-1)*160
|
||||
rowbegin = 60 + (rownr)*180
|
||||
setgeometry(colbegin+col*20,rowbegin,20,20)
|
||||
weekday[m].settext(week[m])
|
||||
}
|
||||
next
|
||||
|
||||
func showdays(ind)
|
||||
rownr = floor(ind/3)
|
||||
if ind%3 = 0
|
||||
rownr = floor(ind/3)-1
|
||||
ok
|
||||
rowbegin = 60+rownr*180
|
||||
for m = 1 to 6
|
||||
for n = 1 to 7
|
||||
col = n%7
|
||||
if col = 0 col = 7 ok
|
||||
row = m
|
||||
button[n][m] = new qpushbutton(win1)
|
||||
{
|
||||
if ind%3 = 1
|
||||
colbegin = 60
|
||||
elseif ind%3 = 2
|
||||
colbegin = 220
|
||||
else
|
||||
colbegin = 380
|
||||
ok
|
||||
setgeometry(colbegin+col*20,rowbegin+row*20,20,20)
|
||||
nr = (m-1)*7+n
|
||||
if nr <= 37
|
||||
if pos[ind][nr] != " "
|
||||
button[n][m].settext(string(pos[ind][nr]))
|
||||
ok
|
||||
ok
|
||||
}
|
||||
next
|
||||
next
|
||||
Loading…
Add table
Add a link
Reference in a new issue