zoukankan      html  css  js  c++  java
  • 结对编程-马尔克夫链

    马尔克夫链

    需求分析

    • 仅考虑英文输入输出
    • 从文件读入待”学习“文章
    • 能处理标点符号(参考材料中有说明)
    • 能控制输出文章的篇幅
    • 通过参数指定输出的单词数
    • 误差控制
    • 生成的语句要能完整结束(比如遇到句号、问号、感叹号等=结束标志)。
    • 为了能实现上述条件,允许输出的单词数量误差 ±50。
      避免环

    设计思路

    • 第一步:基于谢涛老师给出的参考实例,首先让代码读入文章。如何读入文件呢? 参考课本4.9。

    • 第二步:建立单词之间的映射。

    public class ArcToSec {
        public String [] ats (String article){
            StringTokenizer token = new StringTokenizer(article);
            int n = article.length();
            int j = 0, l = 0;
            //分析句子个数
            for (int i=0;i<n;i++) {
                char c = article.charAt(i);
                if (c == '.')
                    l++;
            }
            String[] sentence = new String[l+1];
            //以空格为依据拆分文章
            for (int i=0;i<n;i++){
                char c = article.charAt(i);
                if (c == '.') {
                    sentence[j] += c;
                    j++;
                }
                else
                    sentence[j]+=c;
            }
            return sentence;
        }
    }
    

    ArcToSec代码是在对文章进行分析时进行拆分,这类主要是将文章拆分成句子并且以句号作为间断。

    
    public class SecToWor {
        public String[] stw (String write){
            StringTokenizer token = new StringTokenizer(write);
            int n = write.length();
            int j = 0, l = 0;
            //分析单词个数
            for (int i=0;i<n;i++) {
                char c = write.charAt(i);
                if (c == ' ')
                    l++;
            }
            String[] words = new String[l+1];
            //以空格为依据拆分句子
            for (int i=0;i<n;i++){
                char c = write.charAt(i);
                if (c == ' ')
                    j++;
                else
                    words[j]+=c;
            }
            return words;
        }
    }
    
    

    SecToWor类以空格为依据把句子拆分成单词。我的结对伙伴的思路关键在于数组。在讨论到输出文章的时候考虑到了这篇博客里所用的思路,用后缀转为前缀的方式来输出文章。但是由于题目难度和期末临近,项目暂时中止。等到考试结束后再重启项目。

    简易UML类图

    • 由于项目没有完善所以只能画了一个简易UML类图

    题目总结

    这个题目真是很具有挑战性,虽然我们组暂时做不成这个项目但是会在之后补上剩下的代码。

    PSP表格

    PSP2.1 Personal Softwore Process Stage 预计耗时(分钟) 实际耗时(分钟) 重要成长
    Planning 计划 20 30
    Estimate 做这个任务需要多长时间 1000 720
    Development 开发
    Analysis 需求分析(包括学习新技术) 50 50
    Design Spec 生成设计文档 180 100
    Design Review 设计复审(和同事审核设计软件) 30 10
    Coding Standard 代码规范 (为目前的开发制定合适的规范) 60 0
    Design 具体设计 200 240
    Coding 具体编码 500 400
    Code Review 代码复审 120 0
    Test 测试(自我测试,修改代码,提交修改) 240 12
    Reporting 报告
    Test Report 测试报告 120 100
      | Size Measurement         |   计算工作量         | 20             |  15     |
    

    | Postmortem & Process Improvement Plan | · 事后总结, 并提出过程改进计划 | 60 | 30 | |

  • 相关阅读:
    48-最长不含重复字符的子字符串
    51-数组中的逆序对
    字符串的排列
    二叉树转链表
    求根
    构造二叉树
    二叉树中序遍历
    反转链表系列
    斐波那契系列
    f.lux
  • 原文地址:https://www.cnblogs.com/Mosemonkey/p/7062236.html
Copyright © 2011-2022 走看看