Algoritma sorusu?

  • Konuyu başlatan Konuyu başlatan hb8
  • Başlangıç tarihi Başlangıç tarihi

hb8

Öğrenci
Katılım
17 Ağustos 2008
Mesajlar
19
Reaksiyon puanı
0
Puanları
0
meraba yanlış yere açtıysam özür...


meraba şöyle bir problem vardı da, önerilerinizi bekliyorum.

rastgele oluşturulan n (örn: n=10 ) tamsayıdan, kendi belirlediğiniz bir x (örn: x=100) sayısına; bu n tane sayıdan istediğiniz kadarına toplama işlemi yaptırarak ; en yakın sonucu nasıl elde edebiliriz.

örn:

rastgele sayılar : 10 12 18 24 9 19 17 3 6 9 24

ulaşılmaya çalışılacak sayı 100

17+3+6+24+12+18+19 = 99
 

jungeman

Profesör
Katılım
1 Nisan 2009
Mesajlar
3,006
Reaksiyon puanı
68
Puanları
228
Abi matematik forumlarına ne oldu :D Sorun yaptım kendi kendime :D Oturup ugrassam faydası yok ugrasmasam gönül razı değil :D
 

sakallıoğlu

Profesör
Katılım
1 Mart 2009
Mesajlar
2,120
Reaksiyon puanı
1
Puanları
218
Orta okuldada sevmezdim bu (n) sayılarını, çözen olursa belki hatırlarız.
 

palugenclik

Öğrenci
Katılım
18 Şubat 2008
Mesajlar
73
Reaksiyon puanı
0
Puanları
6
çok güzel bir soru uğraşmak lazım çözmeye çalışıcam çözen olur diye de burayı takip edeceğim
 

macit

Asistan
Katılım
25 Haziran 2009
Mesajlar
189
Reaksiyon puanı
0
Puanları
16
9 tane rastgele sayıyı bulursun toplarsın sonra 100den çıkartıp kalan sayıyı 9 sayının toplamına eklersin :) bir yazılmcı olarak bu algoritmayı böyle çözerdim ben :)
 

palugenclik

Öğrenci
Katılım
18 Şubat 2008
Mesajlar
73
Reaksiyon puanı
0
Puanları
6
9 tane rastgele sayıyı bulursun toplarsın sonra 100den çıkartıp kalan sayıyı 9 sayının toplamına eklersin :) bir yazılmcı olarak bu algoritmayı böyle çözerdim ben :)

öylesine bir cevap vermişsin . Neden 9 sayı belki istenen sayı toplamı küçük olur örnek :27 o zman ne yapacaksın
 

annttiigs

Profesör
Katılım
7 Şubat 2007
Mesajlar
2,589
Reaksiyon puanı
24
Puanları
218
9 tane rastgele sayıyı bulursun toplarsın sonra 100den çıkartıp kalan sayıyı 9 sayının toplamına eklersin :) bir yazılmcı olarak bu algoritmayı böyle çözerdim ben :)

9 sayının toplamı cok fazla da olabılır ;) rastgele sonucta.

ben olsa recursive bir fonk içinde, sürekli toplam ve de sıradaki sayıyı ekleyerek giderim.ancak ekleme işlemini eğer sayı 100'ü geçmiyorsa yaparım. ancak anlattığım kadar basit bir algoritma değil kendisi..

oldukça fazla kontrol yapman gerekebilir. Tek vereceğim tüyo : recursive bir fonksiyon gerekli.
Iteratife gidersen çook fazla yorulursun gibime geldi.
 

GKHNCKR

Profesör
Katılım
7 Mayıs 2009
Mesajlar
3,980
Reaksiyon puanı
47
Puanları
228
ya yazılımcı yok mu aramızda?
 

coal

Asistan
Katılım
23 Aralık 2008
Mesajlar
121
Reaksiyon puanı
0
Puanları
0
10
12+18=30
3 9 9
6+24=30
24+19+17=60

60+30+10=100

iki çözüm
10+12+18+24+19+17
10+6+24+24+19+17

başka çözüm var mı ,mantığı nedir ,bilmiyorum,
sonuç: çözüm var
 

