Az alábbi letöltési lehetőségek közül választhatsz: (
segítség)
Típus: text/plain
Tartalmaz szöveget
Karakterkódolás: utf-8
Méret: 4 KB
using System;
using System.IO;
using System.Collections.Generic;
using System.Text;
namespace szojatek
{
class Program
{
public static bool[,] table;
public static bool[] volt;
public static bool[] most;
public static bool[] temp;
public static int szn;
public static int si;
public static int ci;
public static string start;
public static string cel;
public static string[] szotar;
public static bool a;
static void Main(string[] args)
{
init();
for (int i = 0;i < szn;i++) {
for (int k = 0; k < szn; k++) {
szomszed(szotar[i],szotar[k],i,k);
}
};
dump();
most[si] = true;
bool done = false;
for(int counter = 0;;counter++){
if(!done)dump2();
scan();
if (temp[ci])
{
Console.Write("Kész van {0} lépésből.\n", counter + 1);
done = true;
}
step();
if (check()) {
for (int k = 0; k < szn; k++) if (volt[k]) Console.WriteLine(szotar[k]);
break;
};
Console.ReadKey(true);
}
Console.ReadKey(true);
}
static void dump() {
for (int i = 0; i < szn; i++)
{
for (int k = 0; k < szn; k++)
{
if (table[i, k]) Console.Write("X");
else Console.Write("O");
}
Console.Write("\n");
};
Console.WriteLine();
}
static void dump2() {
for (int i = 0; i < szn; i++)
{
if (most[i]) Console.Write("X");
else Console.Write("O");
}
Console.WriteLine();
for (int i = 0; i < szn; i++)
{
if (volt[i]) Console.Write("X");
else Console.Write("O");
}
Console.WriteLine("\n-----------------------------------------");
}
static void init() {
StreamReader sr = new StreamReader("SZOTAR0.BE");
szn = Int32.Parse(sr.ReadLine());
table = new bool[szn, szn];
volt = new bool[szn];
most = new bool[szn];
temp = new bool[szn];
szotar = new string[szn];
for (int i = 0; i < szn; i++)
{
szotar[i] = sr.ReadLine();
}
sr.Close();
sr = new StreamReader("JATEK0.BE");
string s = sr.ReadLine();
start = sr.ReadLine();
cel = sr.ReadLine();
for (int i = 0; i < szn; i++)
{
if (szotar[i] == start) si = i;
if (szotar[i] == cel) ci = i;
}
if (s == "A") a = true;
else a = false;
sr.Close();
}
static bool szomszed(string S1, string S2,int i,int k) {
if (i == k) return false;
int l1 = S1.Length;
int l2 = S2.Length;
int lmin;
int dif;
if (l1 > l2)
{
lmin = l2;
dif = l1 - l2;
}
else
{
lmin = l1;
dif = l2 - l1;
}
if (a && l1 != l2) return false;
int errnum = 0;
for (int j = 0; j < lmin; j++)
{
if (S1[j] != S2[j]) errnum++;
}
if (errnum == 1 && a) table[i, k] = true;
if (errnum == 0 && !a && dif == 1) table[i, k] = true;
return false;
}
static void step() {
for(int i = 0;i < szn;i++){
if(most[i])volt[i]= true;
most[i] = temp[i];
temp[i] = false;
}
}
static void scan() {
for (int i = 0; i < szn;i++ ) {
if (most[i])
{
for (int k = 0; k < szn; k++)
{
if (table[i, k] && !volt[k]) temp[k] = true;
}
}
}
}
static bool check() {
bool ret = true;
for (int i = 0; i < szn; i++)
{
if (most[i]) ret = false;
}
return ret;
}
}
}