Umut D.

Umut D.

Powered by Jekyll & Github

  • Coding-Challenges

  • Soru

    Programcıya; bir IPv4 (ipDegeri) değeri veriliyor. Bu IP değerinin, 4 ayrı oktetten ve byte değerlerden oluştuğu biliniyor. Bu noktada ise programdan; her bir oktet değerinin binary gösterimini (Örn. 128 ifadesi binary olarak 10000000, 1 ifadesi ise 00000001’dir gibi) elde ederek 4 ayrı oktetin sayısal (int olarak) toplamını elde etmesi isteniyor.

    Örnek

    Girdi Çıktı
    ipDegeri: 128.32.10.1 sonuc: 2149583361
    ipDegeri: 1.1.1.1 sonuc: 16843009

    Çözüm - C#

    using System;
    
    namespace Test
    {
        public static class Program
        {
            private static void Main()
            {
                string girilenIp = "128.32.10.1";
    
                string[] ipDizisi = girilenIp.Split('.');
                int uzunluk = ipDizisi.Length;
    
                // Dizideki tüm değerleri parça parça sayıya dönüştür
                int[] octetler = new int[uzunluk];
                for (int i = 0; i < uzunluk; i++)
                    octetler[i] = Convert.ToInt32(ipDizisi[i]);
    
                // Dönüştürülen değerleri tek tek binary koduna dönüştür
                string[] donusturulenDegerler = new string[uzunluk];
                for (int i = 0; i < uzunluk; i++)
                    donusturulenDegerler[i] = Convert.ToString(octetler[i], 2).PadLeft(8, '0');
    
                // Dört dilim olan octetlerin hepsini tek parça haline getir
                string tumOctetler = string.Join("", donusturulenDegerler);
    
                // Octetleri sayısal ifadeye dönüştürerek binary olarak topla
                long toplam = Convert.ToInt64(tumOctetler, 2);
                Console.WriteLine($"Toplam: {toplam}");
    
                Console.Read();
            }
        }
    }
    

    Çözüm - Python

    girilenIp = "128.32.10.1"
    ip_dizisi = girilenIp.split('.')
    
    # Dizideki tüm değerleri parça parça sayıya dönüştür
    octetler = []
    for ip in ip_dizisi:
        octetler.append(int(ip))
    
    # Dönüştürülen değerleri tek tek binary koduna dönüştür
    donusturulen_degerler = []
    for deger in octetler:
        donusturulen_degerler.append(f'{deger:08b}')
    
    # Dört dilim olan octetlerin hepsini tek parça haline getir
    tum_octetler = str.join("", donusturulen_degerler)
    
    # Octetleri sayısal ifadeye dönüştürerek binary olarak topla
    toplam = int(tum_octetler, 2)
    print(f"Toplam: {toplam}")