見出し画像

アイズオンラインジャッジメント(AOJ)のプログラムコード置き場(C#) [ITP1_11]

こんにちは。シジミです。

この記事はAOJで回答したコードを随時置いていきます。

構成としまして、以下のように三弾構成にしています。

環境はvisual sutadio 2019、言語はC#です。

問題:ITP1_11_A

using System;
using System.Collections.Generic;
using System.Lnq;
using System.Text.RegularExpressions;

namespace ITP_1_11A
{
    public class Dice
    {
       public int A, B, C, D, E, F, T;
       public Dice(int a, int b, int c, int d, int e, int f)
        {
            A = a;
            B = b;
            C = c;
            D = d;
            E = e;
            F = f;
        }

        public void turn_W()
        {
            T = A;
            
            A = C; C = F; F = D; D = T;
        }
        public void turn_E()
        {
            T = A;

            A = D; D = F; F = C; C = T;
        }
        public void turn_N()
        {
            T = A;

            A = B; B = F; F = E; E = T;
        }
        public void turn_S()
        {
            T = A;

            A = E; E = F; F = B; B = T;
        }

    }

    class Program
    {
        static void Main(string[] args)
        {
            var X = Console.ReadLine().Trim().Split(' ').Select(s => int.Parse(s)).ToArray();
            var Y = Console.ReadLine();

            Dice dice = new Dice(X[0],X[1],X[2],X[3],X[4],X[5]);

            foreach (var item in Y)
            {
                if (item == 'W') dice.turn_W();
                else if (item == 'E') dice.turn_E();
                else if (item == 'N') dice.turn_N();
                else if (item == 'S') dice.turn_S();
            }
            Console.WriteLine(dice.A);

            return;
        }
    }

}

問題:ITP1_11_B

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text.RegularExpressions;

namespace ITP_1_6A
{
    public class Dice
    {
        public int A, B, C, D, E, F, T;
        public Dice(int a, int b, int c, int d, int e, int f)
        {
            A = a;B = b; C = c; D = d;E = e;F = f;
        }

        public void turn_W()
        {
            T = A;

            A = C; C = F; F = D; D = T;
        }
        public void turn_E()
        {
            T = A;

            A = D; D = F; F = C; C = T;
        }
        public void turn_N()
        {
            T = A;

            A = B; B = F; F = E; E = T;
        }
        public void turn_S()
        {
            T = A;

            A = E; E = F; F = B; B = T;
        }
        public void turnRight()
        {
            T = B;

            B = C; C = E; E = D; D = T;
        }
        public void turn_Left()
        {
            T = B;

            B = D; D = E; E = C; C = T;
        }

    }

    class Program
    {
        static String[] pattern = { "", "N", "N", "N", "E", "EE" };
        static void Main(string[] args)
        {
            var X = Console.ReadLine().Trim().Split(' ').Select(s => int.Parse(s)).ToArray();
            var Y = int.Parse(Console.ReadLine());


            Dice dice = new Dice(X[0], X[1], X[2], X[3], X[4], X[5]);

            for (int i = 0; i < Y; i++)
            {
                int j = 0;
                var line = Console.ReadLine().Trim().Split(' ').Select(s => int.Parse(s)).ToArray();
                Dice temp = new Dice(dice.A, dice.B, dice.C, dice.D, dice.E, dice.F);

                while (j < 6)
                {
                    foreach (var item in pattern[j])
                    {
                        if (item == 'W') temp.turn_W();
                        else if (item == 'E') temp.turn_E();
                        else if (item == 'N') temp.turn_N();
                        else if (item == 'S') temp.turn_S();
                    }

                    //右に回転させる
                    for (int k = 0; k < 4; k++)
                    {
                        temp.turnRight();
                        if (temp.A == line[0] && temp.B == line[1])
                        {
                            Console.WriteLine(temp.C);
                            break;
                        }
                    }
                    j++;
                }
            }

            return;
        }
    }

}

問題:ITP1_11_C

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text.RegularExpressions;

namespace ITP_1_6A
{

     public class Dice
    {
        public int A, B, C, D, E, F, T;
        public Dice(int a, int b, int c, int d, int e, int f)
        {
            A = a;B = b; C = c; D = d;  E = e; F = f;
        }

        public void turn_W()
        {
            T = A;

            A = C; C = F; F = D; D = T;
        }
        public void turn_E()
        {
            T = A;

            A = D; D = F; F = C; C = T;
        }
        public void turn_N()
        {
            T = A;

            A = B; B = F; F = E; E = T;
        }
        public void turn_S()
        {
            T = A;

            A = E; E = F; F = B; B = T;
        }
        public void turnRight()
        {
            T = B;

            B = C; C = E; E = D; D = T;
        }
        public void turn_Left()
        {
            T = B;

            B = D; D = E; E = C; C = T;
        }

    }

    class Program
    {
        static String[] pattern = { "", "N", "N", "N", "E", "EE" };
        static void Main(string[] args)
        {
            var X = Console.ReadLine().Trim().Split(' ').Select(s => int.Parse(s)).ToArray();
            var X1 = Console.ReadLine().Trim().Split(' ').Select(s => int.Parse(s)).ToArray();


            Dice dice = new Dice(X[0], X[1], X[2], X[3], X[4], X[5]);
            Dice dice2 = new Dice(X1[0], X1[1], X1[2], X1[3], X1[4], X1[5]);

            Console.WriteLine(isSame(dice, dice2) == true ? "Yes": "No");

            return;
        }

        static bool isSame(Dice d1, Dice d2)
        {

                int j = 0;

                while (j < 6)
                {
                    foreach (var item in pattern[j])
                    {
                        if (item == 'W') d2.turn_W();
                        else if (item == 'E') d2.turn_E();
                        else if (item == 'N') d2.turn_N();
                        else if (item == 'S') d2.turn_S();
                    }

                    //右に回転させる
                    for (int k = 0; k < 4; k++)
                    {
                        d2.turnRight();
                        if (d1.A == d2.A && d1.B == d2.B && d1.C == d2.C &&
                            d1.D == d2.D && d1.E == d2.E && d1.F == d2.F)
                        {
                            return true;
                        }
                    }
                    j++;
                }
            return false;

        }
    }

}

問題:ITP1_11_D

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text.RegularExpressions;

namespace ITP_1_6A
{    public class Dice
    {
        public int A, B, C, D, E, F, T;
        public Dice(int a, int b, int c, int d, int e, int f)
        {
            A = a;
            B = b;
            C = c;
            D = d;
            E = e;
            F = f;
        }

        public void turn_W()
        {
            T = A;

            A = C; C = F; F = D; D = T;
        }
        public void turn_E()
        {
            T = A;

            A = D; D = F; F = C; C = T;
        }
        public void turn_N()
        {
            T = A;

            A = B; B = F; F = E; E = T;
        }
        public void turn_S()
        {
            T = A;

            A = E; E = F; F = B; B = T;
        }
        public void turnRight()
        {
            T = B;

            B = C; C = E; E = D; D = T;
        }
        public void turn_Left()
        {
            T = B;

            B = D; D = E; E = C; C = T;
        }

    }

    class Program
    {
        static String[] pattern = { "", "N", "N", "N", "E", "EE" };
        static void Main(string[] args)
        {
            var X = Console.ReadLine().Trim().Split(' ').Select(s => int.Parse(s)).ToArray();

            Dice[] dices = new Dice[X[0]];
            for (int i = 0; i < X[0]; i++)
            {
                var line = Console.ReadLine().Trim().Split(' ').Select(s => int.Parse(s)).ToArray();
                dices[i] = new Dice(line[0],line[1],line[2],line[3],line[4],line[5]);
            }

            for (int i = 0; i < X[0] - 1; i++)
            {
                for (int j = i + 1; j < X[0]; j++)
                {
                    if (isSame(dices[i], dices[j]) == true)
                    {
				Console.WriteLine("No");
                        return;
                    }
                }
            }

            Console.WriteLine("Yes");

            return;
        }

        static bool isSame(Dice d1, Dice d2)
        {

                int j = 0;

                while (j < 6)
                {
                    foreach (var item in pattern[j])
                    {
                        if (item == 'W') d2.turn_W();
                        else if (item == 'E') d2.turn_E();
                        else if (item == 'N') d2.turn_N();
                        else if (item == 'S') d2.turn_S();
                    }

                    //右に回転させる
                    for (int k = 0; k < 4; k++)
                    {
                        d2.turnRight();
                        if (d1.A == d2.A && d1.B == d2.B && d1.C == d2.C &&
                            d1.D == d2.D && d1.E == d2.E && d1.F == d2.F)
                        {
                            return true;
                        }
                    }
                    j++;
                }
            return false;

        }
    }

}

この記事が気に入ったらサポートをしてみませんか?