Şimdi Ara

Sayıları, rakamlarının alfabetik sırasına göre yeniden düzenleyiniz

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
6
Cevap
0
Favori
164
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • Sayıları rakamlarının alafabetik sırasına göre yeniden düzenleyiniz. Örneğin

    2017 => 1207 olacaktır. Cunku 'iki' 'sıfır' 'bir' 'yedi' nin alfabetik sıralaması 'bir' 'iki' 'sıfır' 'yedi' dir.

    Diger örnekler:

    # 1923 => 1923
    # 1881 => 1188

    Bu işlemi yapan kod yazınız.

    Not: Ödev sorusu değildir. Kod geliştirme ve egzersiz sorusudur.
    Not 2: Konu normalde YG sohbet bölümünde açılacaktır fakat o bölümdeki gönderiler gözükmediği için konu burada açılmıştır.

    < Bu ileti mini sürüm kullanılarak atıldı >



  • Kod

    Yığını:
    #include <iostream> #include <string> #include <map> #include <vector> #include <algorithm> std::map<char, std::string> mymap = { {'0', "sifir"}, {'1', "bir"}, {'2', "iki"}, {'3', "uc"}, {'4', "dort"}, {'5', "bes"}, {'6', "alti"}, {'7', "yedi"}, {'8', "sekiz"}, {'9', "dokuz"}}; int main() {     int num = 2017;     std::string s = std::to_string(num);     std::vector<std::string> v{};          for (auto a : s)         v.push_back(mymap[a]);          std::sort(v.begin(), v.end());          for (auto a : v)         std::cout << std::find_if(mymap.begin(), mymap.end(), [a](auto x){return x.second == a;})->first; }




  • controller_ kullanıcısına yanıt
    find_if 'e lambda ile kriter vererek alfabetik sıralanmış basmak iyi fikir olsa da genel olarak uzun bir çözüm.

    c++'daki include ve main 'i saymadan, for döngülerini tek satır saysak bile 7 satır yapıyor. Ayrıca mymap'i önce rakam sonra Türkçe sözcük şeklinde tanımlamak biraz hammaliye. t

    Toplam satır sayısını arttıracak olsa da, 0,1,..9 rakam serisini iota veya irange ile, türkçe sözcükleri vector<string> tr = {"sıfır","bir","iki","üç","dört","beş","altı","yedi","sekiz","dokuz"} ile tanımlayıp bir döngü içinde mymap'i mymap.emplace(eleman[endeks],tr[endeks] ) şeklnde oluşturmak bence daha iyi.

    Benim çözümüm bundan cok daha kısa :) Tabi ki o ayrı konu :)



    < Bu mesaj bu kişi tarafından değiştirildi Tuğkan-0153 -- 14 Eylül 2020; 18:16:10 >
    < Bu ileti mini sürüm kullanılarak atıldı >
  • Kod

    Yığını:
    Console.WriteLine(new string("2017".OrderBy(z => new string[10] { "sıfır", "bir", "iki", "üç", "dört", "beş", "altı", "yedi", "sekiz", "dokuz" }[(int)(z - '0')]).ToArray()));


    Kod

    Yığını:
    Console.WriteLine(new string(Console.ReadLine().OrderBy(z => new string[10] { "sıfır", "bir", "iki", "üç", "dört", "beş", "altı", "yedi", "sekiz", "dokuz" }[(int)(z - '0')]).ToArray()));



    < Bu mesaj bu kişi tarafından değiştirildi Gökşen PASLI -- 14 Eylül 2020; 18:43:18 >
  • Gökşen PASLI G kullanıcısına yanıt
    Oldukça etkili ve kısa bir çözüm cunku array üzerinden gidiyor.

    çözümde using'ler ve class ve main satırlarını saymayıp sadece 1 satırı sayınca 161 karakter uzunluğunda.

    Benim Raku'daki çözüm de array üzerinden gidiyor o sayede 1 satır ve 88 karakter uzunluğunda, fakat komut satırından giriş alıyor:

    Sayıları, rakamlarının alfabetik sırasına göre yeniden düzenleyiniz

    < Bu ileti mini sürüm kullanılarak atıldı >
  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.