Kelime Bulmaca - SOFTSAM

Breaking

About Software

20.03.2017

Kelime Bulmaca

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

namespace ExamQ
{
    class Program
    {
        enum Yon { None, Asagi, Yukari, Saga, Sola }
        static void Main(string[] args)
        {
            string[] aranan = { "ON", "ZOR", "ZİL", "KAR","AN" };
            char[,] sozcuk = {
                { 'R', 'O', 'Z', 'Y' },
                { 'A', 'Z', 'L', 'I' },
                { 'L', 'I', 'İ', 'O' },
                { 'A', 'M', 'Z', 'N' },
                { 'N', 'K', 'A', 'R' }};

            foreach (string aranacak in aranan)
            {
                Bul(sozcuk, aranacak);
            }
            for (int i = 0; i < sozcuk.GetLength(0); i++)
            {
                for (int j = 0; j < sozcuk.GetLength(1); j++)
                {
                    if (sozcuk[i, j] != '*')
                        Console.Write(sozcuk[i, j]);
                }
            }
            Console.ReadKey();
        }
        private static void Bul(char[,] sozcuk, string aranan)
        {
            Yon yon = Yon.None;
            int x = 0, y = 0;
            bool bulundu = false;
            for (int i = 0; i < sozcuk.GetLength(0); i++)
            {
                for (int j = 0; j < sozcuk.GetLength(1); j++)
                {
                    if (sozcuk[i, j] == aranan.ToCharArray()[0])
                    {
                        if (i < sozcuk.GetLength(0))
                            for (int k = i + 1; k - i < aranan.Length && k < sozcuk.GetLength(0); k++)//aşağı doğru arama
                            {
                                if (sozcuk[k, j] != aranan.ToCharArray()[k - i])
                                { bulundu = false; break; }
                                else
                                {
                                    bulundu = true;
                                    yon = Yon.Asagi;
                                    x = i; y = j;

                                }
                            }
                        if (bulundu == false && i > 0)
                            for (int k = i - 1; i - k < aranan.Length && k > 0; k--)//yukari doğru arama
                            {
                                if (sozcuk[k, j] != aranan.ToCharArray()[i - k])
                                {
                                    bulundu = false; break;
                                }
                                else
                                {
                                    bulundu = true;
                                    yon = Yon.Yukari;
                                    x = i; y = j;

                                }
                            }
                        if (bulundu == false && j < sozcuk.GetLength(1))
                            for (int k = j + 1; k - j < aranan.Length && k < sozcuk.GetLength(0); k++)//sağa doğru arama
                            {
                                if (sozcuk[i, k] != aranan.ToCharArray()[k - j])
                                { bulundu = false; break; }
                                else
                                {
                                    bulundu = true;
                                    yon = Yon.Saga;
                                    x = i; y = j;
                                }
                            }
                        if (bulundu == false && j > 0)
                            for (int k = j - 1; j - k < aranan.Length && k > 0; k--)//sola doğru arama
                            {
                                if (sozcuk[i, k] != aranan.ToCharArray()[j - k])
                                { bulundu = false; break; }
                                else
                                {
                                    bulundu = true;
                                    yon = Yon.Sola;
                                    x = i; y = j;
                                }
                            }
                    }
                }
            }

            switch (yon)
            {
                case Yon.None:
                    break;
                case Yon.Asagi:
                    for (int i = 0; i < aranan.Length; i++)
                    {
                        sozcuk[i+x, y] = '*';
                    }
                    break;
                case Yon.Yukari:
                    for (int i = 0; i < aranan.Length; i++)
                    {
                        sozcuk[x-i, y] = '*';
                    }
                    break;
                case Yon.Saga:
                    for (int i = 0; i < aranan.Length; i++)
                    {
                        sozcuk[x, y+i] = '*';
                    }
                    break;
                case Yon.Sola:
                    for (int i = 0; i < aranan.Length; i++)
                    {
                        sozcuk[x, y-i] = '*';
                    }
                    break;
                default:
                    break;
            }

        }
    }
}

Hiç yorum yok:

Yorum Gönder