2008脚本大赛PowerShell高级组Event 1解题及分析
来源:互联网 发布:三级卫生网络 编辑:程序博客网 时间:2024/05/17 00:50
中文题目位置: http://www.microsoft.com/technet/scriptcenter/funzone/games/games08/chs/aevent1.mspx
英文解题: http://www.microsoft.com/technet/scriptcenter/funzone/games/solutions08/apssol01.mspx
题目比较容易, 官方解题思路很好. 我的办法
Map-WordToDigit可以将一组字符映射为键盘上的数字. 然后将wordlist.txt中符合要求的单词(长度为7, 并且只包含规定的字符)利用Map-WordToDigit变换为对应的电话号码. 这样hash表的键是电话号码, 而值是单词. 最后利用用户输入的电话直接在hash表中查找即可. 唯一注意的就是PowerShell中对字符串的迭代要求显示取得迭代器.
$ofs = ''
$hash = @{}
$maps = @{
a = 2;b = 2; c = 2;
d = 3;e = 3;f = 3;
g = 4;h = 4;i = 4;
j = 5;k = 5;l = 5;
m = 6;n = 6;o = 6;
p = 7;r = 7;s = 7;
t = 7;u = 8;v = 8;
w = 9;x = 9;y = 9;
}
# construct a regular expression characters range
$charRange = "[$($maps.keys)]"
function Map-WordToDigit ($word)
{
$digits = $word.GetEnumerator() | % { $maps[$_.ToString()] };
"$digits";
}
# dirty pipeline to cache all of valid words in wordlist.txt.
Get-Content -Path C:Scriptswordlist.txt | ? { (($_.length -eq 7) -and ($_ -imatch "^$charRange+`$")) } | `
%{$key = Map-WordToDigit $_; $hash[$key] = $_}
$phoneNumber = Read-Host "Please enter your phone number"
$hash[$phoneNumber]
$hash = @{}
$maps = @{
a = 2;b = 2; c = 2;
d = 3;e = 3;f = 3;
g = 4;h = 4;i = 4;
j = 5;k = 5;l = 5;
m = 6;n = 6;o = 6;
p = 7;r = 7;s = 7;
t = 7;u = 8;v = 8;
w = 9;x = 9;y = 9;
}
# construct a regular expression characters range
$charRange = "[$($maps.keys)]"
function Map-WordToDigit ($word)
{
$digits = $word.GetEnumerator() | % { $maps[$_.ToString()] };
"$digits";
}
# dirty pipeline to cache all of valid words in wordlist.txt.
Get-Content -Path C:Scriptswordlist.txt | ? { (($_.length -eq 7) -and ($_ -imatch "^$charRange+`$")) } | `
%{$key = Map-WordToDigit $_; $hash[$key] = $_}
$phoneNumber = Read-Host "Please enter your phone number"
$hash[$phoneNumber]
- 2008脚本大赛PowerShell高级组Event 1解题及分析
- 2008脚本大赛PowerShell高级组Event 2解题及分析
- 2008脚本大赛PowerShell高级组Event 5解题及分析
- 2008脚本大赛PowerShell高级组Event 4解题及分析
- 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)
- DirectShow系统初级指南
- A Big Bang to Me
- H.460.18介绍: H.323信令穿越NAT和防火墙
- 正式开始写博
- 邮件客户端
- 2008脚本大赛PowerShell高级组Event 1解题及分析
- 可视化程序设计的基本理论(10条)
- 追女孩非常有效的23条短信
- 深入浅出DirectShow Filter
- Omziff v3.0.9.6【加密解密软件】汉化绿色免费版
- DirectShow对硬件的支持原理
- EditPlus V3.00.336【功能强大、且可取代记事本的文字编辑器】汉化绿色修正版
- 用DirectShow实现视频采集
- 谁在养鱼作为宠物