palugenclik

Öğrenci
Katılım
18 Şubat 2008
Mesajlar
73
Reaksiyon puanı
0
Puanları
6
şimdi programını yazmadım ama aklıma böyle bir mantık geldi.Mantık doğruysa (ki öyle inanıyorum :)) koda dökme işi kolay.
önce var olan sayılar(n=10 tane) sıralı değilse önce bunları sıralayacağız.
daha sonra ilk olarak sayıları tekli biçimde doğrudan sonuç veya sonuca yakın mı diye tekli sayılar şeklinde sonuç diye vereceğiz.
rastgele sayılar : 10 12 18 24 9 19 17 3 6 9 24

15 sayısını bul derse tekli sonuçlardan en uygun olanı 12 veya 15 değerini vericez.

daha sonra eğer sayı kesin sonuç değilse bu defa ikili toplamları dizi şeklinde her ikili değer için toplayıp sonuçlar bulacağız.(ör: 10+12,10+18,......,9+6)
burada matematikten (10,2) kombinasyonunundan 45 farklı sonuç çıkar.

burada 9+6 bize kesin sonucu verir. o zaman sonuç bu deriz.ç

eğer yine kesin sonucu bulamazsak o zaman 3 lü toplamları alırız.(10,3) kombinasyondan 120 farklı sayı çıkar.

Kesin sonucu bulana kadar böyle devam ederiz. (10,10) kombinasyonuna kadar

En son sayı tüm sayıların toplamından büyükte olabilir. en son 10 tane sayıyı da toplarız böylece sonucu veririz.

Not:arada her zaman en yakın sonucu da bir değişkende tutarız. kesin sonuç hiç bulunmayabilir.

ilk aklıma bu geldi inşallah ifade edebilmişimdir.bir sorunuz veya takılmadığınız yer varsa cevaplayabilirim.
 

utku-k

Doçent
Katılım
12 Ağustos 2007
Mesajlar
973
Reaksiyon puanı
13
Puanları
0
Belirlediğimiz adet 5 ve özel sayımız da 100 olsun.

---

İlk önce 10 tane değişken oluşturulur. Bu 10 değişkenin bir küme oluşturduğunu varsayarsak, 5 elemanlı alt kümelerinin hepsi yazılır. Ardından 10 değişkene rastgele birer değer atanır ve kümelerdeki sayıların hepsi toplanır.

Beş elemanlı alt küme sayısı kadar başka değişkenler oluşturulur ve her biri toplama sonuçlarına eşitlenir. Her birinin hangi kümenin toplama sonucuna eşit olduğunu program bilir. :)

Şimdi bu beş elemanlı alt kümelerinin kendi içlerindeki elemanlarının toplamlarına eşitlediğimiz değişkenlere bakalım.

---

Eğer bütün değişkenler 100'den büyükse program yeniden ilk oluşturduğumuz 10 değişkene rastgele değer versin veya hata versin. Siz seçin :)

Eğer değişkenlerin içinde 100'e eşit olan varsa program bize bu sayıyı ve kümedeki elemanları göstersin ama değişkenlerin içinde 100'e eşit bir veya birden fazla değer varsa içlerinden rastgele biri ve rastgele seçilen değişkene ait küme bize gösterilsin.

Eğer değişkenlerin içinde 100'e eşit değer yoksa, 100'e en yakın olan değişken ve bu değişkene ait küme bize gösterilsin ama değişkenlerin içinde 100'e en yakın değişkene eşit, başka, bir veya birden fazla değişken varsa içlerinden yine rastgele biri seçilip bize kümesiyle birlikte verilsin.

---

Ben yazılımcı falan değilim. :)

Cümlelerimden de belki anlayabilirsiniz, oradan buradan duyduğum ağızlarla yazdım biraz da salladım falan ama yanlış olduğunu zannetmiyorum.

Umarım yardımcı olur. :)
 

Yunus ÖZCAN

Doçent
Katılım
16 Temmuz 2008
Mesajlar
593
Reaksiyon puanı
9
Puanları
0
sorunun çözümü basit ama diğer yorumlardan hiç bir şey anlamadım

