`
抛出异常的爱
  • 浏览: 627948 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

猜数字游戏

阅读更多
引用
猜数字的游戏,很多人都玩过吧,规则是这样的:随机产生一个由4个不同数字串,如0257。玩家输入自己猜测的数字如:4567,此时系统将给出提示 1a1b,1a表示有猜中一个数字,且位置正确(7),1b表示猜中一个数字,且位置不正确,如此猜下去,直到所猜数字返回4a0b为止。

现在转换角色,让程序来玩这个游戏,用户输入10个不同的A-Z的字母,然后程序猜测这10个字母是什么样的排列组合,平台将告知程序xayb,让程序尽量用最少的次数解出答案。


先作出一个出题机。
package com.maodajun.javaeye2;

public class GuessNumber {
	String primitive ="";
	public GuessNumber(String primitive){
		this.primitive=primitive;
	}
        public GuessNumber(){
		
		List list = new ArrayList();
		String primitive = "";
		for(int i = 0 ; i < 26 ; i ++){
			char tmp = (char) ('A'+i);
			list.add( Character.toString(tmp));
			
		}
		int j =-1;
		for(int i = 0 ; i <10 ; i++){		 
			j =r.nextInt(list.size());
			primitive+=list.remove(j);
		}
		this.primitive=primitive;
	
		
	}
	
	public String guessOne(String guessone){
		if(primitive.equalsIgnoreCase(guessone) ){
			return primitive.length()+"a"+0+"b";
			
		}
		char[] oldchars = primitive.toCharArray();
		char[] guesschars = guessone.toCharArray();
		int a = 0 ; 
		int b =0;
		for(int i  = 0 ; i < oldchars.length ||i < guesschars.length ; i++ ){
			if(oldchars[i]==guesschars[i]){
				oldchars [i ]= '0';
				guesschars[i]='0';
				a++;
				
			}
		}
		for(int i = 0 ; i < oldchars.length ; i ++){
			
			if(guessone.indexOf(oldchars[i])>0){
				b++;
				oldchars[i]='0';
			}
		}
		
		
		return a+"a"+b+"b";
	}

}

测试 代码:
package com.maodajun.javaeye2;

import junit.framework.TestCase;

public class GuessNumberTest extends TestCase {
	public GuessNumber gn= null;
	public static void main(String[] args) {
		junit.textui.TestRunner.run(GuessNumberTest.class);
	}

	protected void setUp() throws Exception {
		super.setUp();
	}

	protected void tearDown() throws Exception {
		super.tearDown();
	}

	/*
	 * Test method for 'com.maodajun.javaeye2.GuessNumber.guessOne(String)'
	 */
	public void testGuessOne() {
		gn = new GuessNumber("ABCD");
		assertEquals("4a0b",gn.guessOne("ABCD"));
		assertEquals("0a0b",gn.guessOne("EFGH"));
		assertEquals("1a0b",gn.guessOne("AEFG"));
		assertEquals("0a1b",gn.guessOne("EAFG"));

	}

}
分享到:
评论
3 楼 Lich_Ray 2007-08-16  
LS 明明只写了一个出题目的游戏...我怎么可能没看清原题。

PS: 区别不是很大?你那个版本不但只能猜字母,而且还只能猜4个字母;而我写的可以猜任意个数的同类型常量,比如 game = startGame "BODXA"。/* smile */ 这道 AI 的题应该也不难,以后再说。
2 楼 抛出异常的爱 2007-08-09  
你没读懂。
这个题目是说怎么样才能用电脑猜出预设数字。
是个人工智能的题。

PS:50行与5行的区别不是很大。。。。。我认为
1 楼 Lich_Ray 2007-08-03  
崩溃,这么长  。花 5 分钟用 Haskell 写了一个:
startGame ns = ans (0, 0) ns
	where ans r _ [] = r
		ans (a, b) (m:ms) (x:xs)
			| m == x = ans (a + 1, b) ms xs
			| elem x ns = ans (a, b + 1) ms xs
			| True = ans (a, b) ms xs

在互交解释器里执行
game = startGame [5,1,0,3]
即可开始一个新游戏 game,参数是你猜的数列,返回一个元组(A, B)。
引用

Main> game [0,1,2,3]
(2,1) :: (Integer,Integer)
Main> game [4,5,6,7]
(0,1) :: (Integer,Integer)
Main> game [0,1,3,5]
(1,3) :: (Integer,Integer)
Main> game [1,3,5,0]
(0,4) :: (Integer,Integer)
Main> game [5,1,3,0]
(2,2) :: (Integer,Integer)
Main> game [5,1,0,3]
(4,0) :: (Integer,Integer)
Main>

博主应该庆幸我没有就此发篇博客叫做《五行与五十行的区别》

相关推荐

    winform 猜数字游戏

    【winform猜数字游戏】是基于Visual Studio(VS)开发环境,使用C#编程语言实现的一个小型桌面应用程序。Winform是.NET Framework中的Windows应用程序开发框架,它为开发者提供了创建具有图形用户界面(GUI)的应用...

    C语言猜数字游戏代码

    【C语言猜数字游戏代码】是一个经典的编程练习项目,它能帮助初学者更好地理解C语言的基本语法、控制结构以及函数的使用。在这个游戏中,计算机随机生成一个数字,玩家需要通过输入猜测这个数字,然后程序会根据玩家...

    Matlab猜数字游戏GUI界面设计

    本人基于以前安卓手机玩猜数字的游戏的经验,基于Matlab的GUI界面开发了程序,可完美实现此功能,程序包括3个文件,1个fig文件和2个m文件,可完美运行。 下面简介一下猜数字游戏的玩法: 1.点击“开始游戏”,随机...

    猜数字游戏实验报告.docx

    【猜数字游戏实验报告】 本实验报告主要围绕一个基于C++的猜数字游戏进行,旨在锻炼学生的编程能力和逻辑思维。游戏的基本流程是计算机生成一个随机数,玩家通过一系列提示逐步猜出这个数字。以下是该实验的详细...

    Java里猜数字游戏代码

    在Java编程世界中,猜数字游戏是一个经典的入门项目,它能帮助初学者更好地理解控制流程、条件判断和随机数生成等基本概念。本教程将详细探讨如何使用Java编写一个简单的猜数字游戏,并涉及JSTL(JavaServer Pages ...

    猜数字游戏实验报告 (2).docx

    《猜数字游戏实验报告》详述了一款基于VC++实现的猜数字游戏的开发过程,该实验旨在训练学生的编程能力和逻辑思维。以下是该实验报告的关键知识点: 1. **随机数生成**:游戏的核心是计算机生成一个随机数供玩家...

    微信小程序——猜数字游戏

    在这个“微信小程序——猜数字游戏”项目中,我们将会探讨微信小程序开发的一些核心技术和实现策略。 首先,我们要了解小程序的基本结构。微信小程序由多个页面构成,每个页面包括wxml(结构层)和wxss(样式层)...

    猜数字游戏的代码

    猜数字游戏。要求: //编写一个Java应用程序,实现下列功能: //1) 程序随机分配给客户一个1—100之间的整数 //2) 用户在输入对话框中输入自己的猜测 //3) 程序返回提示信息,提示信息分别是:“猜大了”、“猜...

    易语言猜数字游戏

    易语言猜数字游戏是一款基于易语言编程环境开发的简单娱乐软件,主要目的是让用户通过猜测一个随机生成的数字来体验游戏的乐趣。在这个游戏中,系统会自动生成一个特定范围内的随机数,然后用户尝试猜测这个数字,...

    C#编写经典猜数字游戏(内含源代码)

    在本项目中,我们讨论的是一个使用C#编程语言实现的经典猜数字游戏。这个游戏的核心是通过计算机随机生成一个数字,然后让用户尝试猜测这个数字,直到用户猜对为止。以下是关于这个游戏的一些关键知识点: 1. **C#...

    文曲星猜数字游戏,Delphi筛选法破解示例.rar

    《文曲星猜数字游戏与Delphi筛选法破解解析》 在编程的世界里,游戏开发是一种常见的实践方式,尤其对于初学者来说,它既有趣又能锻炼编程技能。今天我们要探讨的是一个特别的游戏——文曲星猜数字游戏,以及如何...

    java编写简单有趣的猜数字游戏

    ### Java编写简单有趣的猜数字游戏 #### 背景与目标 猜数字游戏是一种非常受欢迎的益智游戏,尤其适合编程新手练习逻辑思维与编程技巧。本文将详细介绍如何使用Java语言来开发这样一个游戏,帮助读者理解游戏的...

    java 猜数字游戏源码

    Java猜数字游戏是一种常见的编程练习,它通过生成一个随机数并让用户尝试猜测这个数字来实现。在这个游戏里,我们主要涉及两个重要的Java概念:`Random`类和用户输入处理。下面将详细介绍这两个知识点。 首先,`...

    JSP界面设计--猜数字游戏

    **JSP界面设计--猜数字游戏** 在IT领域,JSP(JavaServer Pages)是一种用于创建动态网页的技术,它结合了HTML和Java代码,使得开发者能够构建交互式的Web应用程序。本项目是一个基于JSP的猜数字游戏,它提供了一个...

    猜数字游戏程序代码和实验报告

    《猜数字游戏程序代码与实验报告》 猜数字游戏是一种常见的编程练习,旨在提升初学者对编程逻辑的理解和掌握。这个项目是针对大一学生的一次课程设计,它包括了完整的程序代码以及详尽的实验报告,涵盖了实验目的、...

    作业4 猜数字游戏

    在这个“作业4 猜数字游戏”中,我们看到了一个基于JSP(JavaServer Pages)构建的简单网页应用。这个游戏的逻辑分为两个主要部分:`ex3_index.jsp`和`result.jsp`。下面是对这两个页面的功能和涉及的技术点的详细...

    基于authorware的猜数字游戏设计

    在这个“基于Authorware的猜数字游戏设计”项目中,我们将深入探讨如何利用Authorware的特性来构建一个有趣且富有挑战性的猜数字游戏。 首先,我们要理解Authorware的工作原理。Authorware采用图标流程图的方式来...

    jsp猜数字游戏

    【jsp猜数字游戏】是一个基于JavaServer Pages (JSP)技术开发的小型应用程序,它提供了一个互动的猜数字游戏体验。对于初学者来说,这是一个很好的实践项目,可以帮助他们理解和掌握JSP的基本语法、Servlet和MVC...

Global site tag (gtag.js) - Google Analytics