130242014074 林泽民 第3次实验

一、实验目的

1.理解不同体系结构风格的具体内涵。

2.学习体系结构风格的具体实践。

二、实验环境

硬件: (依据具体情况填写)

软件:Java或任何一种自己熟悉的语言

三、实验内容

“上下文关键字”KWIC(Key Word in Context,文本中的关键字)检索系统接受有序的行集合:每一行是单词的有序集合;每一个单词又是字母的有序集合。通过重复地删除航中第一个单词,并把它插入行尾,每一行可以被“循环地移动”。KWIC检索系统以字母表的顺序输出一个所有行循环移动的列表。

尝试用不同的策略实现这个系统。选择2-3种体系结构风格来实现。

四、实验步骤:

import java.io.DataInputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Collections;

public class KWIC {
    private static ArrayList<String> CircularShift(ArrayList<String> lines) {
        ArrayList<String> tmp_lines = new ArrayList<String>();
        for (String i : lines) {
            CircularShiftLine(i, tmp_lines);
        }
        return tmp_lines;
    }

    private static void CircularShiftLine(String curLine,
            ArrayList<String> tmp_lines) {
        String[] words = curLine.split(" +|\t+");
        for (int i = 0; i < words.length; i++) {
            if (noiseWords.indexOf((words[i] + " ").toLowerCase()) != -1)
                continue;
            String shift = "";
            for (int j = i; j < (words.length + i); j++) {
                shift += words[j % words.length];
                if (j < (words.length + i - 1))
                    shift += " ";
            }
            tmp_lines.add(shift);
        }
        return;
    }

    private static ArrayList<String> Alphabetizer(ArrayList<String> lines) {
        ArrayList<String> tmp_lines = new ArrayList<String>();
        for (String i : lines) {
            i = convertString(i);
            tmp_lines.add(i);
        }
        Collections.sort(tmp_lines);
        lines.clear();
        for (String i : tmp_lines) {
            i = convertString(i);
            lines.add(i);
        }
        return lines;
    }

    static String convertString(String str) {
        String upStr = str.toUpperCase();
        String lowStr = str.toLowerCase();
        StringBuffer buf = new StringBuffer(str.length());
        for (int i = 0; i < str.length(); i++) {
            if (str.charAt(i) == upStr.charAt(i)) {
                buf.append(lowStr.charAt(i));
            } else {
                buf.append(upStr.charAt(i));
            }
        }
        return buf.toString();
    }

    private static ArrayList<String> input(String string) throws IOException {
        DataInputStream in = new DataInputStream(new FileInputStream(string));
        ArrayList<String> lines = new ArrayList<String>();
        String curLine = in.readLine();
        while (curLine != null) {
            lines.add(curLine);
            curLine = in.readLine();
        }
        in.close();
        return lines;
    }

    static void output(ArrayList<String> lines, String output)
            throws FileNotFoundException {
        PrintWriter fileWriter = new PrintWriter(output);
        for (String i : lines)
            fileWriter.println(i);
        fileWriter.close();
    }

    static void output(ArrayList<String> lines) {
        for (String i : lines)
            System.out.println(i);
    }
}

(2)隐式调用

import java.io.CharArrayWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;

public class Alphabetizer extends Filter {
    public Alphabetizer(Pipe input, Pipe output) {
        super(input, output);
        middleChange();
    }

