folder Tahribat.com Forumları
linefolder Html - CSS - XML - JavaScript - Ajax
linefolder Javascript İle Karışık Kombinasyon İşlemleri



Javascript İle Karışık Kombinasyon İşlemleri

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    kofcu
    kofcu's avatar
    Kayıt Tarihi: 29/Ağustos/2014
    Erkek

    merhaba arkadaşlar dün kafayı biraz yorup dilediğim kombinasyonu veren bir program yazabilir miyim diye düşündüm.

    örnek olarak [1,2,3,4,5,6,7] nin 4lü kombinasyonu dedim.

    tabiki ilk olarak for içine for içine for içine for şeklinde yazdım :)

    ama daha sonra bununla tatmin olmadım.

    çünkü örneği değil genel olarak verdiğim herhangi bir kümeden istediğim herhangi bir kombinasyonu versin istiyorum.

    örneğin kombinasyon_fonksiyonum([1,2,3,4,5,6,7,8,9,10,11],4) dediğimde bu kümenin 4lü, kombinasyon_fonksiyonum([1,2,3,4,5,6,7,8,9,10,11],5) dediğimde bu elemanın 5li kombinasyonunu vermesini istiyorum.

    bunu yazmak için dün gece bayağı uğraştım.

    forun içine foru nasıl yazacağım, sayısı değişecek şekilde diye epey kafa yordum.

    daha sonra for'u forun içine fonksiyon aracılığıyla sokabileceğimi fark ettim, bunun için bir süre uğraştım ama dün gece bu işi bitiremedim.

    bayadır matematikle bu kadar haşırneşir olmamıştım onun da etkisiyle dün gece başaramadım.

    sonra "tabiki çok absürd bir şey istemiyorum, elbette biri yapmıştır" diye düşündüğümden(gece de düşünmüştüm ama uğraşmak istedim) sabah kombinasyon ile ilgili araştırma yaptım ve github'dan tam istediğim kombinasyon fonksiyonunu buldum.

    k_combinations(set, k) şeklinde: seti istediğiniz küme, k'yı da istediğiniz kombinasyon yazıyorsunuz size array olarak çıktı veriyor.

    örneğin k_combinations([1, 2, 3], 2) şöyle bir çıktı veriyor-> [[1,2], [1,3], [2, 3]

     

    ilgili github linki:

    https://gist.github.com/axelpale/3118596

     

    şimdi tüm bunları niye anlattım. hem birine lazım olur belki buradan arayınca bulmuş olur buradan, hem dee:

    benim asıl son isteğim şuydu:

    bir küme vereyim

    bu kümenin istediğim eleman sayılı alt kümelerini versin bana

    fakat bu alt kümeler öyle alt kümeler olsun ki

    diğer bir istediğim alt kümelerden yalnızca 1 tane içersin.

     

    biraz karışık bir istek şöyle söyleyim ki:

    örneğin [1,2,3,4,5,6,7,8,9,10,11,12] kümesinin

    öyle 6 elemanlı alt kümelerini versin ki bana

    bu alt kümelerin 4 elemanlı alt kümeleri, ilk verdiğim büyük kümenin 4 elemanlı alt kümelerinden yalnızca 1 tane içersin

     

    bunun için de şöyle bir mantık düşündüm.

    kümenin 6 elemanlı alt kümelerini al

    alırken herbirinin 4 elemanlı alt kümelerini al

    bu aldığın 4 elemanlı alt kümeleri bir arrayde sakla

    bir sonraki 6 elemanlı alt kümeye geldiğinde, bu kümenin 4 elemanlı alt kümelerinden herhangi biri daha önceki 6 elemanlı kümelerin 4 elemanlı alt kümelerinde geçiyor mu bir bak:

    ->geçiyorsa bu 6 elemanlı alt kümeyi atla(continue)

    ->geçmiyorsa bu 6 elemanlı alt kümeyi çıktıma ekle

     

    örneğin çıktımda eğer [1,2,3,4,5,6] var ise [1,2,3,4,5,7] olmamalı, çünkü ikisinde ortak [1,2,3,4] var.

     

    herneyse bugün de bununla uğraşıyorum arkadaşlar bir şeyler yazdım ama olmuyor.

    şimdi size linkini veriyorum.

    https://jsfiddle.net/kofcu/ptv9h6xp/6/

    şöyle ki yazma amacıma göre:

    aynı yukarda anlattığım gibi işliyor

    6 elemanlı altkümenin çıktıya uygun olup olmadığına bakmak için 4 elemanlı altkümelerini teker teker diğer altkümeler ile karşılaştırıyor, tüm karşılaştırma bitene kadar bu

    altkümeleri geçici bir array'e depoluyor, eğer bu 6 elemanlı altküme sınavı geçerse(4 elemanlı altkümelerinden herhangi biri daha öncekilerden değilse) geçici arraydekiler altkümeler arrayine kopyalanıyor ve çıktıya yazılıyor.

     

    fakat anlattığım gibi tam olarak çalışmıyor, 6 elemanlıların 4 elemanlı altkümelerini diğerleriyle karşılaştıramıyor. bence çalışmayan nokta 82. satır.

    tam nede hata yaptım bilemiyorum.

     

    tahminimce data türleriyle ilgili bir hatam olmalı ama bir türlü çözemedim, kafam da çok karıştı.

     

    yardımcı olabilecek, boş zamanı olan müridler bakabilir, yardımcı olabilirse sevinirim.

     

    Edit not:şimdi düşündüm de kesin variable scope da bir hatam var he...

    kofcu tarafından 04/Ağu/16 19:03 tarihinde düzenlenmiştir

    ben de sevgiden yanayım...
  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    kofcu
    kofcu's avatar
    Kayıt Tarihi: 29/Ağustos/2014
    Erkek

      


    ben de sevgiden yanayım...
Toplam Hit: 971 Toplam Mesaj: 2
javascript kombinasyon