Спасибо, я совеошенно забыл про циклы for, но к сожалению этот код мне не совсем подходит.
если его проанализировать на функции например n= "(((!x)>x)_((!y)=(!x))) и цикл выполнится. Но всё что он сделал то это сказал что количество открыывающихся скобок = количеству закрывающихся, а для этого подходит и такая функция ()()()()()()()x(), которая уже не является ФАВ т.к тут просто скобки без выражения и действий, Я возьму вашу функцию на заметку в начале программы, чтоб следуйщий оператор по напрасну не работал с функцией где разница скобок != 0
PooH
О! Программирование методом Монте-Карло!!! Я преклоняюсь пред Вами, Мастер…
это наверно сарказм,я если чесно не сильно понял вашего выражения, я знаю конечно у меня код слегка Индуский. Я сейчас выложу код с коментариями, чтобы было понятней что я хотео им сделать.
>>> n
'(((!x)>x)_((!y)=(!x)))' # Я задал высказывание
>>> def COUNT(n): # Чоб определить Фав оно или не фав мне надо разбить его ещё на 2 высказывания, в том месте где
#личество открывающихся скобок на 1 больше чем закрывающихся( кроме 1 скобки)
k=h=m=d=0 # задаю нужные мне перемен. k=откр скобки, m=закр, d=колво симв. которые прошол цикл. h=k-m
j=1 # j мне понадобится во вложеном цикле чтоб предотвратить такую разность скобок как 1-0 =1,
while h!=1: # В конце цикла я сделал h как кол-во откр - кол-во закр скобок, и циклмпродолж. пока эта разность !=1
if n[d]=="(":
k=k+1
d=d+1
elif n[d]==")": # я щитаю откр скобки и закр скобки, если же это не скобки то он просто переходит не след символ
m=m+1
d=d+1
else:
d=d+1
while n[j]!= ")": # а вот решение проблемы 1 откр скобки, ведь сразу после неё будет k=1,m=0,h=k-m=1-0=1 и цикл
if n[j]=="(": # прекратится, я создал вложеный цикл который перемещяется по симв. пока не встретит закр. скоб.
k # условия оператора подщёта скобок теже самые, но встретив 1 закр скобку, проблема
j=j+1 # вида k=1,m=0,h=k-m=1-0=1 решится, и вложеный цикл закончится.
d=d+1
elif n[d]==")":
m=m+1
d=d+1
j=j+1
else:
d=d+1
j=j+1
h=k-m # после подщёта циклом скобок от отнимает от откр - закр когда эта разность стнет 1 цикл прекратится
return d # и выдаст мне номер той скобки , на которой разность открытых и закрытых станет 1.
>>> COUNT(n)
9
>>> n[:9]
'(((!x)>x)' # как видно всё правильно, колво откр=3, закр=2, 3-2=1
#теперь нужно в месте d разбить функцию на 2, до d и после d, отвросить у этих функций крайние скобки и проделать с каждой из них тоже самое, пока не дойдём до отсуствия скобок. А там начнутся основные сложности.