Skip to content

Instantly share code, notes, and snippets.

@djosix
Created May 1, 2020 12:09
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 djosix/e8946616b81f0a8a390ab5bda51d782c to your computer and use it in GitHub Desktop.
Save djosix/e8946616b81f0a8a390ab5bda51d782c to your computer and use it in GitHub Desktop.
import requests, re, random
sess = requests.Session()
def test(answers, time_fn):
assert len(answers) == 35
res = sess.get('https://test.mensa.no')
m = re.search(r'authorizationToken = (.+);', res.text)
assert m is not None
auth_token = m.groups()[0]
data = {
"authorizationToken": int(auth_token),
"session": {
"currentQuestionId": 34,
"ಠ_ಠ789": sum(a is not None for a in answers),
"secondsRemaining": 0,
"secondsUsed": 1500,
"currentQuestionTracking": 13,
"currentQuestionStartTime": 30854,
"answers": {
str(i): {
"questionId": i,
"answerId": ans if ans is not None else -1,
"answerCount": 1 if ans is not None else 0,
"totalTimeMs": time_fn(i),
"visitCount": 0
}
for i, ans in enumerate(answers)
},
"ageGroup": 1850,
"languageCode": "en",
"startTime": "2020-05-01T10:39:41.443Z",
"endTime": "2020-05-01T10:40:12.297Z"
},
"languageCode": "en"
}
# print(data)
url = f'https://test.mensa.no/Score/Score?lang=en&rnd={random.random()}'
res = sess.post(url, json=data)
try:
res_data = res.json()
del res_data['gaussImage1']
# del res_data['authorizationToken']
# del res_data['orMore']
return res_data
except:
return None
saved_answers = [0, 4, 5, 5, 3, 4, 4, 2, 3, 3, 0, 0, 1, 0, 5, 1, 3, 2, 0, 0, 1, 4]
# saved_answers = [None, None, None, None, None, 4, 4, 2, 3, 3, 0, 0, 1, 0, 5, 1, 3, 2, 0, 0, 1, 4, 5, 5, 4, 5, 0, 0, 2, 4, 3, 0, 4]
saved_answers = [0, 4, 5, 5, 3, 4, 4, 2, 3, 3, 0, 0, 1, 0, 5, 1, 3, 2, 0, 0, 1, 4, 5, 5, 4, 5, 0, 0, 2, 4, 3, 0, 4, 0, 3] # final
# saved_answers = [5, 5, 4, 5, 0, 0, 2, 4, 3, 0, 4, 0, 3]
# saved_answers = [0, 0, 0, 5, 0, 0, 2, 4, 3, 0, 4, 0, 3, 0, 4, 5, 5, 3, 4, 4, 2, 3, 3, 0, 0, 1, 0, 5, 1, 3, 2, 0, 0, 1, 4]
while len(saved_answers) < 35:
n = len(saved_answers)
max_iq = 0
max_ans = -1
for a in range(6):
answers = saved_answers.copy()
answers.append(a)
answers += [None] * (35 - n - 1)
# result = test(answers[13:] + answers[:13], lambda i: 10000)
result = test(answers, lambda i: 10000)
iq = result['iq']
print(saved_answers + [a], iq)
if iq > max_iq:
max_iq = iq
max_ans = a
elif iq < max_iq:
break
saved_answers.append(max_ans)
print(saved_answers)
seq = ''.join(map('ABCDEF'.__getitem__, saved_answers))
print(seq) # AEFFDEECDDAABAFBDCAABEFFEFAACEDAEAD
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment