Pagini recente » Cod sursa (job #1011770) | Cod sursa (job #120916) | Cod sursa (job #2575677) | Cod sursa (job #1322094) | Cod sursa (job #377501)
Cod sursa(job #377501)
#include<stdio.h>
char s[1001],chng[1001];
int i;
bool flg[1001];
bool RSolve(int pos,int sw)
{
bool swch=(sw&1);
bool rez=0;
short crnt_op=0;
for(i=pos;s[i];++i)
{
if(s[i]=='(')
{
switch(crnt_op)
{
case 0:rez=RSolve(i+1,sw);break;
case 1:rez&=RSolve(i+1,sw);break;
case 2:rez|=RSolve(i+1,sw);break;
}
}
if(s[i]==')')
{
++i;
return rez;
}
if(s[i]>='A'&&s[i]<='Z')
{
if(s[i]==chng[sw])
flg[i]=!flg[i];
if(s[i+1]&&s[i+1]>='A'&&s[i+1]<='Z')
{
if(s[i]=='N')
{
i+=2;
flg[i+2]=!flg[i+2];
}
if(s[i]=='A')
{
i+=2;
crnt_op=1;
}
if(s[i]=='O')
{
++i;
crnt_op=2;
}
if(s[i]=='T')
{
i+=3;
switch(crnt_op)
{
case 0:rez=(1>swch)?1:0;break;
case 1:rez&=(1>swch)?1:0;break;
case 2:rez|=(1>swch)?1:0;break;
}
}
if(s[i]=='F')
{
i+=3;
switch(crnt_op)
{
case 0:rez=(0<swch)?1:0;break;
case 1:rez&=(0<swch)?1:0;break;
case 2:rez|=(0<swch)?1:0;break;
}
}
}
else
{
switch(crnt_op)
{
case 0:rez=(1&flg[i]);break;
case 1:rez&=(1&flg[i]);break;
case 2:rez|=(1&flg[i]);break;
}
}
}
}
return rez;
}
int main()
{
int nch=0;
freopen("bool.in","r",stdin);
freopen("bool.out","w",stdout);
gets(s);
scanf("%d\n",&nch);
gets(chng);
for(int j=0;j<nch;++j)
printf("%d",RSolve(0,j));
}