Hos' Xmas Contest 2010 B "Simple Parsing"
問題:http://judge.imoz.jp/page.php?page=view_problem&pid=62&cid=12
昼の部に参加.
いろいろとひどいコード.
import java.util.Scanner; // B "Simple Parsing" public class Main { public static void main(String[] args) { Scanner s = new Scanner(System.in); for (String line; !(line = s.next()).equals("#");) { System.out.println(parse(line) == 0 ? "EVEN" : "ODD"); } } static int parse(String line) { int r = 0, p = 0; char c = line.charAt(0); if (c == '-') { } else if (c == '(') { int cnt = 1; for (++p; cnt > 0; ++p) { char cc = line.charAt(p); if (cc == '(') { ++cnt; } else if (cc == ')') { --cnt; } } r = parse(line.substring(1, p - 1)); } else { while (p < line.length() && line.charAt(p) != '-' && line.charAt(p) != '+') { ++p; } r = (line.charAt(p - 1) - '0') % 2; } if (p < line.length()) { r += parse(line.substring(p + 1)); } return r % 2 == 0 ? 0 : 1; } }
※追記
解説見て書き直した.
数字だけ取り出して奇数の数の奇遇で判定.
import java.util.*; // B "Simple Parsning" public class Main { public static void main(String[] args) { Scanner s = new Scanner(System.in); for (String line; !(line = s.next()).equals("#");) { boolean b = true; for (Scanner t = new Scanner(line).useDelimiter("\\D+"); t .hasNext();) { char[] i = t.next().toCharArray(); if ((i[i.length - 1] - '0') % 2 > 0) { b = !b; } } System.out.println(b ? "EVEN" : "ODD"); } } }