napsal sem ten program, ale dost nešikovně jsem začátečník. Bohuzel mi nefunguje použil jsem ten vaš nápad s tou binární soustavou a do cyklu while jsem vložil přičítání 1 k tomu poli cibulí. To přičítání jsem reazlizoval pomocí testů if, kde jsem napsal 6 možností (6 if-ů) které mohou nastat při sčítání binárních čísel. Cyklus while mi má běžet dokud se cibulovy zahon a cesnekovy zahon nerovnaji to znamená kdy oba budou obsahovat samý jedničky takže samý česneky jako je obsahuje česnekový zahon. Pak to skočí nakonec kde mi čítač vypíše počet možností (pokud nejsou vedle sebe cesneky(dve jednicky). Ve výsledku mi to dělá nekonečný cyklus a vypisuje to pořád jen samy nuly vubec to nepřičítá do toho pole jedničku nevíte prosím někdo kde mám chybu?
package algoritmy;
import java.util.*;
public class Main {
public static void main(String[] args) {
int [] zahon;
int [] cibulZahon;
int [] cesnekZahon;
int [] pomocZahon;
int [] prenosZahon;
int i;
int citac = 0;
Scanner sc = new Scanner(System.in);
System.out.println("Zadejte pocet sazenicek");
int n = sc.nextInt();
zahon = new int[n];
cibulZahon = new int[n];
cesnekZahon = new int[n];
pomocZahon = new int[n];
prenosZahon = new int[n+1];
for( i=0 ; i < zahon.length; i++ ){
cibulZahon[i] = 0;
}
for( i=0 ; i < zahon.length; i++ ){
cesnekZahon[i] = 1;
}
for( i=0 ; i < zahon.length; i++ ){
pomocZahon[i] = 1;
}
for( i=0 ; i <= zahon.length; i++ ){
prenosZahon[i] = 0;
}
boolean v;
while(v = (Arrays.equals(cibulZahon, cesnekZahon)) == false){
for( i=0 ; i < zahon.length; i++ ){
if(cibulZahon[i] == 0 && pomocZahon[i] == 0 && prenosZahon[i] == 0){ //1
cibulZahon[i] = 0;
}
if(cibulZahon[i] == 1 && pomocZahon[i] == 0 && prenosZahon[i] == 0){ //2
cibulZahon[i] = 1;
}
if(cibulZahon[i] == 0 && pomocZahon[i] == 1 && prenosZahon[i] == 0){ //3
cibulZahon[i] = 1;
}
if(cibulZahon[i] == 0 && pomocZahon[i] == 0 && prenosZahon[i] == 1){ //4
cibulZahon[i] = 1;
}
if(cibulZahon[i] == 1 && pomocZahon[i] == 1 && prenosZahon[i] == 0){ //5
cibulZahon[i] = 0;
prenosZahon[i+1] = 1;
}
if(cibulZahon[i] == 1 && pomocZahon[i] == 0 && prenosZahon[i] == 1){ //6
cibulZahon[i] = 0;
prenosZahon[i+1] = 1;
}
}
boolean vypis = true;
int pred = 2;
for( i=0 ; i < cibulZahon.length; i++ ){
if(cibulZahon[i] == 1 && pred == 1){
vypis = false;
}
pred = cibulZahon[i];
}
if(vypis == true){
for( i=0 ; i < cibulZahon.length; i++ ){
System.out.print(cibulZahon[i]);
}
System.out.println();
citac = citac + 1;
}
}
System.out.println(citac);
}
}