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.)
Integer-joukon
2
311
Vastaukset
- 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
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 oli499767Kaivatullesi viesti ensi vuoteen?
Kerro meneekö naiselle vai miehelle ja vähintään yksi tunniste, esim. kirjain.1085262"Mä elän vieläkin"
Ikurin turbiini vetäisi taannoin lainabiisin Topin (RIP också) ja kumppaneiden kanssa. Toivottavasti on yläkerrassa kunn594367Pate Mustajärvi on kuollut
Ihan pari tuntia sitten. Että sellaista. https://www.is.fi/viihde/art-2000011715177.html1382937Yksityinen sektori aiheuttanut Suomen taantuman
Investointien sijasta nostaneet voitot osinkoina omistajille. Ehdotan korjausliikkeenä yksityisen sektorin sosialisoimi1432728Nyt Yle otti silmätikukseen sisäministeri Rantasen
Aivan erinomaista työtä tehnyt sisäministeri Mari Rantanen on saanut paljon aikaiseksi. Maahanmuuttoon ja maahanmuuttaji1852594Miten ikinä kelpaisin sulle
Sinä saat niiltä muilta naisilta paljon enemmän, mitä minulta... Tai mihin minä olisin valmis. Enkä edes olisi niin tait291963- 201697
Edes vitamiinit eivät taanneet loputonta elämää
Nimittäin niistä rahaa itselleen taikonut tohtori siirtyi tuonpuoleiseen.371569Liikaa vauhtia
Nuorukainen 17v. on ajanut 114 km/h 60 km:n alueella Nesteen kohdalla ja onneksi poliisi oli paikalla ja hurjastelu lopp211117