Skip to main content
Hide Sidebar
Show Sidebar
<Progzoo Sections>
ProgZoo
Tutorials
How to...
Assessments
Help
<Other>
To do list
Recent changes
Random page
Personal
Log in / create account
Views
Page
Discussion
View source
History
Toolbox
What links here
Related changes
Special pages
Printable version
Tutorials
SET07102
Guides
Log in
Java
C#
C++
Perl
PHP
Python
Ruby
VB
Finite State Machine
From Progzoo
Finite State Machines
Even Binary Numbers
.
public class EvenBinary{ public static void main(String[] args) { String [] ls = {"10", "111", "01"}; for (String s : ls) System.out.printf("%10s, %s\n", s,sm(s)); } public enum States {START,FAIL,A,B}; public static boolean sm(String s) { States state = States.START; int i=0; while (i<s.length() && state!=States.FAIL) { char c = s.charAt(i); switch (state){ case START: if (c=='1') state = States.B; else state = States.FAIL; break; case A: if (c=='0') state = States.A; else if (c=='1') state = States.B; else state = States.FAIL; break; case B: if (c=='0') state = States.A; else if (c=='1') state = States.B; else state = States.FAIL; break; } i++; } return state==States.A; } }
[
Font
] [
Default
] [
Show
] [
Resize
] [
History
] [
Profile
]
test text
Even Binary Numbers - Abstracted
.
import java.util.HashMap; public class EvenBinary{ public static void main(String[] args) { String [] ls = {"10", "111", "01"}; for (String s : ls) System.out.printf("%10s, %s\n", s,sm(s)); } public enum States {S,A,B}; public static boolean sm(String s) { HashMap<States,HashMap<String,States>> d = new HashMap<States,HashMap<String,States>>(); d.put(States.S,new HashMap<String,States>()); d.put(States.A,new HashMap<String,States>()); d.put(States.B,new HashMap<String,States>()); d.get(States.S).put("1",States.B); d.get(States.A).put("0",States.A); d.get(States.A).put("1",States.B); d.get(States.B).put("0",States.A); d.get(States.B).put("1",States.B); States state = States.S; int i=0; while (i<s.length() && state!=null) { String c = s.substring(i,i+1); state = d.get(state).get(c); i++; } return state==States.A; } }
[
Font
] [
Default
] [
Show
] [
Resize
] [
History
] [
Profile
]
test text
Divisible by Three (decimal)
.
public class Div3 { public static void main(String[] args) { String [] ls = {"10", "111", "01","123"}; for (String s : ls) System.out.printf("%10s, %s\n", s,sm(s)); } public enum States {FAIL,A,B,C}; public static boolean sm(String s) { States state = States.A; int i=0; while (i<s.length() && state!=States.FAIL) { char c = s.charAt(i); switch (state){ case A: if (c=='0' || c=='3' || c=='6' || c=='9') state = States.A; else if (c=='1'||c=='4'||c=='7') state = States.B; else if (c=='2'||c=='5'||c=='8') state = States.C; break; case B: if (c=='0' || c=='3' || c=='6' || c=='9') state = States.B; else if (c=='1'||c=='4'||c=='7') state = States.C; else if (c=='2'||c=='5'||c=='8') state = States.A; break; case C: if (c=='0' || c=='3' || c=='6' || c=='9') state = States.C; else if (c=='1'||c=='4'||c=='7') state = States.A; else if (c=='2'||c=='5'||c=='8') state = States.B; break; } i++; } return state==States.A; } }
[
Font
] [
Default
] [
Show
] [
Resize
] [
History
] [
Profile
]
test text