-- Algoritma, C#, Go

Algoritma #2 : Kelimelerin Anagram Kontrolünü Yapma

Algoritma #2 : Kelimelerin Anagram Kontrolünü Yapma

Algoritmanın Amacı

İki kelimenin birbirine anagram olup olmadığını bulmayı sağlar.

Anagram nedir?

İki kelimenin farklı olması ama aynı harflerden oluştuğu durumlara anagram denir.

Örneğin; Silent -> Listen anagramlık içerir.

Örneklerde girilecek iki kelime olarak Silent ve Listen’ı kullanabilirsiniz.

C#

class Program
    {
        static void Main(string[] args)
        {
            Console.Write("First Word: ");
            string word1 = Console.ReadLine();
            Console.Write("Second Word: ");
            string word2 = Console.ReadLine();

            char[] ch1 = word1.ToLower().ToCharArray();
            char[] ch2 = word2.ToLower().ToCharArray();

            Array.Sort(ch1);
            Array.Sort(ch2);

            string new1 = new string(ch1);
            string new2 = new string(ch2);

            if (new1 == new2)
            {
                Console.WriteLine("\"{0}\" ve \"{1}\" Anagram'dır.", word1, word2);
            }
            else
            {
                Console.WriteLine("\"{0}\" ve \"{1}\" Anagram değildir.", word1, word2);
            }
        }
    }

Go

package main

import (
	"bufio"
	"fmt"
	"os"
	"sort"
	"strings"
)

type SortRunes []rune

func main() {

	var pattern = "*********"

	reader := bufio.NewReader(os.Stdin)
	fmt.Print("First Word: ")
	word1, _ := reader.ReadString('\n')
	fmt.Print("Second Word: ")
	word2, _ := reader.ReadString('\n')

	word1 = SortString(strings.ToLower(word1))
	word2 = SortString(strings.ToLower(word2))

	// fmt.Print("Word1 : " + word1)
	// fmt.Print("Word2 : " + word2)

	if word1 == word2 {
		fmt.Println(pattern)
		fmt.Println("Bu iki kelime Anagram'dır")
		fmt.Println(pattern)
	} else {
		fmt.Println(pattern)
		fmt.Println("Bu iki kelime Anagram değildir")
		fmt.Println(pattern)
	}
}

func SortString(s string) string {
	r := []rune(s)
	sort.Sort(SortRunes(r))
	return string(r)
}

func (s SortRunes) Less(i, j int) bool {
	return s[i] < s[j]
}

func (s SortRunes) Swap(i, j int) {
	s[i], s[j] = s[j], s[i]
}

func (s SortRunes) Len() int {
	return len(s)
}

Github:
-> https://github.com/cihanozhan/csharp-algorithms
-> https://github.com/cihanozhan/golang-algorithms

İyi çalışmalar.
Cihan Özhan

Yorumla

Yorum