Skip to content

Instantly share code, notes, and snippets.

@quabug
Created March 17, 2013 13:59
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save quabug/5181623 to your computer and use it in GitHub Desktop.
Save quabug/5181623 to your computer and use it in GitHub Desktop.
1、第一個答案是b的問題是哪一道?   (a)2;(b) 3;(c)4;(d)5;(e)6 2、唯一兩道具有連續相同答案的題目是?   (a)2,3;(b)3,4;(c)4,5;(d)5,6;(e)6,7;   3、本題答案與哪一題相同?   (a)1;(b)2;(c)4;(d)7;(e)6   4、答案是a的問題個數是?  (a)0;(b)1;(c)2;(d)3;(e)4   5、本題答案與哪一題相同?  (a)10;(b)9;(c)8;(d)7;(e)6   6、答案是a的問題數量與答案是什麼的問題數量相同?   (a)b;(b)c;(c)d;(d)e;(e)以上都不是   7、按照字母順序,本題答案與下一題相差幾個字母?   (a)4;(b)3;(c)2;(d)1;(e)0。(注…
import itertools
candidates = itertools.product('abcde', repeat=10)
for c in candidates:
if q1(c) and q2(c) and q3(c) and q4(c) and q5(c) and q6(c) and q7(c) and q8(c) and q9(c) and q10(c):
print(c)
def q1(candidate):
this_answer = candidate[0]
answers = { 'a':2, 'b':3, 'c':4, 'd':5, 'e':6 }
numQuestionWithAnwserB = answers[this_answer];
return candidate[numQuestionWithAnwserB-1] == 'b';
def q2(candidate):
this_answer = candidate[1]
numQuestionWithSameAnwser = 0;
for i in range(len(candidate)-1):
if candidate[i] == candidate[i+1]:
if numQuestionWithSameAnwser != 0:
return False
else:
numQuestionWithSameAnwser = i + 1
answers = { 'a':2, 'b':3, 'c':4, 'd':5, 'e':6 }
return answers[this_answer] == numQuestionWithSameAnwser
def q3(candidate):
this_answer = candidate[2]
answers = { 'a':1, 'b':2, 'c':4, 'd':7, 'e':6 }
return candidate[answers[this_answer]-1] == this_answer;
def q4(candidate):
this_answer = candidate[3]
answers = { 'a':0, 'b':1, 'c':2, 'd':3, 'e':4 }
return answers[this_answer] == candidate.count('a')
def q5(candidate):
this_answer = candidate[4]
answers = { 'a':10, 'b':9, 'c':8, 'd':7, 'e':6 }
return candidate[answers[this_answer]-1] == this_answer;
def q6(candidate):
this_answer = candidate[5]
#answers = { 'a':'b', 'b':'c', 'c':'d', 'd':'e', 'e':'' }
#cntAns = { ans:candidate.count(ans) for ans in 'abcde' }
#cntAnsA = cntAns['a']
answers = { 'a':1, 'b':2, 'c':3, 'd':4 }
cntAns = [ candidate.count(ans) for ans in 'abcde' ]
cntAnsA = cntAns[0]
if this_answer != 'e':
return cntAnsA == cntAns[answers[this_answer]]
else:
return cntAns.count(cntAnsA) == 1
def q7(candidate):
this_answer = candidate[6]
answers = { 'a':4, 'b':3, 'c':2, 'd':1, 'e':0 }
return abs(ord(this_answer) - ord(candidate[7])) == answers[this_answer]
def q8(candidate):
this_answer = candidate[7]
answers = { 'a':2, 'b':3, 'c':4, 'd':5, 'e':6 }
return candidate.count('a') + candidate.count('e') == answers[this_answer]
def q9(candidate):
this_answer = candidate[8]
q8_answers = { 'a':2, 'b':3, 'c':4, 'd':5, 'e':6 }
q8_value = q8_answers[candidate[7]]
# base on q8 and assume there's only one correct answer for each questions.
answers = { 'a':7, 'b':6, 'c':4, 'd':8, 'e':0 }
return answers[this_answer] + q8_value == 10
def q10(candidate):
return True
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment