Integer-joukon

kombinaatiot

Vähäiset ohjelmointitaitoni ovat unohtumassa. Onkohan Javan nykyisissä versioissa - esim. Math-kirjastossa - olemassa valmis metodi, joka laskee jonkun integer-joukon kombinaatiot?

Tai löytyisiköhän tällainen koodinpätkä netistä tai voisiko joku näppärä kirjoittaa pätkän, joka tulostaa jonkun integer-joukon kaikki eri kombinaatiot, esim. kaikki mahdolliset 3 integerin osajoukot, jotka voidaan muodostaa 7 integerin joukosta.

Siis syötteenä joukko integerejä, tulostetaan joko näytölle tai tiedostoon.
Koodilla ei sinänsä ole väliä, mutta tarvitsisin työkalun, jolla voisi näppärästi laskea lukujoukkojen kombinaatioita. Löytyykö tällaista työkalua muuten valmiina esimerkiksi netistä? (Silloin en tarvitsisi koodia.)

2

311

    Vastaukset

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • Ehkä?

      class Kombi {

      static boolean[] valittu;
      static int lkm;

      public static void main (String[] args) {
      lkm = 8;
      valittu = new boolean[lkm];
      valitse (lkm);
      }

      static void valitse (int taso) {
      if (taso == 0) {
      System.out.print ("Seuraava kombinaatio: ");
      for (int i = 0; i < lkm; i) {
      if (valittu [i]) System.out.print (i 1);
      }
      System.out.println ("");
      return ;
      }
      valittu[taso-1] = false;
      valitse (taso-1);
      valittu[taso-1] = true;
      valitse (taso-1);
      }
      }

      Jos haluat tietyn kokoisia osajoukkoja, voit lisätä rekursiiviseen funktion laskurin, joka kertoo montako true-arvoa on jo laitettu. Sitä testaamalla voit heittää epäkelvot yhdistelmät pois.

      Tämä on minimaalinen toimiva ohjelma. Voit lukea lkm-muuttujan arvon komentoriviltä ja muutenkin parannella toimintaa. Tulostustakin voinee korjailla järkevämmäksi, koska se ei toimi lukujen kasvaessa >= 10.

    • *--*--*

      Jos tarkoitit esim. seuraavaa:

      A: set(1,2,3,4);
      powerset (A, 3);
      tulostaa:
      {{1,2,3},{1,2,4},{1,3,4},{2,3,4}}

      Ohjelma on Maxima nimeltään ja löytyy tuolta:

      http://maxima.sourceforge.net/

      (linux-distroissa löytynee pakettihallinnasta, muutoin download-linkki vasemmalla. OS X:kin taitaa löytyä)

      On muuten sairaan hyvä kaikille matikkaa tarvitseville. (Ei toisin ole mitään tekemistä Javan kanssa - onneksi)

    Ketjusta on poistettu 0 sääntöjenvastaista viestiä.

    Luetuimmat keskustelut

    1. Suomen markka otettiin käyttöön vuonna 1860

      Suomi käytti vuoteen 1840 asti rahayksikkönään rinnakkain Ruotsin riikintaalareita ja Venäjän ruplaa. Tämän jälkeen oli
      Maailman menoa
      49
      9767
    2. Kaivatullesi viesti ensi vuoteen?

      Kerro meneekö naiselle vai miehelle ja vähintään yksi tunniste, esim. kirjain.
      Ikävä
      108
      5262
    3. "Mä elän vieläkin"

      Ikurin turbiini vetäisi taannoin lainabiisin Topin (RIP också) ja kumppaneiden kanssa. Toivottavasti on yläkerrassa kunn
      Tampere
      59
      4367
    4. Pate Mustajärvi on kuollut

      Ihan pari tuntia sitten. Että sellaista. https://www.is.fi/viihde/art-2000011715177.html
      Maailman menoa
      138
      2937
    5. Yksityinen sektori aiheuttanut Suomen taantuman

      Investointien sijasta nostaneet voitot osinkoina omistajille. Ehdotan korjausliikkeenä yksityisen sektorin sosialisoimi
      Maailman menoa
      143
      2728
    6. Nyt Yle otti silmätikukseen sisäministeri Rantasen

      Aivan erinomaista työtä tehnyt sisäministeri Mari Rantanen on saanut paljon aikaiseksi. Maahanmuuttoon ja maahanmuuttaji
      Maailman menoa
      185
      2594
    7. Miten ikinä kelpaisin sulle

      Sinä saat niiltä muilta naisilta paljon enemmän, mitä minulta... Tai mihin minä olisin valmis. Enkä edes olisi niin tait
      Ikävä
      29
      1963
    8. Milloin näit kaivattusi edellisen kerran?

      Olitteko juttusilla vai sivusta vain? Miten reagoit?
      Ikävä
      20
      1697
    9. Edes vitamiinit eivät taanneet loputonta elämää

      Nimittäin niistä rahaa itselleen taikonut tohtori siirtyi tuonpuoleiseen.
      Maailman menoa
      37
      1569
    10. Liikaa vauhtia

      Nuorukainen 17v. on ajanut 114 km/h 60 km:n alueella Nesteen kohdalla ja onneksi poliisi oli paikalla ja hurjastelu lopp
      Suomussalmi
      21
      1117
    Aihe