Cody

Problem 1187. Knave in the middle attack

Solution 2829939

Submitted on 13 Aug 2020
This solution is locked. To view this solution, you need to provide a solution of the same size or smaller.

Test Suite

Test Status Code Input and Output
1   Pass
% Ask a Knight whether 4 is prime % (he will respond false; your function should respond true) A=true; X=@isprime; str='X(4)'; f0=inline('logical(interp1([0,1],[0,x],1))','x','A','X'); F=@(str)xor(~A,f0(eval(str),A,X)); clear A X; assert(isequal(AnswerGenerator(F,str),true))

2   Pass
% Ask a Knave whether 4 is prime % (he will respond true; your function should respond false) A=false; X=@isprime; str='X(4)'; f0=inline('logical(interp1([0,1],[0,x],1))','x','A','X'); F=@(str)xor(~A,f0(eval(str),A,X)); clear A X; assert(isequal(AnswerGenerator(F,str),false))

3   Pass
% Ask a Knight whether he is a Knight % (both Knights and Knaves would respond true and so should your function) A=true; X=@isprime; str='A==true'; f0=inline('logical(interp1([0,1],[0,x],1))','x','A','X'); F=@(str)xor(~A,f0(eval(str),A,X)); clear A X; assert(isequal(AnswerGenerator(F,str),true))

4   Pass
% Ask a Knave whether he is a Knight % (both Knights and Knaves would respond true and so should your function) A=false; X=@isprime; str='A==true'; f0=inline('logical(interp1([0,1],[0,x],1))','x','A','X'); F=@(str)xor(~A,f0(eval(str),A,X)); clear A X; assert(isequal(AnswerGenerator(F,str),true))

5   Fail
% Ask a Knight whether he would respond affirmatively to the question of whether he is a Knight % (a Knave would respond false to this same question, and so should your function) A=true; X=@isprime; str='F(''A==true'')'; f0=inline('logical(interp1([0,1],[0,x],1))','x','A','X'); F=@(str)xor(~A,f0(eval(str),A,X)); clear A X; assert(isequal(AnswerGenerator(F,str),false))

Error using eval Undefined function 'F' for input arguments of type 'char'. Error in Test5>@(str)xor(~A,f0(eval(str),A,X)) (line 5) F=@(str)xor(~A,f0(eval(str),A,X)); Error in AnswerGenerator (line 3) ~F(regexprep(str,{'A','F'},{'~A','~F'})); Error in Test5 (line 7) assert(isequal(AnswerGenerator(F,str),false))

6   Fail
% Ask a Knave whether he would respond affirmatively to the question of whether he is a Knight % (a Knight would respond true to this same question, and so should your function) A=false; X=@isprime; str='F(''A==true'')'; f0=inline('logical(interp1([0,1],[0,x],1))','x','A','X'); F=@(str)xor(~A,f0(eval(str),A,X)); clear A X; assert(isequal(AnswerGenerator(F,str),true))

Error using eval Undefined function 'F' for input arguments of type 'char'. Error in Test6>@(str)xor(~A,f0(eval(str),A,X)) (line 5) F=@(str)xor(~A,f0(eval(str),A,X)); Error in AnswerGenerator (line 3) ~F(regexprep(str,{'A','F'},{'~A','~F'})); Error in Test6 (line 7) assert(isequal(AnswerGenerator(F,str),true))

7   Pass
A=true; X=@isprime; str='diff(X(2:3))'; f0=inline('logical(interp1([0,1],[0,x],1))','x','A','X'); F=@(str)xor(~A,f0(eval(str),A,X)); clear A X; assert(isequal(AnswerGenerator(F,str),true))

8   Pass
A=false; X=@isprime; str='diff(X(2:3))'; f0=inline('logical(interp1([0,1],[0,x],1))','x','A','X'); F=@(str)xor(~A,f0(eval(str),A,X)); clear A X; assert(isequal(AnswerGenerator(F,str),false))

9   Pass
A=true; X=@isprime; str='A==X(6)'; f0=inline('logical(interp1([0,1],[0,x],1))','x','A','X'); F=@(str)xor(~A,f0(eval(str),A,X)); clear A X; assert(isequal(AnswerGenerator(F,str),false))

10   Pass
A=false; X=@isprime; str='A==X(6)'; f0=inline('logical(interp1([0,1],[0,x],1))','x','A','X'); F=@(str)xor(~A,f0(eval(str),A,X)); clear A X; assert(isequal(AnswerGenerator(F,str),false))

11   Pass
A=true; X=@isprime; str='A&any(X(1:3))'; f0=inline('logical(interp1([0,1],[0,x],1))','x','A','X'); F=@(str)xor(~A,f0(eval(str),A,X)); clear A X; assert(isequal(AnswerGenerator(F,str),true))

12   Pass
A=false; X=@isprime; str='A&any(X(1:3))'; f0=inline('logical(interp1([0,1],[0,x],1))','x','A','X'); F=@(str)xor(~A,f0(eval(str),A,X)); clear A X; assert(isequal(AnswerGenerator(F,str),true))

13   Fail
A=true; X=@(x)rem(x,2); str='F(''F(''''X(3)'''')'')'; f0=inline('logical(interp1([0,1],[0,x],1))','x','A','X'); F=@(str)xor(~A,f0(eval(str),A,X)); clear A X; assert(isequal(AnswerGenerator(F,str),false))

Error using eval Undefined function 'F' for input arguments of type 'char'. Error in Test13>@(str)xor(~A,f0(eval(str),A,X)) (line 3) F=@(str)xor(~A,f0(eval(str),A,X)); Error in AnswerGenerator (line 3) ~F(regexprep(str,{'A','F'},{'~A','~F'})); Error in Test13 (line 5) assert(isequal(AnswerGenerator(F,str),false))

14   Fail
A=false; X=@(x)rem(x,2); str='F(''F(''''X(3)'''')'')'; f0=inline('logical(interp1([0,1],[0,x],1))','x','A','X'); F=@(str)xor(~A,f0(eval(str),A,X)); clear A X; assert(isequal(AnswerGenerator(F,str),true))

Error using eval Undefined function 'F' for input arguments of type 'char'. Error in Test14>@(str)xor(~A,f0(eval(str),A,X)) (line 3) F=@(str)xor(~A,f0(eval(str),A,X)); Error in AnswerGenerator (line 3) ~F(regexprep(str,{'A','F'},{'~A','~F'})); Error in Test14 (line 5) assert(isequal(AnswerGenerator(F,str),true))

Suggested Problems

More from this Author38