Generování binárních čísel
Následující prográmek (java) slouží pro generování binárních čísel na daný počet míst (porměnná pocetMist v kodu).
- Jednoduchou úpravou můžete program přepsat na generátor ternálních, kvartalních, hexadecimálních čísel. Zkrátka čísla v libovolné (ne jen dvojkové) soustavě.
- P
okud číselné znaky nahradíme univerzálnějíšími stringy, máme na světě univerzální generátor všech možných kombinací pro dané prvky na daný počet míst.
Takto upravený program nám pak vyřeší třeba takovýto příklad: Vypište všechny možnosti, kterými lze natřít plot z šesti laťěk, máme li k dispozici 4 barvy (červená, modrá, žlutá, zelená) a každá laťka může být natřená právě jednou barvou.
Ukázka programu pro generování binárních čísel (Java):
public class GeneratorKombinaci{
public static void main(String[] args) {
int pocetMist=5; //pocet mist na ktere dosazuju. V pripade cisel - do kolikaciferneho cisla mam generovat?
int aktualniKombinace[]=new int[pocetMist]; //posledni vygenerovana kombinace
//na zacatku nastavim prvni kombinaci
for(int i=0 ; i<pocetMist ; i++){
aktualniKombinace[i]=0;
}
int prvekOdKonce=1; //s kterym prvkem od konce prave pracuju
boolean ukoncitGenerovani=false;
//generuju dalsi kombinace
while (!ukoncitGenerovani){
boolean jednaJdeDale=true;
do{
jednaJdeDale=false;
aktualniKombinace[pocetMist-prvekOdKonce] = aktualniKombinace[pocetMist-prvekOdKonce] + 1; //zvednu posledni cifru o jedna
if(aktualniKombinace[pocetMist-prvekOdKonce]>=2){ //pokud sem presvihla pocet znaku, ktere mam k dispozici {0,1} napisu prvni znak
aktualniKombinace[pocetMist-prvekOdKonce]=0; //tedy nulu
jednaJdeDale=true; //a jedna jde dále (zvetsim o jedno znak na dalsi (predchazejici) pozici
prvekOdKonce = prvekOdKonce+1;
if (prvekOdKonce>=pocetMist+1){ //ukonceni cyklu generovani
ukoncitGenerovani=true;
break;
}
}
}while(jednaJdeDale);
vypisPole(aktualniKombinace);
prvekOdKonce=1;
}
}
public static void vypisPole(int [] pole){
for(int i = 0 ; i < pole.length; i++){
System.out.print(pole[i]+" "); //vypis prvku pole a mezery
}
System.out.print("\n"); //novy radek
}
Prográmek funguje na stejném principu jako počítadlo (tvoření posloupnosti čísel). Přidávám kuličky (zvětšuji čísla) v prvním řádku tak dlouho dokud mám k dispozici kuličky, jak mi dojdou přihodím na dalším řádku a první řádek vynuluju. Když mám zaplněných prvních n řádků, hledám další nezaplněný řádek na kterém přihodm kuličku a všechny před ním vynuluju. Atd.
Počítadlo na obrázku v pravo je pro desítkovou soustavu. Kdyby mělo jen dvě kuličky v řádku (0,1) bylo by to binární počítadlo.