JSFiddle - React, Tailwind, and code Playground
by ivanovsuper
HTML
<script src="http://ajax.cdnjs.com/ajax/libs/json2/20110223/json2.js"></script>
Ширина: <input type="number" id="N" value="14"/>
Высота: <input type="number" id="M" value="15"/>
<button id="getcount">Получить количество ходов</button><br/>
<textarea id="log"></textarea>
CSS
#log {width:99%;height:600px;display:block}
JavaScript
function d(msg, empty) {
if (empty) $("#log").val('');
$("#log").val($("#log").val() + '\n' + msg);
};
$("#getcount").click(function() {
var r = {
"0,0": 1
};
var N = parseInt($("#N").val()),
M = parseInt($("#M").val());
for (var k = 0; k < N + M; k++) {
var j;
for (var i = 0; i < N; i++) {
j = k - i;
if (j < 0 || j >= M) continue;
if (j - 2 >= 0) {
if (i - 1 >= 0) {
r[i + "," + j] = (r[i + "," + j] || 0) + (r[(i - 1) + "," + (j - 2)] || 0);
}
if (i + 1 < N) {
r[i + "," + j] = (r[i + "," + j] || 0) + (r[(i + 1) + "," + (j - 2)] || 0);
}
}
if (i - 2 >= 0) {
if (j - 1 >= 0) {
r[i + "," + j] = (r[i + "," + j] || 0) + (r[(i - 2) + "," + (j - 1)] || 0);
}
if (j + 1 < M) {
r[i + "," + j] = (r[i + "," + j] || 0) + (r[(i - 2) + "," + (j + 1)] || 0);
}
}
}
}
d(r[(N - 1) + "," + (M - 1)]);
});