Dateien nach "/" hochladen
8 Damen und Fibonacci
This commit is contained in:
parent
c76da3f3aa
commit
ce3f868383
151
Main.java
Normal file
151
Main.java
Normal file
@ -0,0 +1,151 @@
|
|||||||
|
// Press Shift twice to open the Search Everywhere dialog and type `show whitespaces`,
|
||||||
|
// then press Enter. You can now see whitespace characters in your code.
|
||||||
|
public class Main {
|
||||||
|
public static long Fibonacci_Iter(int num){
|
||||||
|
long smol = 1;
|
||||||
|
long big = 1;
|
||||||
|
long temp;
|
||||||
|
|
||||||
|
while (1 < num){
|
||||||
|
temp = smol;
|
||||||
|
smol = big;
|
||||||
|
big = big + temp;
|
||||||
|
num--;
|
||||||
|
}
|
||||||
|
return big;
|
||||||
|
}
|
||||||
|
public static long Fibonacci_Rec(int num){
|
||||||
|
|
||||||
|
// Inputqualität
|
||||||
|
if(num < 0){
|
||||||
|
System.out.println("Ungültiger Input");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(num < 2){
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
return Fibonacci_Rec(num-2) + Fibonacci_Rec(num-1);
|
||||||
|
}
|
||||||
|
public static long Fibonacci_Round(int num){
|
||||||
|
long result = 1;
|
||||||
|
if(num==0 || num==1){return 1;}
|
||||||
|
for(int i=1; i<num; i++){result = Math.round(result*1.61803398875);}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
public static void QueensPlace(int field[][],int row, int col){
|
||||||
|
|
||||||
|
// block spaces
|
||||||
|
for (int i=0; i<8; i++){
|
||||||
|
// block row and col
|
||||||
|
field[i][col]=3;
|
||||||
|
field[row][i]=3;
|
||||||
|
|
||||||
|
// block diagonals
|
||||||
|
// Left 2 Right, Top 2 Bottom
|
||||||
|
if (row - col + i < 8 && row - col + i >= 0) {
|
||||||
|
field[row-col + i][i]=3;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Left 2 Right, Bottom 2 Top
|
||||||
|
if(row+i < 8 && row+i >=0 && col-i < 8 && col-i >=0){
|
||||||
|
field[row+i][col-i]=3;
|
||||||
|
}
|
||||||
|
if(row-i < 8 && row-i >=0 && col+i < 8 && col+i >=0){
|
||||||
|
field[row-i][col+i]=3;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// place queen
|
||||||
|
field[row][col]=1;
|
||||||
|
}
|
||||||
|
public static boolean QueensFree(int field[][], int row, int col){
|
||||||
|
return field[row][col] == 0;
|
||||||
|
}
|
||||||
|
public static void QueensPrint(int field[][]){
|
||||||
|
// print field
|
||||||
|
System.out.println("---------------");
|
||||||
|
for(int i=0; i<field.length; i++){
|
||||||
|
for(int j=0; j<field[i].length; j++) {
|
||||||
|
System.out.print(field[i][j]+" ");
|
||||||
|
}
|
||||||
|
System.out.println();
|
||||||
|
}
|
||||||
|
System.out.println("---------------");
|
||||||
|
System.out.println();
|
||||||
|
}
|
||||||
|
public static int[][] QueensSetup(int rows, int cols){
|
||||||
|
|
||||||
|
int field[][] = new int[rows][cols];
|
||||||
|
for(int i = 0; i < rows-1; i++){
|
||||||
|
for(int j = 0; j < cols-1; j++){
|
||||||
|
field[i][j]=0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return field;
|
||||||
|
}
|
||||||
|
public static void QueensMain(){
|
||||||
|
int rows=8;
|
||||||
|
int cols=8;
|
||||||
|
int start_queens=8;
|
||||||
|
int queens = start_queens;
|
||||||
|
int field[][] = QueensSetup(rows,cols);
|
||||||
|
int wrong[][] = new int[8][8];
|
||||||
|
|
||||||
|
|
||||||
|
while(queens>0){
|
||||||
|
boolean full = true;
|
||||||
|
for(int i=0;i<rows;i++){
|
||||||
|
for(int j=0;j<cols;j++){
|
||||||
|
if(QueensFree(field,i,j)){
|
||||||
|
QueensPlace(field,i,j);
|
||||||
|
queens--;
|
||||||
|
full = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
System.out.println("Lösungsversuch: ");
|
||||||
|
QueensPrint(field);
|
||||||
|
if(full){
|
||||||
|
|
||||||
|
// current Queens as wrong for next time
|
||||||
|
for (int i=0; i<8; i++){
|
||||||
|
for(int j=0; j<8; j++){
|
||||||
|
if(field[i][j]==1){
|
||||||
|
wrong[i][j]=3;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// reset
|
||||||
|
field = QueensSetup(rows,cols);
|
||||||
|
queens = start_queens;
|
||||||
|
|
||||||
|
// block earlier wrongs
|
||||||
|
for(int i = 0; i<8; i++){
|
||||||
|
for(int j = 0; j<8; j++){
|
||||||
|
if(wrong[i][j]==3){
|
||||||
|
field[i][j]=3;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
System.out.println("New Starting field: ");
|
||||||
|
QueensPrint(field);
|
||||||
|
// aktuelle Positionen d Queens merken und sperren, rest reset
|
||||||
|
}
|
||||||
|
}
|
||||||
|
System.out.println("Finale Lösung: ");
|
||||||
|
QueensPrint(field);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
/*for(int i=0; i<4; i++) {
|
||||||
|
System.out.println("i= "+i);
|
||||||
|
System.out.println("Iter : " + Fibonacci_Iter(i));
|
||||||
|
System.out.println("Rec : " + Fibonacci_Rec(i));
|
||||||
|
System.out.println("Round: " + Fibonacci_Round(i));
|
||||||
|
System.out.println();
|
||||||
|
}*/
|
||||||
|
// ---------------------------------------------------------
|
||||||
|
QueensMain();
|
||||||
|
}
|
||||||
|
}
|
Reference in New Issue
Block a user