Skip to content

Instantly share code, notes, and snippets.

@phts
Last active February 13, 2018 17:14
Show Gist options
  • Save phts/69d8f50223030fc2cac189184daf2476 to your computer and use it in GitHub Desktop.
Save phts/69d8f50223030fc2cac189184daf2476 to your computer and use it in GitHub Desktop.
Quiz solver at Epam's Adaptation Portal
javascript:(function() {
var interval,
permutations = {
check: {
'3': [[false, false, true],
[false, true, false],
[true, false, false],
[false, true, true],
[true, true, false],
[true, true, true]],
'4': [[false, false, false, true],
[false, false, true, false],
[false, false, true, true],
[false, true, false, false],
[false, true, false, true],
[false, true, true, false],
[false, true, true, true],
[true, false, false, false],
[true, false, false, true],
[true, false, true, false],
[true, false, true, true],
[true, true, false, false],
[true, true, false, true],
[true, true, true, false],
[true, true, true, true]],
'5': [[false, false, false, false, false],
[false, false, false, false, true],
[false, false, false, true, false],
[false, false, false, true, true],
[false, false, true, false, false],
[false, false, true, false, true],
[false, false, true, true, false],
[false, false, true, true, true],
[false, true, false, false, false],
[false, true, false, false, true],
[false, true, false, true, false],
[false, true, false, true, true],
[false, true, true, false, false],
[false, true, true, false, true],
[false, true, true, true, false],
[false, true, true, true, true],
[true, false, false, false, false],
[true, false, false, false, true],
[true, false, false, true, false],
[true, false, false, true, true],
[true, false, true, false, false],
[true, false, true, false, true],
[true, false, true, true, false],
[true, false, true, true, true],
[true, true, false, false, false],
[true, true, false, false, true],
[true, true, false, true, false],
[true, true, false, true, true],
[true, true, true, false, false],
[true, true, true, false, true],
[true, true, true, true, false],
[true, true, true, true, true]],
'6': [[false, false, false, false, false, false],
[false, false, false, false, false, true],
[false, false, false, false, true, false],
[false, false, false, false, true, true],
[false, false, false, true, false, false],
[false, false, false, true, false, true],
[false, false, false, true, true, false],
[false, false, false, true, true, true],
[false, false, true, false, false, false],
[false, false, true, false, false, true],
[false, false, true, false, true, false],
[false, false, true, false, true, true],
[false, false, true, true, false, false],
[false, false, true, true, false, true],
[false, false, true, true, true, false],
[false, false, true, true, true, true],
[false, true, false, false, false, false],
[false, true, false, false, false, true],
[false, true, false, false, true, false],
[false, true, false, false, true, true],
[false, true, false, true, false, false],
[false, true, false, true, false, true],
[false, true, false, true, true, false],
[false, true, false, true, true, true],
[false, true, true, false, false, false],
[false, true, true, false, false, true],
[false, true, true, false, true, false],
[false, true, true, false, true, true],
[false, true, true, true, false, false],
[false, true, true, true, false, true],
[false, true, true, true, true, false],
[false, true, true, true, true, true],
[true, false, false, false, false, false],
[true, false, false, false, false, true],
[true, false, false, false, true, false],
[true, false, false, false, true, true],
[true, false, false, true, false, false],
[true, false, false, true, false, true],
[true, false, false, true, true, false],
[true, false, false, true, true, true],
[true, false, true, false, false, false],
[true, false, true, false, false, true],
[true, false, true, false, true, false],
[true, false, true, false, true, true],
[true, false, true, true, false, false],
[true, false, true, true, false, true],
[true, false, true, true, true, false],
[true, false, true, true, true, true],
[true, true, false, false, false, false],
[true, true, false, false, false, true],
[true, true, false, false, true, false],
[true, true, false, false, true, true],
[true, true, false, true, false, false],
[true, true, false, true, false, true],
[true, true, false, true, true, false],
[true, true, false, true, true, true],
[true, true, true, false, false, false],
[true, true, true, false, false, true],
[true, true, true, false, true, false],
[true, true, true, false, true, true],
[true, true, true, true, false, false],
[true, true, true, true, false, true],
[true, true, true, true, true, false],
[true, true, true, true, true, true]]
},
radio: {
'2': [[true, false],
[false, true]],
'3': [[true, false, false],
[false, true, false],
[false, false, true]],
'4': [[true, false, false, false],
[false, true, false, false],
[false, false, true, false],
[false, false, false, true]],
'5': [[true, false, false, false, false],
[false, true, false, false, false],
[false, false, true, false, false],
[false, false, false, true, false],
[false, false, false, false, true]],
'6': [[true, false, false, false, false, false],
[false, true, false, false, false, false],
[false, false, true, false, false, false],
[false, false, false, true, false, false],
[false, false, false, false, true, false],
[false, false, false, false, false, true]],
'7': [[true, false, false, false, false, false, false],
[false, true, false, false, false, false, false],
[false, false, true, false, false, false, false],
[false, false, false, true, false, false, false],
[false, false, false, false, true, false, false],
[false, false, false, false, false, true, false],
[false, false, false, false, false, false, true]]
}
},
$sections = $('.questionnaire-text[data-lang="en"] section'),
iteration = 0,
data = $sections.map(function () {
var $this = $(this),
checkboxes = $this.find('input[type=checkbox]'),
radiobuttons = $this.find('input[type=radio]'),
type = checkboxes.size() ? 'check' : 'radio',
inputs = type === 'check' ? checkboxes : radiobuttons;
return {
title: $('.question-name', $this).text(),
inputs: inputs,
type: type
};
});
data = _.indexBy(data, 'title');
$.fx.off = true;
function interate() {
if (iteration === 0) {
var errorSections = $sections.toArray();
} else {
var errorSections = _.filter($sections.toArray(), function (it) {
return $(it).is('.error');
});
}
if (!errorSections.length) {
clearInterval(interval);
return;
}
if (iteration > 64) {
clearInterval(interval);
throw new Error('Not solved');
}
_.forEach(errorSections, function(it) {
var $this = $(it),
title = $('.question-name', $this).text();
entry = data[title],
perms = permutations[entry.type][entry.inputs.length][iteration];
if (!perms) {
return;
}
_.forEach(entry.inputs, function (v, i) {
$(v).prop('checked', perms[i]);
});
});
$('.done-button').click();
iteration++;
}
interval = setInterval(interate, 5000);
console.log('interval=', interval);
interate();
})();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment