Python
 Computer >> コンピューター >  >> プログラミング >> Python

Python-program-to-convert-pos-to-sop


この記事では、以下に示す問題ステートメントの解決策について学習します。

問題の説明 −同等のsop形式に変換するために必要なpos形式が与えられます

変換は、最初にpos形式のアルファベットの数を数え、次にすべての最大および最小項を計算することによって実行できます。

それでは、以下の実装の概念を見てみましょう-

# Python code to convert standard POS form
# to standard SOP form
# to calculate number of variables
def count_no_alphabets(POS):
   i = 0
   no_var = 0
   # total no. of alphabets before will be equal to alphabets before first '.' character
   while (POS[i]!='.'):
      # character is a alphabet or not
      if (POS[i].isalpha()):
         no_var+= 1
      i+= 1
   return no_var
# maximum terms in an integer
def Cal_Max_terms(Max_terms, POS):
   a = ""
   i = 0
   while (i<len(POS)):
      if (POS[i]=='.'):
         # binary to decimal conversion
         b = int(a, 2)
         # append each min term(integer type) into the list
         Max_terms.append(b)
         # assign empty strings
         a =""
         i+= 1
      elif(POS[i].isalpha()):
         # checking whether variable is having complement as superscript
         if(i + 1 != len(POS) and POS[i + 1]=="'"):
            # concatenating the string with '1'
            a += '1'
            # incrementing by 2 because 1 for alphabet and another for a symbol "'"
            i += 2
         else:
            # concatenating the string with '0'
            a += '0'
            i += 1
      else:
         i+= 1
   # append last min term(integer type) into the list
   Max_terms.append(int(a, 2))
# conversion of minterms in binary and finally converting it to SOP
def Cal_Min_terms(Max_terms, no_var, start_alphabet):
   # declaration of the list
   Min_terms =[]
   # calculation of total no. of terms formed by all variables max = 2**no_var
   for i in range(0, max):
      # is current term present in max_terms or not
      if (Max_terms.count(i)== 0):
         # converting integer to binary
         b = bin(i)[2:]
         # loop used for inserting 0's before the
         # binary value so that its length will be
         # equal to no. of variables present in
         # each product term
         while(len(b)!= no_var):
            b ='0'+b
         # appending the max terms(integer) in the list
         Min_terms.append(b)
   SOP = ""
   # iterated untill minterms are available
   for i in Min_terms:
      # fetching the variable
      value = start_alphabet
      # iterate till there are 0's and 1's
      for j in i:
         # check whether the varailble is complemented or not
         if (j =='0'):
            # concatenating vaue and complement operator
            SOP = SOP + value+ "'"
         # check the non complement variable
         else:
            # concatenating value
            SOP = SOP + value
         # increment the alphabet by the next adjacent alaphabet
         value = chr(ord(value)+1)
      # concatenating the "+" operator
      SOP = SOP+ "+"
   # for discarding the extra '+'
   SOP = SOP[:-1]
   return SOP
# main function
def main():
   # input
   POS_expr ="(A'+B'+C).(A+B+C').(A+B'+C).(A'+B+C)"
   Max_terms = []
   no_var = count_no_alphabets(POS_expr)
   Cal_Max_terms(Max_terms, POS_expr)
   SOP_expr = Cal_Min_terms(Max_terms, no_var, POS_expr[1])
   print("Standard SOP form of " + POS_expr + " ==> " + SOP_expr)
# Driver code
if __name__=="__main__":
   main()

出力

Standard SOP form of (A'+B'+C).(A+B+C').(A+B'+C).(A'+B+C) ==>
A'B'C'+A'BC+AB'C+ABC

Python-program-to-convert-pos-to-sop

すべての変数はローカルスコープで宣言されており、それらの参照は上の図に示されています。

結論

この記事では、posをsop形式に変換する方法について学びました


  1. Python Lambda関数:はじめに

    Python Lambda関数は、単一行の無名関数です。 PythonのLambda式は、リストのフィルタリング、文字列の大文字小文字の変換、数値の乗算など、名前を必要としない1行の関数に役立ちます。 同様のタスクを複数回実行するプログラムを作成している場合、タスクの動作を変更する必要がある場合は、コードのすべてのインスタンスを更新する必要があるため、コードを繰り返すことは実用的ではありません。コードベースが大きいほど、これらの変更にかかる時間が長くなります。 そこで便利な機能があります。 Pythonには、無名関数と呼ばれる特別なタイプの関数があり、クイック関数を宣言できます。

  2. Python-program-to-convert-pos-to-sop

    この記事では、以下に示す問題ステートメントの解決策について学習します。 問題の説明 −同等のsop形式に変換するために必要なpos形式が与えられます 変換は、最初にpos形式のアルファベットの数を数え、次にすべての最大および最小項を計算することによって実行できます。 それでは、以下の実装の概念を見てみましょう- 例 # Python code to convert standard POS form # to standard SOP form # to calculate number of variables def count_no_alphabets(POS):   &