Ich soll ein neunteiliges Puzzel anordnen. Die linke obere Ecke ist der Fixpunkt, die anderen Eckteile können an den anderen verschiedenen Ecken angelegt werden. Das Mittelteil kann in alle 4 Richtungen gedreht werden. Die verbleibenden Randstücke können an den 4 unterschiedlichen Rändern angelegt werden. Der folgende Programmcode enthält aber auch, das die Randstücke in alle Richtungen gedreht werden können.
Mein Problem ist, wer kann mir das Programm in Java umschreiben das es läuft. Ich komme mit damit nicht zu Rande. Ich bin im Mathe-Grundstudium und habe vor vielen Jahre die alten Programmiersprache Cobol gelernt!
Danke Eure Hilfe.
Danke für Eure Hilfe.
Mein Problem ist, wer kann mir das Programm in Java umschreiben das es läuft. Ich komme mit damit nicht zu Rande. Ich bin im Mathe-Grundstudium und habe vor vielen Jahre die alten Programmiersprache Cobol gelernt!
Danke Eure Hilfe.
Java:
import java.io.*;
import java.util.*;
public class puzzel{
static int A=1, Z_1=2, B=3, Z_4=4, X=5, Z_2=6, D=7, Z_3=8, C=9, R1=10, R2=11, R3=12, R4=13;
int [][] karte = {{Z_1,Z_4 ,R4 ,R1},{B ,X ,A ,R1},{R2 ,Z_2 ,Z_1,R1},
{X ,D ,R4 ,A}, {Z_2 ,Z_3 ,Z_4 ,Z_1}, {R2 ,C ,X ,B},
{Z_3 ,R3 ,R4 ,Z_4 }, {C , R3, D,X }, {R2, R3,Z_3, Z_2}};
final int [][][] belegung = new final int [3][3][2]; // [i][j][0] Kartennummer
void setup()
{
setzeKarte(0);
}
void setzeKarte(int platz)
{
int i,j, jmax , m, n;
boolean frei , passt;
int iplatz = platz % 3;
int jplatz = platz / 3;
for(int i=0; i<9; i++) // gehe ueber alle 9 Karten
{
frei = true;
for(int j=0; j<platz; j++)
frei = frei && (belegung [j%3][j/3][0] != i);
if(frei) // noch nicht gelegt
{
jmax = (i==0 ? 0 : 3); // Karte 0 ist der Fixpunkt
for(int j=0; j<= jmax; j++) // gehe ueber alle vier Drehungen
{
passt = true;
if(iplatz !=0) // muss mit horizontalem Vorgaenger passen
passt = passt && (karte[i][(6 -j)%4] + karte[belegung [iplatz -1][ jplatz ][0]][(4- belegung [iplatz -1][ jplatz ][1])%4] == 9);
if(jplatz != 0) // muss mit vertikalem Vorgaenger passen
passt = passt && (karte[i][(5 -j)%4] + karte[belegung [iplatz ][jplatz -1][0]][(3 - belegung [iplatz ][jplatz -1][1])%4] == 9);
if (passt) // Karte passt
{
belegung [iplatz ][ jplatz ][0]=i; // Kartennummer
belegung [iplatz ][ jplatz ][1]=j; // Drehung
if(platz <8) // noch nicht alle Karten gelegt
return setzeKarte(platz+1);
else
{
System.out.println("Loesung gefunden !");
for(int n=0; n<3; n++)
{
for(int m=0; m <3; m++)
System.out.println("Karte "+( belegung [m][n][0]+1) +", gedreht um "+belegung [m][n][1]*90+ "‚°¶ , ");
System.out.println("\n");
}
}
}
}
}
}
}
}
}