demo
Class Kombinaatiot

java.lang.Object
  extended by demo.Kombinaatiot

public class Kombinaatiot
extends java.lang.Object

Kombinaatiot-luokka erilaisten summakombinaatioiden määrittelemiseksi.

 Esimerkiksi luvuista 3 5 9
 saadaan aikaiseksi summat: 3 5 8 9 12 14 17
 

Version:
1.0, 14.02.2003, 1.1, 24.02.2007/vl Lisätty taulukon järjestäminen.
Author:
Vesa Lappalainen

Field Summary
private  int kombinaationNro
           
private  int lkm
           
private  int[] luvut
           
private static int MAXESIINTYMALUKUJA
           
 
Constructor Summary
Kombinaatiot()
          Alustetaan kombinaatioiden laskuri
 
Method Summary
 int eka()
          Siirtyy ensimmäiseen summakombinaatioon ja palauttaa sen
 void lisaa(int luku)
          Lisää uuden luvun jonka kombinaatiota voidaan käyttää summassa.
 int loppu()
          "Iteraattorin loppuarvo"
static void main(java.lang.String[] args)
          Testiohjelma summakombinaatioille
 int seuraava()
          Otetaan käyttöön seuraava summakombinaatio luvuista.
 java.lang.String summaKombinaatiot()
          Palauttaa merkkijonona ne summakombinaatiot jotka toistaiseksi saadaan aikaiseksi.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

MAXESIINTYMALUKUJA

private static final int MAXESIINTYMALUKUJA
See Also:
Constant Field Values

lkm

private int lkm

luvut

private int[] luvut

kombinaationNro

private int kombinaationNro
Constructor Detail

Kombinaatiot

public Kombinaatiot()
Alustetaan kombinaatioiden laskuri

Method Detail

lisaa

public void lisaa(int luku)
Lisää uuden luvun jonka kombinaatiota voidaan käyttää summassa.

Parameters:
luku -
Example:
  Kombinaatiot kombi = new Kombinaatiot();
  kombi.lisaa($luku);                               // NOPMD
  kombi.summaKombinaatiot() === $kombinaatiot;
  
    $luku     |  $kombinaatiot
  --------------------------------------------------------
     ---      | ""                                          
     3        | "3 "
     5        | "3 5 8 "
     9        | "3 5 8 9 12 14 17 "
     1        | "1 3 4 5 6 8 9 9 10 12 13 14 15 17 18 "
       
 

loppu

public int loppu()
"Iteraattorin loppuarvo"

Returns:
loppuarvo

eka

public int eka()
Siirtyy ensimmäiseen summakombinaatioon ja palauttaa sen

Returns:
ensimmäinen summakombinaatio
Example:
  Kombinaatiot kombi = new Kombinaatiot();
  kombi.eka() === kombi.loppu();
  kombi.lisaa(3);  kombi.eka() === 3;   
  kombi.lisaa(1);  kombi.eka() === 1;

seuraava

public int seuraava()
Otetaan käyttöön seuraava summakombinaatio luvuista. kombinaation_nro on kombinaation numero. Jos kombinaation_nro ajatellaan binääriluvuksi, niin käytetään summassa kaikkia niitä lukuja, joita vastaavissa kohdissa kombinaation_nro:ssa on bitti päällä Kun käydään läpi kaikki kombinaatioiden numerot 1..n, niin tulee käytyä läpi kaikki binääriluvut (jos lkm=3 => 001 010 011 100 101 111) 1..2^lkm, eli kaikki kombinaatiot, joissa on lkm-bittiä ja ainakin yksi bitti päällä. Kun kullakin kombinaation numerolla summataan ne luvut, joiden kohdalla bitti on päällä, tulee siis käytyä läpi kaikki summakombinaatiot

Returns:
seuraava kombinaatiosumma
Example:
  Kombinaatiot kombi = new Kombinaatiot();
  kombi.eka() === kombi.loppu();
  kombi.lisaa(3);  kombi.eka() === 3; 
  kombi.seuraava() === kombi.loppu();
     
  kombi.lisaa(1);  kombi.eka() === 1;
  kombi.seuraava() === 3;  
  kombi.seuraava() === 4;  
  kombi.seuraava() === kombi.loppu();

summaKombinaatiot

public java.lang.String summaKombinaatiot()
Palauttaa merkkijonona ne summakombinaatiot jotka toistaiseksi saadaan aikaiseksi.

Returns:
summakombinaatiot merkkijonona
Example:
  Kombinaatiot kombi = new Kombinaatiot();
  kombi.summaKombinaatiot() === "";
  kombi.lisaa(3); kombi.summaKombinaatiot() === "3 ";
  kombi.lisaa(1); kombi.summaKombinaatiot() === "1 3 4 ";
 

main

public static void main(java.lang.String[] args)
Testiohjelma summakombinaatioille

Parameters:
args - ei käytössä