AIZU ONLINE JUDGEで、アルゴリズムの勉強をしているのですが、サイコロの部分でよくわからない部分があります。
他の方が書いたJavaのプログラムを見ているのですが、何でこうなるのかがわかりません。
Java
1import java.io.BufferedReader; 2import java.io.IOException; 3import java.io.InputStreamReader; 4 5public class Main { 6 public static void main(String[] args) throws IOException { 7 BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 8 String[] input = br.readLine().split(" "); 9 int[] sides = new int[6]; 10 for (int i = 0; i < 6; i++) { 11 sides[i] = Integer.parseInt(input[i]); 12 } 13 Dice dice = new Dice(sides); 14 15 char[] ca = br.readLine().toCharArray(); 16 for (char c : ca) { 17 switch (c) { 18 case 'N': 19 dice.N(); 20 break; 21 case 'E': 22 dice.E(); 23 break; 24 case 'S': 25 dice.S(); 26 break; 27 case 'W': 28 dice.W(); 29 break; 30 default: 31 break; 32 } 33 } 34 System.out.println(dice.getSide(0)); 35 } 36 37} 38 class Dice { 39 private int[] sides = new int[6]; 40 Dice(int[] sides) { 41 this.sides = sides; 42 } 43 44 public void N() { 45 int tmp = sides[0]; 46 sides[0] = sides[1]; 47 sides[1] = sides[5]; 48 sides[5] = sides[4]; 49 sides[4] = tmp; 50 } 51 52 public void E() { 53 int tmp = sides[0]; 54 sides[0] = sides[3]; 55 sides[3] = sides[5]; 56 sides[5] = sides[2]; 57 sides[2] = tmp; 58 } 59 60 public void S() { 61 int tmp = sides[0]; 62 sides[0] = sides[4]; 63 sides[4] = sides[5]; 64 sides[5] = sides[1]; 65 sides[1] = tmp; 66 } 67 68 public void W() { 69 int tmp = sides[0]; 70 sides[0] = sides[2]; 71 sides[2] = sides[5]; 72 sides[5] = sides[3]; 73 sides[3] = tmp; 74 } 75 76 public int getSide(int i) { 77 return sides[i]; 78 } 79} 80
class DiceのN()E()S()W()の配列がなぜ、この順番になるのでしょうか?
class Dice {
private int[] sides = new int[6];
Dice(int[] sides) {
this.sides = sides;
}
public void N() { int tmp = sides[0]; sides[0] = sides[1]; sides[1] = sides[5]; sides[5] = sides[4]; sides[4] = tmp; }
ページの図にあるサイコロをN方向に転がしていくとすると、2→6→5→1の順に数字が上部に来ると思うのですが…。
私が、何か考え違いをしているのでしょうか?
自分でも考えているのですが、答えが分からず困っています。わかる方いらっしゃいましたら、教えて下さい。
よろしくお願い致します。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2017/10/23 04:16