none
C# İki string arasındaki harf eşleştirmesi RRS feed

  • Soru

  • Merhaba,
    
    Unity oyun motoru üzerinde oyun geliştirmekteyim. Bazı bölümleri kısa yoldan yapmak açısından bir algoritma oluşturmaya çalıştım fakat bir türlü beceremedim. Burası Unity destek alanı değil fakat C# üzerinden ilerlediğim için temel C# kod bloğunu Unity üzerinde rahat bir şekilde kullanabiliyorum. Sormak istediğim konuya gelecek olursak;
    
    Elinde kelimelerin bulunduğu string türünde bir arraylist var. array list 0 da kelime[0] stringi içerisinde "veli" adına bir string var. Aynı zamanda diğer kelimeleri depoladığım "diger" adinda string türünde bir arraylistim var. içerisinde ise diger[0], diger[1] ve diger[3] tabi bunlar sürekli olarak artarak devam ediyor.
    
    diger[0] = eli;
    
    diger[1] = ile;
    
    diger[2] = dur;
    
    olarak düşünelim.
    
    buttona bastığım zaman aşağıdaki şekil harflere istinaden otomatik dolmaktadır. Benim yapmak istediğim şey ise  diger arraylisti içerisindeki 100lerce kelime arasında harfleri kelime ile eşleyen ve ilk bulunan kelimenin yazdırılmasını istiyorum.
    
    
    
    Substring kullanarak harfleri tek tek aldım fakat bir türlü beceremedim. Biraz karışık yazmış olabilirim. Yardımınızı rica ederim.
    
     

    Arkadaşlar algoritmayı kendim yazarak sorunu çözdüm. Faydalanmak isteyenler için paylaşıyorum.

    Geri kalanını geliştirmek ise tamamen hayal gücünüze kalmış.

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    using UnityEngine.SceneManagement;
    using UnityEngine.UI;

    public class test : MonoBehaviour
    {
        public List<GameObject> kelime_harfleri = new List<GameObject>();
        public List<string> kelimeci = new List<string>();
        public string[] ana_kelimeler;
        int a_k_d;
        void Start() 
        {
            a_k_d = 0; // Hangi kelimenin ana kelime olacağını seçmek için

            #region // ilk ana kelimeyi yazacağımız kutulara ana kelimenin uzunluğuna göre otomatik olarak yazması için
            for (int k = 0; k < ana_kelimeler[a_k_d].Length; k++)
            {
                kelime_harfleri[k].transform.GetChild(0).GetComponent<Text>().text = ana_kelimeler[a_k_d].Substring(k, 1);
            }
            #endregion


        }


        void Update()
        {


            #region //ana kelimede olmayan harfleri otomatik silmek için
            for (int b = 0; b < kelimeci.Count; b++)
            {
                for (int c = 0; c < 3; c++)
                {
                    if (kelimeci[b].Substring(c, 1) != ana_kelimeler[a_k_d].Substring(0, 1) && kelimeci[b].Substring(c, 1) != ana_kelimeler[a_k_d].Substring(1, 1) && kelimeci[b].Substring(c, 1) != ana_kelimeler[a_k_d].Substring(2, 1) && kelimeci[b].Substring(c, 1) != ana_kelimeler[a_k_d].Substring(3, 1))
                    {
                        kelimeci.RemoveAt(b);
                        break;
                    }
                }

            }
            #endregion


            #region // ana kelime üzerinden otomatik olarak kelimecideki kelimeleri uç uca en uygun şekilde güncellemek için
            for (int i = 0; i < kelimeci.Count; i++)
            {
                if (kelimeci[i].Length == 3 && kelimeci[i].Substring(0, 1) == ana_kelimeler[a_k_d].Substring(1, 1))
                {

                    kelime_harfleri[4].transform.GetChild(0).GetComponent<Text>().text = kelimeci[i].Substring(1, 1);
                    kelime_harfleri[5].transform.GetChild(0).GetComponent<Text>().text = kelimeci[i].Substring(2, 1);

                    kelimeci.RemoveAt(i);
                    break;
                }
                if (kelime_harfleri[5].transform.GetChild(0).GetComponent<Text>().text != null)
                {
                    for (int a = 0; a < kelimeci.Count; a++)
                    {
                        if (kelimeci[a].Length == 3 && kelimeci[a].Substring(0, 1) == kelime_harfleri[5].transform.GetChild(0).GetComponent<Text>().text)
                        {
                            kelime_harfleri[6].transform.GetChild(0).GetComponent<Text>().text = kelimeci[a].Substring(1, 1);
                            kelime_harfleri[7].transform.GetChild(0).GetComponent<Text>().text = kelimeci[a].Substring(2, 1);
                            kelimeci.RemoveAt(a);
                            break;
                        }
                    }
                }
            }

            #endregion

        }
    }





    14 Ocak 2022 Cuma 14:52

Tüm Yanıtlar

  • Merhaba,

    Tüm kodu istemek yerine, yazdığınız kodu ve çalıştırdığınızda alınan sonucu paylaşmanız forumdan daha hızlı yardım alabilmenizi sağlayacaktır.

    14 Ocak 2022 Cuma 15:50
    Moderatör
  • Merhaba,

    Tüm kodu istemek yerine, yazdığınız kodu ve çalıştırdığınızda alınan sonucu paylaşmanız forumdan daha hızlı yardım alabilmenizi sağlayacaktır.

    Mantığının söylenmesi benim için yeterli olacaktır. Proje prototip aşamasında olduğu için sadece yukarıdaki bilgilerden oluşmaktadır. Konuyu çözebilecek seviyedeki kişinin bu ekstra bir kod gereksinimine ihtiyaç duyacağını düşünmüyorum

    15 Ocak 2022 Cumartesi 12:23