标题: [问题求助] PowerShell如何完成编程比赛的几个题目? [打印本页]
作者: awk 时间: 2013-7-5 22:40 标题: PowerShell如何完成编程比赛的几个题目?
我在别的论坛看到编程比赛的几个题目,我想用PowerShell试试,但是基础太差。
http://bbs.chinaunix.net/thread-4086457-1-1.html
各位大侠能否给出代码让我学习一下?
作者: PowerShell 时间: 2013-7-6 11:10
1 竟然有shell编程大赛这玩意,真是好啊~~ 我也应该搞个小赛,拉赞助先~~~
2 大赛的话,我肯定是不行了,我脑力太差,做题我都找枪手,玩大赛我也想这样干
3 不知道powershell能参赛不?
-----------------------------------------------
作者: PowerShell 时间: 2013-7-6 11:18
把1~9 九個數字分成三組三位數(不可重复使用),比如形成如下的9宫格。
4 9 1
8 3 6
2 7 5
求三行和三列数的总和,如上面的例子,得到一个总和: 491 + 836 + 275 + 482 + 937 + 165 = 3186
题目要求,所有的三位数都必须是奇数,总和是 4446. 求出这个九宫格排列。
(需要给出解题的shell代码,以及该代码运行的结果,结果不唯一)
--------------------------------------------------------------
1 你都熟悉啥语言?
2 这道题你会做么?你怎么做?逻辑如何?
作者: ShadowFiend 时间: 2013-7-6 16:21
期待用PS代码把题目做完
作者: awk 时间: 2013-7-7 18:31
回复 3# PowerShell
1、说来惭愧,很多语言都是只懂点皮毛。
2、不会做,所以才来请教论坛各位大侠的。但我觉得吧,这题应该用算法来搞定,暴力穷举显示是最愚蠢的做法。
作者: PowerShell 时间: 2013-7-12 10:34
3楼题目的解题powershell代码,某牛人写的,不是我,呵呵,他是我请的做作业的枪手,我验证通过。3楼题我之所以发出来,是想用powershell+excel解。当然了,这种解法(powershell+excel)很麻烦。但这正是我想提供给各位的解题思路。可惜一直没空闲时间,唉,半年内争取做完此作业。
------------------------------------------------------- #根据条件列出可能的组合
- $jgg=New-Object system.collections.arraylist
- $sudu=New-Object psobject|select id,numble
- $sudu.id=1,1
- $sudu.numble=2,4,6,8
- $jgg.add($sudu)|out-null
- $sudu=New-Object psobject|select id,numble
- $sudu.id=1,2
- $sudu.numble=2,4,6,8
- $jgg.add($sudu)|out-null
- $sudu=New-Object psobject|select id,numble
- $sudu.id=1,3
- $sudu.numble=3,5,7,9
- $jgg.add($sudu)|out-null
- $sudu=New-Object psobject|select id,numble
- $sudu.id=2,1
- $sudu.numble=2,4,6,8
- $jgg.add($sudu)|out-null
- $sudu=New-Object psobject|select id,numble
- $sudu.id=2,2
- $sudu.numble=2,4,6,8
- $jgg.add($sudu)|out-null
- $sudu=New-Object psobject|select id,numble
- $sudu.id=2,3
- $sudu.numble=3,5,7,9
- $jgg.add($sudu)|out-null
- $sudu=New-Object psobject|select id,numble
- $sudu.id=3,1
- $sudu.numble=3,5,7,9
- $jgg.add($sudu)|out-null
- $sudu=New-Object psobject|select id,numble
- $sudu.id=3,2
- $sudu.numble=3,5,7,9
- $jgg.add($sudu)|out-null
- $sudu=New-Object psobject|select id,numble
- $sudu.id=3,3
- $sudu.numble=1
- $jgg.add($sudu)|out-null
- $jgg
-
- #设置校验方法
- function csan($j0,$j1,$j2,$j3,$j4,$j5,$j6,$j7,$j8){
- if(
- $j0*100+$j1*10+$j2+
- $j3*100+$j4*10+$j5+
- $j6*100+$j7*10+$j8+
- $j0*100+$j3*10+$j6+
- $j1*100+$j4*10+$j7+
- $j2*100+$j5*10+$j8 -eq 4446){$outs.add($($j0,$j1,$j2,$j3,$j4,$j5,$j6,$j7,$j8 -join ","))}
- }
- #开始排列
- $global:outs=New-Object system.collections.arraylist
- foreach($j0 in $jgg[0].numble){
- foreach($j1 in $jgg[1].numble){
- foreach($j2 in $jgg[2].numble){
- foreach($j3 in $jgg[3].numble){
- foreach($j4 in $jgg[4].numble){
- foreach($j5 in $jgg[5].numble){
- foreach($j6 in $jgg[6].numble){
- foreach($j7 in $jgg[7].numble){
- $j8=1
- csan $j0 $j1 $j2 $j3 $j4 $j5 $j6 $j7 $j8
- }}}}}}}}
- #删除数据重复的结果
- $global:outs|?{$($_.split(",")|group).count -eq 9}
复制代码
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |