vencinachev

FSM

Mar 2nd, 2021
699
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  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.  
RAW Paste Data

Adblocker detected! Please consider disabling it...

We've detected AdBlock Plus or some other adblocking software preventing Pastebin.com from fully loading.

We don't have any obnoxious sound, or popup ads, we actively block these annoying types of ads!

Please add Pastebin.com to your ad blocker whitelist or disable your adblocking software.

×