Arama butonu
Bu konudaki kullanıcılar: 1 misafir
8
Cevap
399
Tıklama
2
Öne Çıkarma
recursion sorusu
D
5 yıl
Yarbay
Konu Sahibi

< Resime gitmek için tıklayın >

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 >

A
5 yıl
Yarbay

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ı >
Bu mesaja 1 cevap geldi.
I
5 yıl
Binbaşı

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 >
Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @alimmm78
A
5 yıl
Yarbay

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ı >
Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @I0SER_b0y
I
5 yıl
Binbaşı

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/




Bu mesajda bahsedilenler: @alimmm78
T
5 yıl
Yarbay

Lisp ile rekürsif çözüm sadece 9 satır:
< Resime gitmek için tıklayın >



< Bu ileti mini sürüm kullanılarak atıldı >
Bu mesaja 1 cevap geldi.
I
5 yıl
Binbaşı

maşallah hocam da bu tekrarlıları da olcüyor mu




Bu mesajda bahsedilenler: @vonderplanitz
M
5 yıl
Yüzbaşı



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);
}
}

}



T
5 yıl
Yarbay

Program yanlış çıktı üretiyor.
< Resime gitmek için tıklayın >





< 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ı >


Bu mesajda bahsedilenler: @mcadirci
DH Mobil uygulaması ile devam edin. Mobil tarayıcınız ile mümkün olanların yanı sıra, birçok yeni ve faydalı özelliğe erişin. Gizle ve güncelleme çıkana kadar tekrar gösterme.