Advertisement
vencinachev

FSM

Mar 2nd, 2021
1,045
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.34 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6.  
  7. namespace FSM
  8. {
  9.     class Program
  10.     {
  11.         enum State { NULL, S, SO, SOS, N, NA, NAN, NANO };
  12.  
  13.         static bool FindSOS (string text)
  14.         {
  15.             State state = State.NULL;
  16.             foreach (var ch in text)
  17.             {
  18.                 switch (state)
  19.                 {
  20.                     case State.NULL:
  21.                         if(ch == 'S')
  22.                         {
  23.                             state = State.S;
  24.                         }
  25.                         break;
  26.                     case State.S:
  27.                         if(ch == 'O')
  28.                         {
  29.                             state = State.SO;
  30.                         }
  31.                         else if (ch == 'S')
  32.                         {
  33.                             // same state
  34.                         }
  35.                         else
  36.                         {
  37.                             state = State.NULL;
  38.                         }
  39.                         break;
  40.                     case State.SO:
  41.                         if (ch == 'S')
  42.                         {
  43.                             state = State.SOS;
  44.                             return true;
  45.                         }
  46.                         else
  47.                         {
  48.                             state = State.NULL;
  49.                         }
  50.                         break;
  51.                 }
  52.             }
  53.             return false;
  54.         }
  55.  
  56.         static int CountSOS(string text)
  57.         {
  58.             int count = 0;
  59.             State state = State.NULL;
  60.             foreach (var ch in text)
  61.             {
  62.                 switch (state)
  63.                 {
  64.                     case State.NULL:
  65.                         if (ch == 'S')
  66.                         {
  67.                             state = State.S;
  68.                         }
  69.                         break;
  70.                     case State.S:
  71.                         if (ch == 'O')
  72.                         {
  73.                             state = State.SO;
  74.                         }
  75.                         else if (ch == 'S')
  76.                         {
  77.                             // same state
  78.                         }
  79.                         else
  80.                         {
  81.                             state = State.NULL;
  82.                         }
  83.                         break;
  84.                     case State.SO:
  85.                         if (ch == 'S')
  86.                         {
  87.                             state = State.SOS;
  88.                             count++;
  89.                         }
  90.                         else
  91.                         {
  92.                             state = State.NULL;
  93.                         }
  94.                         break;
  95.                     case State.SOS:
  96.                         if (ch == 'S')
  97.                         {
  98.                             state = State.S;
  99.                         }
  100.                         else
  101.                         {
  102.                             state = State.NULL;
  103.                         }
  104.                         break;
  105.                 }
  106.             }
  107.             return count;
  108.         }
  109.         static void Main(string[] args)
  110.         {
  111.             Console.WriteLine(CountSOS("aaaSOSOSOS"));
  112.         }
  113.     }
  114. }
  115.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement