package ticket;
import java.io.File;
import java.io.FileInputStream;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.commons.io.IOUtils;
import org.junit.Test;
public class LotteryTicket {
@SuppressWarnings("unchecked")
@Test
public void test() throws Exception {
List<String> readLines = IOUtils.readLines(new FileInputStream(
new File("2015.txt")));
List<String> buyTicketsString = IOUtils.readLines(new FileInputStream(
new File("buyTicket.txt")));
List<Ticket> buyTickets = new ArrayList<Ticket>();
Map<String, Ticket> allTicketsMap = new HashMap<String, Ticket>();
for (String buyTicket : buyTicketsString) {
buyTickets.add(toTicket(buyTicket));
}
for (String buyTicket : readLines) {
Ticket ticket = toTicket(buyTicket);
allTicketsMap.put(ticket.getTicketSerial(), ticket);
}
for (Ticket ticket : buyTickets) {
Ticket inputTicket = allTicketsMap.get(ticket.getTicketSerial());
check500Million(inputTicket, ticket);
}
}
public void check500Million(Ticket ticket, Ticket buyTicket) {
boolean hasBuleBall = ticket.getBlueBall().equals(
buyTicket.getBlueBall());
List<String> redBalls = ticket.getRedBalls();
int redHits = 0;
for (String redBall : redBalls) {
if(buyTicket.getRedBalls().contains(redBall))
{
redHits++;
}
}
if(redHits == 6 && hasBuleBall)
{
System.out.println("一等奖");
}
else if(redHits == 6)
{
System.out.println("二等奖");
}
else if(redHits == 5 && hasBuleBall)
{
System.out.println("三等奖");
}
else if ( redHits == 5 || (redHits == 4 && hasBuleBall))
{
System.out.println("四等奖");
}
else if(redHits == 4 || (redHits == 3 && hasBuleBall))
{
System.out.println("五等奖");
}
else if(hasBuleBall)
{
System.out.println("六等奖");
}
else
{
System.out.println("无奖");
}
}
public Ticket toTicket(String fileLine) {
if ("".equals(fileLine) || null == fileLine) {
return Ticket.EMPTY_TICKET;
}
String[] lineContent = fileLine.split("\\s+");
Ticket ticket = new Ticket();
ticket.setTicketSerial(lineContent[0]);
ticket.setTicketTime(lineContent[2]);
String[] balls = lineContent[1].split("\\|");
String bullBalls = balls[1];
ticket.setBlueBall(bullBalls);
String redBalls = balls[0];
String[] redBallArray = redBalls.split(",");
ticket.getRedBalls().addAll(Arrays.asList(redBallArray));
return ticket;
}
// @Test
public void testToTicket() {
toTicket("2015040 13,16,18,27,30,32|16 2015-04-09");
}
}
分享到:
相关推荐
为确保数据在传输、存储过程中的无误,我们经常使用各种校验机制,如CRC(Cyclic Redundancy Check)、累加和校验以及异或和校验。CheckTool V1.0是一款专门针对这些校验方法的专业工具,它能够帮助用户快速、准确地...
【描述】提到这个ASP版中文校验码是从动网程序中独立出来的,这意味着它原本是某个大型系统的一部分,现在被单独提取出来,以便开发者在自己的项目中更加便捷地应用。这种分离和复用的策略有利于减少开发时间,提高...
CRC校验通过计算数据的特定校验码,然后将这个校验码与接收端计算出的校验码进行比较,以此判断数据是否在传输过程中出现错误。 1. **CRC原理**: CRC校验基于多项式除法,它将待校验的数据看作是二进制多项式的...
累加校验和CRC16校验是两种广泛应用于数据通信和存储系统中的错误检测机制。它们的主要目的是确保数据在传输或存储过程中没有发生错误,从而提高数据的可靠性。 **累加校验(Accumulator Checksum)** 累加校验是...
在信息技术领域,数据的准确性至关重要,因此,各种校验机制被广泛应用于确保数据在传输过程中的完整性。BCC(Block Check Character,块校验字符)是一种简单而有效的错误检测方法,尤其在通信和存储系统中非常常见...
累加和校验与异域和校验是两种在数据通信和存储系统中常见的错误检测方法,用于确保数据在传输或存储过程中没有发生错误。这些校验方法在计算机科学和IT领域扮演着至关重要的角色,因为它们能有效地提高数据的可靠性...
这样,接收方可以通过检查接收到的校验码中的1数量是否符合预设的奇偶规则来判断数据在传输过程中是否有误。如果1的数量与预期不符,就可能发生了错误。 在本次实验中,使用了74368芯片作为奇偶校验电路的关键组件...
MD5 效验王 5.9 绿色中文版是一款提取自 2345 好压 5.9 版本的 MD5 效验工具,不占用资源,可帮助用户来快速的对网络下载的文件进行MD5值的效验,通过效验可查看程序的完成性及是否被篡改。 文件校验工具 MD5 校验...
在通信、存储系统以及软件编程中,CRC校验扮演着至关重要的角色,确保数据在传输或存储过程中的完整性。本文将详细探讨CRC16校验的原理、实现方式以及在VC6环境下如何进行应用。 CRC16是CRC家族中的一员,它通过...
加和校验与累加和校验是计算机领域中数据完整性检查的重要方法,主要用于确保数据在传输或存储过程中没有发生错误。这些校验方法在多种应用场景中都有所应用,例如在网络通信、数据库管理、文件传输等。下面我们将...
在这个过程中,用户或系统会将Excel表格中的数据提取出来,经过一系列验证规则的检查,然后将有效数据存储到数据库中,同时记录和报告校验结果。下面,我们将深入探讨这个过程涉及的关键知识点。 首先,Excel作为...
奇偶校验是一种更简单的校验方式,通过计算数据位中的1的数量,使得接收和发送端的奇偶性保持一致。 接收端接收到数据后,首先进行CRC或求和校验以确认数据的完整性,然后进行解码,将二进制数据转换回字符。这些...
接收方同样计算接收到的数据的累加和并与校验值进行对比,从而判断数据是否正确。 ##### 4.2 C++实现 ```cpp uchar SumValid(const uchar* puchData, int len) { uchar crc8 = 0; while (len--) { crc8 += (*...
1. **CRC(Cyclic Redundancy Check)**:循环冗余校验是一种广泛使用的错误检测方法,通过计算数据的CRC值并与预期的CRC值比较,来判断数据是否正确无误。 2. ** Adler-32 或 MD5**:这些是哈希函数,生成一个固定...
它的核心原理是基于异或(XOR)运算的特性来计算数据的校验和,以验证数据在传输过程中是否发生错误。下面我们将深入探讨这个工具及其背后的理论知识。 首先,十六进制(Hexadecimal)是一种数值表示法,它使用16个...
它基于二进制异或运算,通过计算一组数据位的异或结果来生成一个校验和,这个校验和可以用于检测数据在传输或存储过程中是否发生错误。 在计算机科学中,异或(XOR)是一种基本的逻辑运算,其规则是:当两个输入位...
本示例中,我们关注的是如何使用JavaScript来校验输入数据中是否包含特殊字符。特殊字符过滤是一个常见的需求,它能防止不合规的字符如SQL注入攻击等安全问题。以下是关于"js校验特殊字符"这一主题的详细解释: 1. ...
LRC(Longitudinal Redundancy Check)纵向冗余校验是一种简单而有效的错误检测方法,常用于串行通信和数据存储中。它的主要目的是确保数据在传输或存储过程中的完整性。在Java编程语言中,我们可以自动生成LRC校验...
UDP校验和算法是UDP协议中用于检测数据包在传输过程中是否发生错误的重要机制。通过本篇文章的介绍,我们不仅了解了UDP校验和算法的基本原理,还通过具体的C语言代码示例深入理解了其实现细节。在实际开发中,正确...
CRC(Cyclic Redundancy Check)是一种常用的数据校验算法,用于检测数据传输过程中的错误。它通过计算数据的CRC校验值来实现数据的完整性和正确性校验。在实际应用中,CRC校验有多种实现方式,本文将从标题、描述、...