Ancient Astronaut Theory in Python

Suppose er have a string dictionary, the dictionary is representing a partial lexicographic ordering of ancient astronauts' dictionary. So, if we have a string s, we have to check whether it's a lexicographically sorted string according to this ancient astronaut dictionary or not.

So, if the input is like dictionary = "bdc", s = "bbbb h ddd i cccc", then the output will be True

To solve this, we will follow these steps −

  • l := size of astro_dict

  • if l is same as 0, then

    • return True

  • i := 0

  • for each character c in s, do

    • if c in astro_dict, then

      • while i < l and astro_dict[i] is not c, do

        • i := i + 1

      • if i >= l or astro_dict[i] is not c, then

        • return False

  • return True

Let us see the following implementation to get better understanding −


 Live Demo

class Solution:
   def solve(self, astro_dict, s):
      l = len(astro_dict)
      if l == 0:
         return True
      i = 0
      for c in s:
         if c in astro_dict:
            while i < l and astro_dict[i] != c:
               i += 1
            if i >= l or astro_dict[i] != c:
               return False
      return True
ob = Solution()
print(ob.solve("bdc","bbbb h ddd i cccc"))


"bdc","bbbb h ddd i cccc"