using
System;
class
GFG{
static
string
digits =
"0123456789"
, sign =
"+-"
;
static
string
dot =
"."
, ex =
"eE"
;
static
int
[,] dfa =
new
int
[11, 5];
static
void
makeDFA()
{
dfa[0, 0] = 1;
dfa[1, 0] = 1;
dfa[1, 2] = 3;
dfa[1, 3] = 2;
dfa[1, 4] = 6;
dfa[3, 0] = 4;
dfa[4, 0] = 4;
dfa[4, 3] = 5;
dfa[4, 4] = 6;
dfa[6, 0] = 8;
dfa[6, 1] = 7;
dfa[7, 0] = 8;
dfa[8, 0] = 8;
dfa[8, 3] = 9;
}
static
void
buildDFA()
{
for
(
int
i = 0; i < 11; i++)
for
(
int
j = 0; j < 5; j++)
dfa[i, j] = 10;
makeDFA();
}
static
void
checkDFA(
string
s)
{
buildDFA();
int
currentstate = 0;
for
(
int
i = 0; i < s.Length; i++)
{
if
(digits.IndexOf(s[i]) != -1)
currentstate = dfa[currentstate, 0];
else
if
(sign.IndexOf(s[i]) != -1)
currentstate = dfa[currentstate, 1];
else
if
(dot.IndexOf(s[i]) != -1)
currentstate = dfa[currentstate, 2];
else
if
(ex.IndexOf(s[i]) != -1)
currentstate = dfa[currentstate, 4];
else
currentstate = dfa[currentstate, 3];
}
if
(currentstate == 1 || currentstate == 4 ||
currentstate == 8)
{
Console.WriteLine(
"Unsigned integer"
);
}
else
{
Console.WriteLine(
"Not an unsigned integer"
);
}
}
public
static
void
Main(
string
[] args)
{
string
S =
"1729"
;
checkDFA(S);
}
}