2008脚本大赛PowerShell高级组Event 4解题及分析
来源:互联网 发布:jquery遍历数组 编辑:程序博客网 时间:2024/05/27 19:25
中文题目位置: http://www.microsoft.com/technet/scriptcenter/funzone/games/games08/chs/aevent4.mspx
英文解题位置: http://www.microsoft.com/technet/scriptcenter/funzone/games/solutions08/apssol04.mspx
这道题, 比较考验大家对格式处理的能力. 通过分析, 我们可以知道2008. 3月需要6行才能完整显示结果. 而 2009年2月, 只需要4行就能显示完整结果. 因此, 我使用42个元素字符串数组, 也就是7 * 6行. 7代表一周7天, 最多需要6行. 将这些数组元素初始化为3个空格. 这样就可以满足Sun等星期的对齐要求. 计算出需要显示月份的起点, 在数组中的偏移就是星期对应的int值. 数值也要按照3个字符的宽度进行打印. 最后把6行结果全部输出就好了, 利用双引号连接数组, 我使用五个空格作为分隔符. 显示的结果可以说和官方的要求很像了. 看起来也还算舒服. 代码如下
$inMonth = Read-Host "Please enter a month"
[void] ($inMonth -match "^(?<m>/d+)/(?<y>/d+)$")
$titles = "Sun","Mon","Tue","Wed","Thu","Fri","Sat"
$m = $matches.m
$y = $matches.y
$d = 1
$width = 3
$ofs = ' ' * 5
$targetMonth = Get-Date -Year $y -Month $m -Day $d
$a = New-Object -TypeName 'String[]' -ArgumentList 42
for($i = 0; $i -lt $a.Length; $i++) { $a[$i] = " " * $width }
$daysInMonth = [datetime]::DaysInMonth($y, $m)
$startDay = [int]($targetMonth.DayOfWeek)
while ($daysInMonth--) {$a[$startDay++] = "{0,${width}:D}" -f $d++ }
"{0:Y}" -f $targetMonth;
""
"$titles"
"$($a[0..6])"
"$($a[7..13])"
"$($a[14..20])"
"$($a[21..27])"
"$($a[28..34])"
"$($a[35..41])"
[void] ($inMonth -match "^(?<m>/d+)/(?<y>/d+)$")
$titles = "Sun","Mon","Tue","Wed","Thu","Fri","Sat"
$m = $matches.m
$y = $matches.y
$d = 1
$width = 3
$ofs = ' ' * 5
$targetMonth = Get-Date -Year $y -Month $m -Day $d
$a = New-Object -TypeName 'String[]' -ArgumentList 42
for($i = 0; $i -lt $a.Length; $i++) { $a[$i] = " " * $width }
$daysInMonth = [datetime]::DaysInMonth($y, $m)
$startDay = [int]($targetMonth.DayOfWeek)
while ($daysInMonth--) {$a[$startDay++] = "{0,${width}:D}" -f $d++ }
"{0:Y}" -f $targetMonth;
""
"$titles"
"$($a[0..6])"
"$($a[7..13])"
"$($a[14..20])"
"$($a[21..27])"
"$($a[28..34])"
"$($a[35..41])"
- 2008脚本大赛PowerShell高级组Event 4解题及分析
- 2008脚本大赛PowerShell高级组Event 2解题及分析
- 2008脚本大赛PowerShell高级组Event 1解题及分析
- 2008脚本大赛PowerShell高级组Event 5解题及分析
- 2008脚本大赛PowerShell高级组Event 6解题及分析
- 2008脚本大赛PowerShell高级组Event 7解题及分析
- 2008脚本大赛PowerShell高级组Event 9解题及分析
- 2008脚本大赛PowerShell高级组Event 8解题及分析
- 2008脚本大赛PowerShell高级组Event 3解题及分析
- 2008脚本大赛PowerShell初级组Event 9解题及分析
- 2008脚本大赛PowerShell初级组Event 10解题及分析
- 2008脚本大赛PowerShell Sudden Death Event 4解题及分析
- 2008脚本大赛PowerShell Sudden Death Event 5解题及分析
- 2008脚本大赛PowerShell Sudden Death Event 6解题及分析
- 2008脚本大赛PowerShell Sudden Death Event 7解题及分析
- 2008脚本大赛PowerShell Sudden Death Event 9解题及分析
- 2008脚本大赛PowerShell Sudden Death Event 10解题及分析
- [3月28日的脚本] 修复Event ID 4107 and Event ID 11 问题 (PowerShell)
- 计算机的学生跨专业考研
- 计算机专业学生就业方向
- 关于计算机专业学生就业的思考
- 导出excel的另外一种方法
- 计算机专业学生就业浅析
- 2008脚本大赛PowerShell高级组Event 4解题及分析
- 男人生活心得
- 计算机专业学生就业方向调研报告
- 从几方面谈计算机专业就业形势
- 指针数组
- 【就业指导】计算机专业人才求职指南
- 计算机专业大学生供需现状和就业形势
- ASP.NET设置数据格式与String.Format使用总结
- 大学生就业:路在何方 难在哪里