用Java解PythonChallenge(第一天)

www.pythonchallenge.com是一个学习python语言的过关游戏,非常有意思。很早以前就知道了这个网站,但是因为python水平不佳,所以一直想等水平再高一点点再去玩。
周五的时候和同事们谈论起了Python,Ruby等动态语言与Java语言相比的一些优势,我举了pythonchanllenge中的第0题:计算2的38次方的例子,结果几个同事都对此产生了兴趣,不断的去用java来攻关,呵呵,希望大家也参与到进来,给出你的方法:)

玩法介绍:我代码注释中的网址就是题目,过关方式是将题目的答案替换掉url中的题号,比如第0题的题目是 http://www.pythonchallenge.com/pc/def/0.html,过关方法就是计算出2的38次方以后,将答案274877906944.html替换掉0.html, http://www.pythonchallenge.com/pc/def/274877906944.html即第1题的题目,以此类推。

1.
import java.math.BigDecimal;

//http://www.pythonchallenge.com/pc/def/0.html
public class ChallengeZero {
	public static void main(String[] args) {
		BigDecimal a = new BigDecimal(2);
		BigDecimal b = a.pow(38);
		System.out.print(b);
	}
}


2.
public class ChallengeOne {
	// http://www.pythonchallenge.com/pc/def/map.html
	public static void main(String[] args) {
		String from = "g fmnc wms bgblr rpylqjyrc gr zw fylb. rfyrq ufyr amknsrcpq ypc dmp. bmgle gr gl zw fylb gq glcddgagclr ylb rfyr'q ufw rfgq rcvr gq qm jmle. sqgle qrpgle.kyicrpylq() gq pcamkkclbcb. lmu ynnjw ml rfc spj. ";
		//String from = "map";
		String to = new ChallengeOne().translate(from);

		System.out.println(to);
	}

	public String translate(String s) {
		StringBuffer sb = new StringBuffer();
		for (int i = 0; i < s.length(); i++) {
			if (String.valueOf(s.charAt(i)).matches("[A-Z]|[a-z]")) {
				if (s.charAt(i) == 'y') {
					sb.append('a');
				} else if (s.charAt(i) == 'z') {
					sb.append('b');
				} else {
					sb.append((char) (s.charAt(i) + 2));
				}
			} else {
				sb.append(s.charAt(i));
			}
		}
		return sb.toString();
	}
}

注:题目中的那串字符串的最终意思是让你用写好的转换方法来转换url中的单词,也就是map

3.
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;

public class ChallengeTwo {
	// http://www.pythonchallenge.com/pc/def/ocr.html
	public static void main(String[] args) {
		try {
			BufferedReader br = new BufferedReader(new FileReader(System.getProperty("user.dir")+"\\ocr.txt"));
			String temp=null;
			while ((temp=br.readLine()) != null) {
				for(int i=0;i<temp.length();i++){
					if(String.valueOf(temp.charAt(i)).matches("[A-Z]|[a-z]")){
						System.out.print(temp.charAt(i));
					}
				}
			}
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}

注:网页的源码中有用注释写的一段乱码,其中混杂着几个英文字母,我们要做的就是将其中的英文字母找出来

你可能感兴趣的:(java,游戏,python,Ruby,网页游戏)