Programozás‎ > ‎Feladatok‎ > ‎Varázslat‎ > ‎Megoldás‎ > ‎

bsza_varazslat.cs

Letöltés: bsza_varazslat.pas

using System;
using System.IO;
 
namespace elemek
{
    class Program
    {
        public static string[] Csiribá(string[] lista, string[] kombi, string[] zero) {
             
            bool K = false;
            int hossz = lista.Length;
            string kombo = null;
             
            foreach (string szabaly in kombi) {
                int j = 0;
                try{while (lista[j] != null) j ++;} catch (Exception ex){};
                if (j > 1) {
                    int jj = 0;
                    try{while (lista[jj] != null) jj ++;} 
                    catch (Exception ex){};
                    if 
                    (lista[jj-1] + lista[jj-2] == szabaly.Substring(0, 2)) 
                    K = true;
                    if 
                    (lista[jj-2] + lista[jj-1] == szabaly.Substring(0, 2)) 
                    K = true;
                    kombo = szabaly;
                }
            }
             
            if (K && kombi.Length > 0 && lista[0] != null) {
                int jj = 0;
                try{while (lista[jj] != null) jj ++;} 
                catch (Exception ex){};
                lista[jj-1] = null;
                lista[jj-2] = Convert.ToString(kombo[2]);
            } else {
                 
                foreach (string szabaly in zero) {
                    if ( StringMk(lista).Replace(Convert.ToString(szabaly[0]), "").Length <                                 StringMk(lista).Length &&
                         StringMk(lista).Replace(Convert.ToString(szabaly[1]), "").Length <                                 StringMk(lista).Length) {
                        for (int i = 0; i < hossz; i++) lista[i] = null;
                    }
                }
                 
            }
             
            return lista;
        }
         
        public static string StringMk(string[] lista) {
             
            string ki = "";
             
            foreach (string elem in lista) {
                ki += elem;
            }
             
            return ki;
        }
         
        public static void Main(string[] args) {
             
            StreamReader sr = new StreamReader("m1.in");
            StreamWriter sw = new StreamWriter("m1.out");
            int eszam = int.Parse(sr.ReadLine());
             
            for (int i = 0; i < eszam; i++) {
                string[] sor = sr.ReadLine().Split(' ');
                string[] K;
                string[] Z;
                 
                int lK = int.Parse(sor[0]);
                K = new string[lK];
                 
                for (int ii = 0; ii < lK; ii++) {
                    K[ii] = sor[1+ii];
                }
                 
                int j = 1;
                 
                while (Char.IsLetter(sor[j][0])) {
                    j++;
                }
                 
                int lZ = int.Parse(sor[j]);
                Z = new string[lZ];
                 
                for (int ii = 0; ii < lZ; ii++) {
                    Z[ii] = sor[1+lK+1+ii];
                }
                 
                string llista = sor[sor.Length-1];
                string[] lista = new string[llista.Length];
                 
                lista[0] = Convert.ToString(llista[0]);
                for (int ii = 1; ii < llista.Length; ii++) {
                    int jj = 0;
                    while (lista[jj] != null) jj ++;
                    lista[jj] = Convert.ToString(llista[ii]);
                    lista = Csiribá(lista, K, Z);
                }
                 
                sw.Write("Case#");
                sw.Write(i+1);
                sw.Write(": [");
                int iii = 0;
                while (iii < lista.Length) {
                    if (lista[iii] != null) {
                    sw.Write(lista[iii]);
                    if (iii+1 < lista.Length) {
                    if (lista[iii+1] != null) {
                        sw.Write(", ");
                        }}
                    }
                    iii++;
                }
                sw.WriteLine("]");
            }
            sw.Close();
            Console.ReadKey(true);
        }
    }
}