Pagini recente » Cod sursa (job #3268465) | Cod sursa (job #2174634) | Cod sursa (job #1236072) | Cod sursa (job #2310929) | Cod sursa (job #2573310)
#include<bits/stdc++.h>
using namespace std;
const int NMAX=1005;
char s[NMAX];
bool val[305];
int ind;
void preComp(){
int n=strlen(s),j=0;
for(int i=0;i<n;i++){
if(s[i]=='A' && s[i+1]=='N' && s[i+2]=='D'){
s[j++]='&';
i+=2;
continue;
}
if(s[i]=='O' && s[i+1]=='R'){
s[j++]='|';
i++;
continue;
}
if(s[i]=='N' && s[i+1]=='O' && s[i+2]=='T'){
s[j++]='!';
i+=2;
continue;
}
if(s[i]=='T' && s[i+1]=='R' && s[i+2]=='U' && s[i+3]=='E'){
s[j++]='1';
i+=3;
continue;
}
if(s[i]=='F' && s[i+1]=='A' && s[i+2]=='L' && s[i+3]=='S' && s[i+4]=='E'){
s[j++]='0';
i+=4;
continue;
}
if(s[i]==' ')
continue;
s[j++]=s[i];
}
s[j]=s[j+1]='\0';
}
int sau();
int si();
int dif();
int sau(){
int ans=si();
while(s[ind]=='|'){
ind++;
ans|=si();
}
return ans;
}
int si(){
int ans=dif();
while(s[ind]=='&'){
ind++;
ans&=dif();
}
return ans;
}
int dif(){
if(s[ind]=='1'){
ind++;
return 1;
}
if(s[ind]=='0'){
ind++;
return 0;
}
if(s[ind]=='!'){
ind++;
return !dif();
}
if(s[ind]=='('){
ind++;
int aux=sau();
ind++;
return aux;
}
int aux=val[s[ind]];
ind++;
return aux;
}
int main(){
freopen("bool.in","r",stdin);
freopen("bool.out","w",stdout);
int m;
cin.getline(s, NMAX);
preComp();
scanf("%d ", &m);
for(int i=1;i<=m;i++){
char mod;
scanf("%c", &mod);
val[mod]=1-val[mod];
ind=0;
printf("%d", sau());
}
return 0;
}