javascript-lp-solver
Version:
Easy to use, JSON oriented Linear Programming and Mixed Int. Programming Solver
671 lines (670 loc) • 16.2 kB
JSON
{
"name": "Sudoku 4x4",
"background": "http://www.sudokuweb.org/easy-sudoku-4x4-for-kids/",
"constraints": {
"unique11": {
"equal": 1
},
"unique12": {
"equal": 1
},
"unique13": {
"equal": 1
},
"unique14": {
"equal": 1
},
"unique21": {
"equal": 1
},
"unique22": {
"equal": 1
},
"unique23": {
"equal": 1
},
"unique24": {
"equal": 1
},
"unique31": {
"equal": 1
},
"unique32": {
"equal": 1
},
"unique33": {
"equal": 1
},
"unique34": {
"equal": 1
},
"unique41": {
"equal": 1
},
"unique42": {
"equal": 1
},
"unique43": {
"equal": 1
},
"unique44": {
"equal": 1
},
"oncePerRow11": {
"equal": 1
},
"oncePerColumn11": {
"equal": 1
},
"oncePerRow12": {
"equal": 1
},
"oncePerColumn12": {
"equal": 1
},
"oncePerRow13": {
"equal": 1
},
"oncePerColumn13": {
"equal": 1
},
"oncePerRow14": {
"equal": 1
},
"oncePerColumn14": {
"equal": 1
},
"oncePerRow21": {
"equal": 1
},
"oncePerColumn21": {
"equal": 1
},
"oncePerRow22": {
"equal": 1
},
"oncePerColumn22": {
"equal": 1
},
"oncePerRow23": {
"equal": 1
},
"oncePerColumn23": {
"equal": 1
},
"oncePerRow24": {
"equal": 1
},
"oncePerColumn24": {
"equal": 1
},
"oncePerRow31": {
"equal": 1
},
"oncePerColumn31": {
"equal": 1
},
"oncePerRow32": {
"equal": 1
},
"oncePerColumn32": {
"equal": 1
},
"oncePerRow33": {
"equal": 1
},
"oncePerColumn33": {
"equal": 1
},
"oncePerRow34": {
"equal": 1
},
"oncePerColumn34": {
"equal": 1
},
"oncePerRow41": {
"equal": 1
},
"oncePerColumn41": {
"equal": 1
},
"oncePerRow42": {
"equal": 1
},
"oncePerColumn42": {
"equal": 1
},
"oncePerRow43": {
"equal": 1
},
"oncePerColumn43": {
"equal": 1
},
"oncePerRow44": {
"equal": 1
},
"oncePerColumn44": {
"equal": 1
},
"oncePerBlock001": {
"equal": 1
},
"oncePerBlock002": {
"equal": 1
},
"oncePerBlock003": {
"equal": 1
},
"oncePerBlock004": {
"equal": 1
},
"oncePerBlock011": {
"equal": 1
},
"oncePerBlock012": {
"equal": 1
},
"oncePerBlock013": {
"equal": 1
},
"oncePerBlock014": {
"equal": 1
},
"oncePerBlock101": {
"equal": 1
},
"oncePerBlock102": {
"equal": 1
},
"oncePerBlock103": {
"equal": 1
},
"oncePerBlock104": {
"equal": 1
},
"oncePerBlock111": {
"equal": 1
},
"oncePerBlock112": {
"equal": 1
},
"oncePerBlock113": {
"equal": 1
},
"oncePerBlock114": {
"equal": 1
}
},
"variables": {
"x111": {
"unique11": 1,
"oncePerRow11": 1,
"oncePerColumn11": 1,
"oncePerBlock001": 1
},
"x112": {
"unique11": 1,
"oncePerRow12": 1,
"oncePerColumn12": 1,
"oncePerBlock002": 1
},
"x113": {
"unique11": 1,
"oncePerRow13": 1,
"oncePerColumn13": 1,
"oncePerBlock003": 1
},
"x114": {
"unique11": 1,
"oncePerRow14": 1,
"oncePerColumn14": 1,
"oncePerBlock004": 1
},
"x121": {
"unique12": 1,
"oncePerRow11": 1,
"oncePerColumn21": 1,
"oncePerBlock001": 1
},
"x122": {
"unique12": 1,
"oncePerRow12": 1,
"oncePerColumn22": 1,
"oncePerBlock002": 1
},
"x123": {
"unique12": 1,
"oncePerRow13": 1,
"oncePerColumn23": 1,
"oncePerBlock003": 1
},
"x124": {
"unique12": 1,
"oncePerRow14": 1,
"oncePerColumn24": 1,
"oncePerBlock004": 1
},
"x131": {
"unique13": 1,
"oncePerRow11": 1,
"oncePerColumn31": 1,
"oncePerBlock011": 1
},
"x132": {
"unique13": 1,
"oncePerRow12": 1,
"oncePerColumn32": 1,
"oncePerBlock012": 1
},
"x133": {
"unique13": 1,
"oncePerRow13": 1,
"oncePerColumn33": 1,
"oncePerBlock013": 1
},
"x134": {
"unique13": 1,
"oncePerRow14": 1,
"oncePerColumn34": 1,
"oncePerBlock014": 1
},
"x141": {
"unique14": 1,
"oncePerRow11": 1,
"oncePerColumn41": 1,
"oncePerBlock011": 1
},
"x142": {
"unique14": 1,
"oncePerRow12": 1,
"oncePerColumn42": 1,
"oncePerBlock012": 1
},
"x143": {
"unique14": 1,
"oncePerRow13": 1,
"oncePerColumn43": 1,
"oncePerBlock013": 1
},
"x144": {
"unique14": 1,
"oncePerRow14": 1,
"oncePerColumn44": 1,
"oncePerBlock014": 1
},
"x211": {
"unique21": 1,
"oncePerColumn11": 1,
"oncePerRow21": 1,
"oncePerBlock001": 1
},
"x212": {
"unique21": 1,
"oncePerColumn12": 1,
"oncePerRow22": 1,
"oncePerBlock002": 1
},
"x213": {
"unique21": 1,
"oncePerColumn13": 1,
"oncePerRow23": 1,
"oncePerBlock003": 1
},
"x214": {
"unique21": 1,
"oncePerColumn14": 1,
"oncePerRow24": 1,
"oncePerBlock004": 1
},
"x221": {
"unique22": 1,
"oncePerRow21": 1,
"oncePerColumn21": 1,
"oncePerBlock001": 1
},
"x222": {
"unique22": 1,
"oncePerRow22": 1,
"oncePerColumn22": 1,
"oncePerBlock002": 1
},
"x223": {
"unique22": 1,
"oncePerRow23": 1,
"oncePerColumn23": 1,
"oncePerBlock003": 1
},
"x224": {
"unique22": 1,
"oncePerRow24": 1,
"oncePerColumn24": 1,
"oncePerBlock004": 1
},
"x231": {
"unique23": 1,
"oncePerRow21": 1,
"oncePerColumn31": 1,
"oncePerBlock011": 1
},
"x232": {
"unique23": 1,
"oncePerRow22": 1,
"oncePerColumn32": 1,
"oncePerBlock012": 1
},
"x233": {
"unique23": 1,
"oncePerRow23": 1,
"oncePerColumn33": 1,
"oncePerBlock013": 1
},
"x234": {
"unique23": 1,
"oncePerRow24": 1,
"oncePerColumn34": 1,
"oncePerBlock014": 1
},
"x241": {
"unique24": 1,
"oncePerRow21": 1,
"oncePerColumn41": 1,
"oncePerBlock011": 1
},
"x242": {
"unique24": 1,
"oncePerRow22": 1,
"oncePerColumn42": 1,
"oncePerBlock012": 1
},
"x243": {
"unique24": 1,
"oncePerRow23": 1,
"oncePerColumn43": 1,
"oncePerBlock013": 1
},
"x244": {
"unique24": 1,
"oncePerRow24": 1,
"oncePerColumn44": 1,
"oncePerBlock014": 1
},
"x311": {
"unique31": 1,
"oncePerColumn11": 1,
"oncePerRow31": 1,
"oncePerBlock101": 1
},
"x312": {
"unique31": 1,
"oncePerColumn12": 1,
"oncePerRow32": 1,
"oncePerBlock102": 1
},
"x313": {
"unique31": 1,
"oncePerColumn13": 1,
"oncePerRow33": 1,
"oncePerBlock103": 1
},
"x314": {
"unique31": 1,
"oncePerColumn14": 1,
"oncePerRow34": 1,
"oncePerBlock104": 1
},
"x321": {
"unique32": 1,
"oncePerColumn21": 1,
"oncePerRow31": 1,
"oncePerBlock101": 1
},
"x322": {
"unique32": 1,
"oncePerColumn22": 1,
"oncePerRow32": 1,
"oncePerBlock102": 1
},
"x323": {
"unique32": 1,
"oncePerColumn23": 1,
"oncePerRow33": 1,
"oncePerBlock103": 1
},
"x324": {
"unique32": 1,
"oncePerColumn24": 1,
"oncePerRow34": 1,
"oncePerBlock104": 1
},
"x331": {
"unique33": 1,
"oncePerRow31": 1,
"oncePerColumn31": 1,
"oncePerBlock111": 1
},
"x332": {
"unique33": 1,
"oncePerRow32": 1,
"oncePerColumn32": 1,
"oncePerBlock112": 1
},
"x333": {
"unique33": 1,
"oncePerRow33": 1,
"oncePerColumn33": 1,
"oncePerBlock113": 1
},
"x334": {
"unique33": 1,
"oncePerRow34": 1,
"oncePerColumn34": 1,
"oncePerBlock114": 1
},
"x341": {
"unique34": 1,
"oncePerRow31": 1,
"oncePerColumn41": 1,
"oncePerBlock111": 1
},
"x342": {
"unique34": 1,
"oncePerRow32": 1,
"oncePerColumn42": 1,
"oncePerBlock112": 1
},
"x343": {
"unique34": 1,
"oncePerRow33": 1,
"oncePerColumn43": 1,
"oncePerBlock113": 1
},
"x344": {
"unique34": 1,
"oncePerRow34": 1,
"oncePerColumn44": 1,
"oncePerBlock114": 1
},
"x411": {
"unique41": 1,
"oncePerColumn11": 1,
"oncePerRow41": 1,
"oncePerBlock101": 1
},
"x412": {
"unique41": 1,
"oncePerColumn12": 1,
"oncePerRow42": 1,
"oncePerBlock102": 1
},
"x413": {
"unique41": 1,
"oncePerColumn13": 1,
"oncePerRow43": 1,
"oncePerBlock103": 1
},
"x414": {
"unique41": 1,
"oncePerColumn14": 1,
"oncePerRow44": 1,
"oncePerBlock104": 1
},
"x421": {
"unique42": 1,
"oncePerColumn21": 1,
"oncePerRow41": 1,
"oncePerBlock101": 1
},
"x422": {
"unique42": 1,
"oncePerColumn22": 1,
"oncePerRow42": 1,
"oncePerBlock102": 1
},
"x423": {
"unique42": 1,
"oncePerColumn23": 1,
"oncePerRow43": 1,
"oncePerBlock103": 1
},
"x424": {
"unique42": 1,
"oncePerColumn24": 1,
"oncePerRow44": 1,
"oncePerBlock104": 1
},
"x431": {
"unique43": 1,
"oncePerColumn31": 1,
"oncePerRow41": 1,
"oncePerBlock111": 1
},
"x432": {
"unique43": 1,
"oncePerColumn32": 1,
"oncePerRow42": 1,
"oncePerBlock112": 1
},
"x433": {
"unique43": 1,
"oncePerColumn33": 1,
"oncePerRow43": 1,
"oncePerBlock113": 1
},
"x434": {
"unique43": 1,
"oncePerColumn34": 1,
"oncePerRow44": 1,
"oncePerBlock114": 1
},
"x441": {
"unique44": 1,
"oncePerRow41": 1,
"oncePerColumn41": 1,
"oncePerBlock111": 1
},
"x442": {
"unique44": 1,
"oncePerRow42": 1,
"oncePerColumn42": 1,
"oncePerBlock112": 1
},
"x443": {
"unique44": 1,
"oncePerRow43": 1,
"oncePerColumn43": 1,
"oncePerBlock113": 1
},
"x444": {
"unique44": 1,
"oncePerRow44": 1,
"oncePerColumn44": 1,
"oncePerBlock114": 1
}
},
"binaries": {
"x111": 1,
"x112": 1,
"x113": 1,
"x114": 1,
"x121": 1,
"x122": 1,
"x123": 1,
"x124": 1,
"x131": 1,
"x132": 1,
"x133": 1,
"x134": 1,
"x141": 1,
"x142": 1,
"x143": 1,
"x144": 1,
"x211": 1,
"x212": 1,
"x213": 1,
"x214": 1,
"x221": 1,
"x222": 1,
"x223": 1,
"x224": 1,
"x231": 1,
"x232": 1,
"x233": 1,
"x234": 1,
"x241": 1,
"x242": 1,
"x243": 1,
"x244": 1,
"x311": 1,
"x312": 1,
"x313": 1,
"x314": 1,
"x321": 1,
"x322": 1,
"x323": 1,
"x324": 1,
"x331": 1,
"x332": 1,
"x333": 1,
"x334": 1,
"x341": 1,
"x342": 1,
"x343": 1,
"x344": 1,
"x411": 1,
"x412": 1,
"x413": 1,
"x414": 1,
"x421": 1,
"x422": 1,
"x423": 1,
"x424": 1,
"x431": 1,
"x432": 1,
"x433": 1,
"x434": 1,
"x441": 1,
"x442": 1,
"x443": 1,
"x444": 1
},
"expects": {
"result": 0,
"x111": 1,
"x122": 1,
"x134": 1,
"x143": 1,
"x213": 1,
"x224": 1,
"x231": 1,
"x242": 1,
"x312": 1,
"x321": 1,
"x333": 1,
"x344": 1,
"x414": 1,
"x423": 1,
"x432": 1,
"x441": 1,
"feasible": true
}
}