homework-04

这次作业比较变态。特别是矩阵的生成,所以我去网上找了个python的开源实现

 

由于是软件工程课,实现目的才是第一位的。毕竟这种代码一般很难搞出最优解,搞出来也不是本门课的目标了。

 

希望主角海涵,给个好点的分数,毕竟这次作业的目的我达到了。

 

我所做的就是用已有的生成代码,生成一个尽可能紧凑的矩阵,然后我暂时没想到有什么好的办法,就果断从5到30(最大值),暴力枚举了

计算主要是交给shell程序做的。我使用了临时文件来分析结果,用了管道来输出结果:

 

# -*- coding: utf-8 -*-

#由于这是一门关于软件工程的课,所以我使用了别人的算法,但是也可以做到较好的完成目标
import os, sys

def go():
    if len(sys.argv) < 2:
        print 'need a parameter'
        return
    path = sys.argv[1]
    if not os.path.isfile(path):
        print 'need a file'
        return
    path = os.path.abspath(path)
    f = open(path)
    words = 0
    for i in range(5,31):
        cmd = 'python assist/wordsearch.py '+path+' --grid '+str(i)+' '+str(i)+' >t123.txt'
        os.system(cmd)
        f = open('t123.txt')
        buf = f.read()
        f.close()
        os.remove('t123.txt')
        lines = [t for t in buf.split('\n') if t.strip()!='']

        twords = int(lines[-1].split()[0])
        if twords > words:
            words = twords
            l = i;
    cmd = 'python assist/wordsearch.py '+path+' --grid '+str(l)+' '+str(l)+' >t123.txt'
    os.system(cmd)
    f = open('t123.txt')
    buf = f.read()
    f.close()
    os.remove('t123.txt')
    buf = buf.split('\n')[1:1+l]
    print '\n'.join(buf)
if __name__ == '__main__':
    go()

 

posted on 2013-10-28 00:10  不想嚣张  阅读(169)  评论(2编辑  收藏  举报

导航