Free Games Forum
Free Games Games Forums Music Forums TV Forums

  Free Games Forum Home FORUM
HOME
Search Posts SEARCH
POSTS
Who's Online WHO'S
ONLINE
Log in LOG
IN
Rules & FAQ RULES / FAQ
REPORT SPAM

Free Games Forum: Game Technology: Java:
Recursive Permuter

 

 


Real1ty
Senior Member


Nov 18, 2006, 5:27 AM

Post #1 of 4 (296 views)
Shortcut
Recursive Permuter Can't Post

I originally wrote this program to figure out the values of cryptograms, when added together, but with a little reworking, the permuter I made can be very useful in other situations...

Code
/** 
* Created by IntelliJ IDEA.
* User: real1ty
* Date: Sep 20, 2006
* Time: 2:22:59 PM
* To change this template use File | Settings | File Templates.
*/
class RecursionDriver
{
public static void main(String args[])
{
Recursion test = new Recursion("PORK", "CHOP", "PIZZA", '+'); //FIRST CRYPTOGRAM, SECOND CRYPTOGRAM, operator
if (test.assignArray(0))
test.print();
else
System.out.println("No Solution");
}
}


Code
/** 
* Created by IntelliJ IDEA.
* User: emlander
* Date: Sep 20, 2006
* Time: 1:49:13 PM
* To change this template use File | Settings | File Templates.
*/
class Recursion
{
static final int UNASSIGNED = -1;
static final int UNUSED = -2;
static final int CHARCOUNT = 26;

int[ ] letters;
String firstString;
String secondString;
String thirdString;
char operator;
int firstValues;
int secondValues;
int thirdValues;
boolean[ ] used= new boolean[10];

public Recursion(String thisFirstString, String thisSecondString, String thisThirdString, char thisOperator)
{
letters = new int[CHARCOUNT];
for(int i=0; i<CHARCOUNT; i++)
letters = UNUSED;
for(int p= 0; p<10; p ++)
{
used[p] = false;
}
firstString = thisFirstString;
secondString = thisSecondString;
thirdString = thisThirdString;
firstValues = UNUSED;
secondValues = UNUSED;
thirdValues = UNUSED;
operator = thisOperator;
initialize(firstString);
initialize(secondString);
initialize(thirdString);

}
public void initialize(String thisString)
{
for(int i=0; i <thisString.length(); i++)
letters[valueChar(thisString.charAt(i))] = UNASSIGNED;
}

public boolean testValues()
{
firstValues = getValues(firstString);
secondValues = getValues(secondString);
thirdValues = getValues(thirdString);
if(operator == '+')
return firstValues + secondValues == thirdValues;
if(operator == '-')
return firstValues - secondValues == thirdValues;
System.out.println("THIS PROGRAM CAN ONLY ADD AND SUBTRACT :(");
return false;
}
//permuter starts here
public boolean assignArray(int position)
{
/*Debugging Tool
*System.out.println(this.toString());
*count += 1;
*/
//System.out.println(position);

if (position>=CHARCOUNT)
return testValues();
else if (letters[position] == UNUSED)
return assignArray(position+1);
else

{
for(int j=0; j <10; j++)
{
if (!used[j])
{
letters[position] = j;
//System.out.println(j);
used[j] = true;
if (assignArray(position +1))
return true;
used[j] = false;
}
}
/*The code:
*if (assignArray(position+1))
*return true; used to be here.*/
}
return false;
}//end permuter

public void resetUsed()
{
for(int i = 0; i>10; i++)
used=false;
}
//BIG Precondition: This method can NOT be passed a null string (null length).
public int getValues(String thisString)
{
String resultString = "";
for(int i= thisString.length()-1; i>=0; i--)
resultString = "" +letters[valueChar(thisString.charAt(i))] + resultString;
// System.out.println(resultString);
return Integer.parseInt(resultString);

}

public int valueChar(char thisChar)
{
int result= UNASSIGNED;
switch(thisChar)
{
case 'A': result= 0; break;
case 'B': result= 1; break;
case 'C': result= 2; break;
case 'D': result= 3; break;
case 'E': result= 4; break;
case 'F': result= 5; break;
case 'G': result= 6; break;
case 'H': result= 7; break;
case 'I': result= 8; break;
case 'J': result= 9; break;
case 'K': result= 10; break;
case 'L': result= 11; break;
case 'M': result= 12; break;
case 'N': result= 13; break;
case 'O': result= 14; break;
case 'P': result= 15; break;
case 'Q': result= 16; break;
case 'R': result= 17; break;
case 'S': result= 18; break;
case 'T': result= 19; break;
case 'U': result= 20; break;
case 'V': result= 21; break;
case 'W': result= 22; break;
case 'X': result= 23; break;
case 'Y': result= 24; break;
case 'Z': result= 25; break;
}
return result;
}

public String toLetter(int thisInt)
{
String result= "";
switch(thisInt)
{
case 0: result= "A"; break;
case 1: result= "B"; break;
case 2: result= "C"; break;
case 3: result= "D"; break;
case 4: result= "E"; break;
case 5: result= "F"; break;
case 6: result= "G"; break;
case 7: result= "H"; break;
case 8: result= "I"; break;
case 9: result= "J"; break;
case 10: result= "K"; break;
case 11: result= "L"; break;
case 12: result= "M"; break;
case 13: result= "N"; break;
case 14: result= "O"; break;
case 15: result= "P"; break;
case 16: result= "Q"; break;
case 17: result= "R"; break;
case 18: result= "S"; break;
case 19: result= "T"; break;
case 20: result= "U"; break;
case 21: result= "V"; break;
case 22: result= "W"; break;
case 23: result= "X"; break;
case 24: result= "Y"; break;
case 25: result= "Z"; break;
}
return result;
}

public String toString()
{
String resultString = "Character Values:";
for(int i=0; i<CHARCOUNT; i++)
{
if(letters != UNUSED)
resultString= resultString + "\n" + toLetter(i) + "=" + letters;
}
resultString= resultString +
"\n" +
"\n" + "Solution:" +
"\n" +
"\n " +firstValues +
"\n" + operator + secondValues +
"\n____________________________________" +
"\n" + thirdValues;
return resultString;
}

public void print()
{
System.out.println(this.toString());
}

}



"It worked, idk how. It probably wasn't healthy considering one time it bleed."
~coolgreencat



wakka
Enthusiast

Nov 18, 2006, 8:27 AM

Post #2 of 4 (286 views)
Shortcut
Re: [Real1ty] Recursive Permuter [In reply to] Can't Post

Dude thats nice !


Wakka: I see that you are from that ******* forum, by the style of your typing.
Mark: It's called a font.



Real1ty
Senior Member


Nov 18, 2006, 1:32 PM

Post #3 of 4 (283 views)
Shortcut
Re: [wakka] Recursive Permuter [In reply to] Can't Post

Thanks Smile


"It worked, idk how. It probably wasn't healthy considering one time it bleed."
~coolgreencat


xxsomethingxx
Senior Member


Nov 22, 2006, 7:00 AM

Post #4 of 4 (269 views)
Shortcut
Re: [Real1ty] Recursive Permuter [In reply to] Can't Post

So, if you made this, you must have some knowledge of recursions.

Care to explain recursion, I don't understand it.




__________________________________________
First one sleeps inside his bed, place my fingers on his head, to each temple push and smother, 'till my fingers touch each other.

 
 
 


Search for (options) Web Design by Web Ideas - Page loaded in: 0.12 s on (CGI/1.1)