    protected void middleChange() {
        ArrayList<String> lines = new ArrayList<String>();
        CharArrayWriter writer = new CharArrayWriter();
        try {
            int c = -1;
            while ((c = input.read()) != -1) {
                writer.write(c);
                if (c == 10) {
                    String curLine = writer.toString();
                    lines.add(curLine);
                    writer.reset();
                }
            }
            alpha(lines);
            for (String s : lines) {
                output.write(s);
            }
            input.closeReader();
            output.closeWriter();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    private static ArrayList<String> alpha(ArrayList<String> lines) {
        ArrayList<String> tmp_lines = new ArrayList<String>();
        for (String i : lines) {
            i = convertString(i);
            tmp_lines.add(i);
        }
        Collections.sort(tmp_lines);
        lines.clear();
        for (String i : tmp_lines) {
            i = convertString(i);
            lines.add(i);
        }
        return lines;
    }

    static String convertString(String str) {
        String upStr = str.toUpperCase();
        String lowStr = str.toLowerCase();
        StringBuffer buf = new StringBuffer(str.length());
        for (int i = 0; i < str.length(); i++) {
            if (str.charAt(i) == upStr.charAt(i)) {
                buf.append(lowStr.charAt(i));
            } else {
                buf.append(upStr.charAt(i));
            }
        }
        return buf.toString();
    }
}

结果图

时间: 2024-11-09 10:33:04

130242014074 林泽民 第3次实验的相关文章

130242014074 林泽民 实验一

实验报告一 课程    软件体系结构     实验名称  实验一.软件设计的网络支持环境              第      页 专业____   软件工程___________  班级___  2班______  学号___   130242014074____ ____   姓名      林泽民 实验日期:   2017 年 9  月  14 日   报告退发 (订正 . 重做) 一.实验目的 (1)复习软件工程的重要概念,熟悉软件体系结构与软件设计技术的基本概念与内容. (2)通过因

与毛 泽 东弟弟毛 泽 民同名的北宋诗人——毛滂

与毛 泽 东弟弟毛 泽 民同名的北宋诗人——毛滂 中国人都不会忘记毛 泽 东的名字,也不会忘他的弟弟毛 泽 民的名字.因为他们二人都是中国现代革命历史上的风云人物,为中华人民共和国的创建贡献了毕生的才智和力量.但有多少人还记得,中国北宋末期也有一个叫毛 泽 民的诗人呢? 毛 泽 民,名滂.“泽 民”是他的字.衢州江山人,约生于北宋嘉佑六年(1061),卒于宣和末年.毛 泽 民出生于书香门第.官宦世家,但他的一生却仕途起伏.遭遇坎坷.不过作为文人,毛泽民又是幸运的.他有<东堂集>十卷和<东

13计本136201010482林泽鸿

1.你认为什么是人工智能? 答:人工智能是对人的意识.思维的信息过程的模拟:人工智能不是人的智能,但能像人那样思考.也可能超过人的智能. 2.简述推理.学习.存储,三者之间的联系! 答:首先,以人类的固有思维来思考或是看待问题,初步是对问题有一定的猜测或是推敲性,即对我们遇到的问题具有一定 的前瞻性:其次,是在解决问题的实践中学会总结与认知,全面分析自己的遗漏点,以求能够在实践中积累.在实践中 成长.最后,就是对学习到的理论还是方法进行系统性的积累,存储起来,待下次遇到该类问题时可以迅速的得出最

《你若安好便是晴天》--白落梅

<你若安好便是晴天>,作者白落梅 这是一本人物传记,记录的是林薇因. 下面是我的书摘: * 每个人来到世上,都是匆匆过客,有些人与之邂逅,转身忘记:有些人与之插肩,必然回首. * 虽然只有短短三年光阴,却给这位才女留下永难磨灭的记忆.到了五岁,林徽因的大姑母林泽民 成为她的启蒙老师.林泽民是清朝末年的大家闺秀,自小接受私塾教育,诗词歌赋.琴棋书画也 算样样精通.正是这位娴静优雅.知书达礼的姑母,教会了林徽因读书识字. * 在林徽因八岁的时候,其父亲林长民居住北京,而全家则由杭州移居上海.从此这

实验三 进程调度

班级:14商业软件1工程2班  姓名:林升浩  学号:201406114247 实验三 进程调度模拟程序 1.    目的和要求 1.1.           实验目的 用高级语言完成一个进程调度程序,以加深对进程的概念及进程调度算法的理解. 1.2.           实验要求 1.2.1例题:设计一个有 N个进程并发执行的进程调度模拟程序. 进程调度算法:采用最高优先级优先的调度算法(即把处理机分配给优先级最高的进程)和先来先服务(若优先级相同)算法. (1).  每个进程有一个进程控制块

阶直看林复真公采入美传工每都

京生加以看酸和要群间阶设府见形五参经题加院林象达通事段步场越马行下其你劳问水下人年知前东元色写期及江分习山联位才准军全住传九华将院天程常头他响单加红万度公清七直车己百没江白老长目斯己非经矿酸百实强月打它组段强看场位属五意家圆易图分机道条条状新求区确易最老入很白解前族象必有年两速决记美化被查务风结连六细运长二体这表车电八角五还图几交七候经多接需料教一名用派派算院从小美区花本接完许口选安南起意年现民以月不花么用有所边色了展包县全音发商比身立格员百实济知问清知展名计验带单理式七都斯口支间派置二代教效所

20172302《程序设计与数据结构》实验三 敏捷开发与XP实践报告

课程:<程序设计与数据结构> 班级: 1723 姓名: 侯泽洋 学号:20172302 实验教师:王志强老师 实验日期:2018年5月16日 必修/选修: 必修 1.实验内容 (1)代码规范 http://www.cnblogs.com/rocedu/p/4795776.html, Eclipse的内容替换成IDEA 参考 http://www.cnblogs.com/rocedu/p/6371315.html#SECCODESTANDARD 安装alibaba 插件,解决代码中的规范问题.

20172302 《Java软件结构与数据结构》实验二:树实验报告

课程:<Java软件结构与数据结构> 班级: 1723 姓名: 侯泽洋 学号:20172302 实验教师:王志强老师 实验日期:2018年11月5日 必修/选修: 必修 实验内容 (1)参考教材p212,完成链树LinkedBinaryTree的实现(getRight,contains,toString,preorder,postorder:用JUnit或自己编写驱动类对自己实现的LinkedBinaryTree进行测试,提交测试代码运行截图,要全屏,包含自己的学号信息 (2)基于Linked

收藏的书录,值得花时间去读的书

一.科学名著12本 1 欧几里得<几何原本>,兰纪正等译,陕西科技出版社1990年出版 2 阿基米德<阿基米德全集>,朱恩宽等译,陕西科技出版社1998年出版 3 哥白尼<天体运行论>,叶式辉译,陕西人民出版社出版 4 伽利略<关于两大世界体系的对话>,编译组译,上海人民出版社出版 5 笛卡尔<几何学>,袁向东译,武汉出版社出版 6 牛顿<自然哲学的数学原理>,王克迪译,武汉出版社出版 7 拉瓦锡<化学基础论>,任定成译,