Topcoder SRM 484 div2 "NumberMagicEasy"
問題:http://www.topcoder.com/stat?c=problem_statement&pm=11129&rd=14237
プラクティス.
どうやら自分の方法では,可能性のある数字のうち最小のものを取ってくる必要があるらしい.ということで本番はfailed.
import java.util.Arrays; import java.util.HashSet; import java.util.Set; public class NumberMagicEasy { public int theNumber2(String answer) { Integer[][] a = { { 1, 2, 3, 4, 5, 6, 7, 8 }, { 1, 2, 3, 4, 9, 10, 11, 12 }, { 1, 2, 5, 6, 9, 10, 13, 14 }, { 1, 3, 5, 7, 9, 11, 13, 15 } }; List<Integer> set = new ArrayList<Integer>(); for (int i = 1; i < 17; ++i) { set.add(i); } for (int i = 0; i < 4; ++i) { if (answer.charAt(i) == 'N') { set.removeAll(Arrays.asList(a[i])); } } return set.iterator().next(); } }
@lettas0726によると以下のコードでもいいらしい.へー.
http://ideone.com/iqTLw
public class NumberMagicEasy { public int theNumber(String answer) { return Integer.valueOf(answer.replaceAll("Y", "0").replaceAll("N", "1"), 2) + 1; } }