Problem 0502 : Dice
サイコロの動きをシミュレートする問題。
置換の仕方は6通りしかないので全部書くだけ。
でも実際にサイコロが手元になくて時間がかかってしまいました。
import java.util.*; class Main { static int north[] = {1,5,2,3,0,4}; static int east[] = {3,1,0,5,4,2}; static int west[] = {2,1,5,0,4,3}; static int south[] = {4,0,2,3,5,1}; static int left[] = {0,3,1,4,2,5}; static int right[] = {0,2,4,1,3,5}; public static void main(String args[]){ Scanner in = new Scanner(System.in); for(;;){ int n = in.nextInt(); if(n==0) return ; int dice[] = {1,2,3,4,5,6}; int ans = 1; for(int i=0; i<n; i++){ String cmd = in.next(); dice = change(dice, cmd); ans += dice[0]; } System.out.println(ans); } } private static int[] change(int[] dice, String dir){ int ans[] = new int[6]; if(dir.equals("North")){ for(int i=0; i<6; i++) ans[i] = dice[north[i]]; } else if(dir.equals("East")){ for(int i=0; i<6; i++) ans[i] = dice[east[i]]; } if(dir.equals("West")){ for(int i=0; i<6; i++) ans[i] = dice[west[i]]; } if(dir.equals("South")){ for(int i=0; i<6; i++) ans[i] = dice[south[i]]; } if(dir.equals("Right")){ for(int i=0; i<6; i++) ans[i] = dice[right[i]]; } if(dir.equals("Left")){ for(int i=0; i<6; i++) ans[i] = dice[left[i]]; } return ans; } }