Informatika gyűjtemény

Egy szinttel feljebb dm_szojatek.cs

2004050607080910

NézetNyomtat

dm_szojatek.cs (Vissza)
Az alábbi letöltési lehetőségek közül választhatsz: (segítség)
Karakterkódolás:
Sortörés:
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;< 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])
                {//KÉSZ!!!!!!
                    Console.Write("Kész van {0} lépésből.\n", counter + 1);
                    done = true;
                }
                //dump2();
                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() { //húzzá hátra hülye 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 (== "A") a = true;
            else a = false;
            sr.Close();
        }
        static bool szomszed(string S1, string S2,int i,int k) {
            if (== 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 (&& 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; //má tudjuk h regyenlők
            if (errnum == 0 && !&& dif == 1) table[i, k] = true; //má tudjuk h regyenlők
            return false;
        }
        static void step() {
            for(int i = 0;< 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;
        }
    }
}
(Vissza)