Şimdi Ara

recursion sorusu

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
1 Misafir - 1 Masaüstü
5 sn
11
Cevap
0
Favori
397
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
2 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  •  recursion sorusu

    soruyu yapmak istiyorum recursion olarak ama tüm cıktıların farklı olması lazım yaptıklarımı da farklı bir yere atıp tekrar kontrol edersem cok maaliyetli oluyor bunun için en iyi yol sizce nedir ?


    tekrarlı permutasyonlar da dahil



    < Bu mesaj bu kişi tarafından değiştirildi DH Anonim -- 9 Aralık 2019; 16:36:18 >



  • Perm(“”,”abc”);


    Perm( string answer,string input ){

    İf( inout.size ==0)
    Print answer ;return;

    For int i 0;i<input.size ; i++
    Perm(answer+input.charat(i), input(substring(0,i)) + input(substring(i+1) )

    }

    Böyle yapanilirsiniz, parametreler ile verileri işleyip sanki bir yerde tutuyormıç gibi işlem olabilir

    Buradan yukardan içeriye transfer var gibi
    Bunun tersini de içteki veriyi dışarı dönecek şekilde de yapmak denenebilir ama daha zor olur muhtemelen

    Diğer yola backtracking deniyor galiba, örneklerini araştırıp yapmayı deneyebilirsin

    Edit: inputta tekrarlı bir eleman varsa benim çözüm işe yaramıyor
    Soruda tekrarlı olup olmadığını belirtmemiş, onu da belirtmesi gerekiyor



    < Bu mesaj bu kişi tarafından değiştirildi alimmm78 -- 9 Aralık 2019; 10:5:29 >
    < Bu ileti mini sürüm kullanılarak atıldı >
  • alimmm78 kullanıcısına yanıt
    tekrarlı olanları da kapsamış olmalı aksinin soylememesi halinde varsaymamız lazım keske bi de bunu sahte kod üzerinde degil de compiler üzerinde yazsaydınız bu yol biraz havada kaldı random olarak metotlarını bekliyordum ben

    daha fazla geliştirilmeli problem zaten String yerine her tipi alıp toString ile Stringe çevirmeliyiz,ardında ornegin "MEHMET" dedigimiz zaman 720 farklı degil de 180 farklı kelime yazdırmalı(anlamlı,anlamsız) ekstra bir kontrol lazım eklenen kelimenin daha once ekledigini onun için de linear search yapar bu biraz verimsiz yol

    soyle bir durum da olabilir 5 harf bi inputtan 3 harf kaç farklı output için de saglayan bir sey yaparsak hem tüm harflerin kullanımı hem de istenilen kadar harfi ortadan cıkarmış olabiliriz.



    < Bu mesaj bu kişi tarafından değiştirildi I0SER_b0y -- 9 Aralık 2019; 15:10:44 >
  • I0SER_b0y kullanıcısına yanıt
    tekrarlı dahil olduğu da göstermek için örneği direkt tekrarlı verebilirdi
    Yoksa ben acaba şjnu şunu kastetti mi diye düşünmemem gerekiyor
    O zaman gerekli gereksiz fazladan durumları sorgulamam gerekir, soru açık değil yani

    Forumda compiler için kod yazmak bence gereksiz önemli olan mantığı zaten kalanı sadece 3-5 değişiklik ile compilerda yazmak

    “random olarak metotlarını bekliyordum ben”
    Burada ne dediğinizi anlayamadım.


    tostring kısmı da kod okuma kısmı oluyor
    Soruda output şu şekilde olacak vb gibi bir açıklama yok
    Hackerrankteki gibi definition , inputs aralığı formatı, outputs formatı vb söylenmeli


    “soyle bir durum da olabilir 5 harf bi inputtan 3 harf kaç farklı output için de saglayan bir sey yaparsak hem tüm harflerin kullanımı hem de istenilen kadar harfi ortadan cıkarmış olabiliriz”
    Bu dediğinizi de anlayamadım

    ——

    Tekrarli permutasyonda benim çözümü geliştirecek olursak
    İçerideki for döngüsü aynı elemanlar için bir kez döndürürsek
    Cevaba ulaşıyoruz

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




  • alimmm78 kullanıcısına yanıt
    random derken stringin elemanlarını rastgele input uzunlugunda sıralaması yani "araba" yazarsak 0 dan 4 üncü indeksi rastgele atarsa oyle de kelimeler oluşabilir [4][2][2][0][3] boyle yani charAt ile random olarak atayabilir java.util.Random; kullanarak demiştim rastgele yapmayı ama orda daa aynı eleman tekrar eder diye tam olmuyordu kasıt oydu



    bir diger nokta girilen inputun uzunlugu kadar permutasyonu buluyorsunuz siz 5 sizeli input 5 sizeli output yani 5 sizeli input girilse 3 sizeli out put çıkabilen bir şey yazılırsa her durum da çalışır orda da bunu demeye çalıştım sürekli input uzunlugu kadar output üretmesi kısıtlıyor ondan dedim

    toString her tip de çalışması için dedim sizin yazdıgınıza gore 34653 soyle bir şey çalışmaz ya da 't','h','u','q','ı' gibi bir şey girilirse diye dedim


    bana kalırsa yazdıgınız gibi olacak gibi gozukmuyor tam anladım yaptıgınızı yani compilerde bi cıktı alamadan boyle olur demek güç elimde bi cıktı üretecek code blogu var ama iterative olarak çalışıyor recursive olarak yapamadım

    https://paste.ubuntu.com/p/zKnh4kXv6B/




  • Lisp ile rekürsif çözüm sadece 9 satır:
     recursion sorusu

    < Bu ileti mini sürüm kullanılarak atıldı >
  • maşallah hocam da bu tekrarlıları da olcüyor mu


  • import java.util.ArrayList;
    import java.util.List;

    public class Permutation {
    public static void main(String[] args) {
    String input = "bca";
    List<String> permutations = new ArrayList<String>();
    getPermutations("", input, permutations);
    for (String string : permutations) {
    System.out.println(string);
    }
    }

    private static void getPermutations(String preText, String input, List<String> permutations) {
    if (input.isEmpty()) {
    permutations.add(preText);
    return;
    }
    for (int i = 0; i < input.length(); i++) {
    getPermutations(preText + input.charAt(i), input.substring(1), permutations);
    }
    }

    }
  • Program yanlış çıktı üretiyor.
     recursion sorusu



    < Bu mesaj bu kişi tarafından değiştirildi Tuğkan-0153 -- 14 Aralık 2019; 0:37:29 >
    < 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.