bir dizide 10 tane sayımız var (dizi de ki sayılar büyüklüklerine göre sıladağıgımız varsayıyorum)

bu sayılar arasında sadece toplama işlemi yaparak ulaşmaya çalışıcağımız özel sayı

dizideki en büyük sayıdan başlayarak bir küçüğü ile toplayıp özel sayıdan büyük mü diyekontrol ederiz

eğer büyükse hata değişkenine buyuk değerini atayıp bunu altta kontrol ettireceğiz

hata buyuke eşitse (dongüyü 10 sayımız olduğu için 10 defa dönmeye ayarladık ama toplam özel sayıyı gecince döngüden çıktı ve en son hangi sayıyı ekledi bunu döngüden alıcaz) en son eklediğimiz sayıyı toplamdan çıkarıp toplamı bir önceki sayıyla(yani çıkardığımız sayıdan dan dizideki küçük olan sayı)

ve tekrar özel sayıdan büyükmü diye kontol ederiz yine büyükse
en son topladığımız sayıyı çıkarıp onun bir küçüğünü toplarız.

toplam özel sayıdan büyük değilse sonuca ulaştık demektir.
 

fogu78

Doçent
Katılım
25 Haziran 2009
Mesajlar
633
Reaksiyon puanı
8
Puanları
0
Delinin biri kuyuya bi taş attı akıllılar çıkarcam diye uğraş veriyor. :D (Yoksa tam tersimiydi)

Not: Söz meclisten dışarı kimse alınmasın..
 

ulaş35

Doçent
Katılım
22 Şubat 2007
Mesajlar
779
Reaksiyon puanı
2
Puanları
18
palugenclik arkadaşıma katılıyorum

ilk olarak x sayısından küçük-eşit olan rastgele 10 adet sayı seçtirirsin, daha sonra busayıların tek başlarına,ikişerli,üçerli,...,onarlı toplamlarını buldurursun(bulunan toplama da t dersek) , son olarakta bu toplamların içinden x e eşit olan ya da x ten küçük olan en büyük t sayısını çıktı olarak seçersin.Benim düşüncem bu sanırım mantıklı gibi, java programlama da bu kadar karışık olmasa da buna benzer şeyler görmüştüm , inşallah yardımı olur.
 

hb8

Öğrenci
Katılım
17 Ağustos 2008
Mesajlar
19
Reaksiyon puanı
0
Puanları
0
öncelikle çok teşekkür ederim arkadaşlar. ortaya gerçekten çok güzel fikirler çıkmış ancak bazı arkadaşlar genel düşünmemiş. yani sadece 10 sayı için düşünmüş mesela.
bende genetik algoritmayı kendimce uyarlayarak bişeyler bulmaya çalıştım.
 

pcman

Öğrenci
Katılım
30 Nisan 2006
Mesajlar
98
Reaksiyon puanı
1
Puanları
0
9 sayının toplamı cok fazla da olabılır ;) rastgele sonucta.

ben olsa recursive bir fonk içinde, sürekli toplam ve de sıradaki sayıyı ekleyerek giderim.ancak ekleme işlemini eğer sayı 100'ü geçmiyorsa yaparım. ancak anlattığım kadar basit bir algoritma değil kendisi..

oldukça fazla kontrol yapman gerekebilir. Tek vereceğim tüyo : recursive bir fonksiyon gerekli.
Iteratife gidersen çook fazla yorulursun gibime geldi.

arkadaşla aynı fikirdeyim recursive en yakın sonucu bulacaktır. birde sayıları sıralayıp olamayacak ihtimalleride atlatırsan tadından yenmez :P
güzel soruymuş gerçekten uğraşılır sırf zevk için ama hic niyetim yok şu sıcak yaz gününde. çok düşünüp, fosfor yakıp, ısı açığa çıkartmaya :scared::w00t::laugh:
 

tmpuser

Profesör
Katılım
3 Haziran 2009
Mesajlar
1,248
Reaksiyon puanı
1
Puanları
0
rakamları gördükçe Bunalıma giriyorum :D

zaten matematiği hiç sevmezdim
 
Üst