
Photo by
ia19200102
アイズオンラインジャッジメント(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;
}
}
}