You are on page 1of 3

Q2 Solution Cum Marking Scheme

Q2.1
public void stateTransitionFunction(char inputC)
{
switch(inputC)
{
case 'a':
switch(this.currentState)
{
case "q1":
this.setCurrentState("q1");
this.setCurrentOutput('0');
break;
case "q2":
this.setCurrentState("q1");
this.setCurrentOutput('0');
break;
case "q3":
this.setCurrentState("q1");
this.setCurrentOutput('0');
break;
case "q4":
this.setCurrentState("q3");
this.setCurrentOutput('1');
break;
case "q5":
this.setCurrentState("q2");
this.setCurrentOutput('1');
break;
}
break;

Any Four Correct


1.5 * 4 = 6 Marks

case 'b':
switch(this.currentState)
{
case "q1":
this.setCurrentState("q4");
this.setCurrentOutput('1');
break;
case "q2":
this.setCurrentState("q5");
this.setCurrentOutput('1');
break;
case "q3":
this.setCurrentState("q5");
this.setCurrentOutput('1');
break;
case "q4":
this.setCurrentState("q4");
this.setCurrentOutput('1');
break;
case "q5":
this.setCurrentState("q5");
this.setCurrentOutput('1');
break;
}
break;

Any Four Correct


1.5 * 4 = 6 Marks

}
}// End of Method
Q2.2 public String getBinaryStringOutput(String inputStr)
{
String binaryString="";
if(inputStr.length()==0)
return binaryString;

resetMachine();
int len= inputStr.length();
for(int i=0;i<len;i++)
{
char in= inputStr.charAt(i);

0/2 Marks
0/2 Marks
0/3 Marks

this.stateTransitionFunction(in);

0/3 Marks

binaryString=binaryString+this.currentOutput;

0/2 Marks

}
return binaryString;
}// End of Method
Q2.3
public int getMachineEquivalent(FSM other)
{
int equivalent=0;

0/2 Marks

for(int i=1; i<=20;i++)


{

String difflenstr[]=this.getInputStringsofLength(inputAlphabets,i);
for (int j=0;j<difflenstr.length;j++)
{

0/2 Marks

String s1 = this.getBinaryStringOutput(difflenstr[j]);
String s2 = other.getBinaryStringOutput(difflenstr[j]);
if (s1.equals(s2))

continue;

else

return equivalent;

0/2 Marks
0/2 Marks

}// End of Inner Loop


equivalent=equivalent+1;
}// End of Outer Loop
return equivalent;
}// End of Method

0/3 Marks

0/2 Marks

0/6 Marks

You might also like