🐸🐸
9x9 গ্রিডে সরলীকৃত ফ্রোগার গেমটির সর্বদা সর্বোত্তম সমাধানটি খুঁজে পেতে আপনার অবশ্যই সর্বনিম্ন প্রোগ্রামটি তৈরি করতে হবে।
কোর্স উপাদানসমূহ:
L
- লগ (দৈর্ঘ্য: 3-4)। আপনি যখন লগতে হ্যাপ করেন, এটি আপনাকে এটি বহন করে।V
- যানবাহন (দৈর্ঘ্য: 1-2)- গতি (1-2): সারিটির বাম পাশে সারিতে থাকা উপাদানগুলি গতিবেগ আনবে।
- স্পেসস: উপাদানগুলির মধ্যে সর্বদা কমপক্ষে দুটি স্পেস থাকবে।
- দিকনির্দেশ: যানবাহন এবং লগ উভয় বিভাগে, প্রতিটি গলিতে চলাচলের দিকটি বাম এবং ডানদিকে পরিবর্তিত হয়।
কোর্স গঠন:
- যদি এটি মূলধন হয়, এটি ঠিক যায়; যদি এটি ছোট হাতের বাচ্চা হয় তবে এটি বাম দিকে চলে যাবে এক সারিতে থাকা সমস্ত উপাদান একই দিকে চলে। কোনও উপাদানটির অংশটি পর্দা বন্ধ হয়ে যাওয়ার সাথে সাথে এটি স্ক্রিনের বিপরীত দিকে উপস্থিত হবে।
- প্রথম সারিটি একটি নিরাপদ অঞ্চল। ব্যাঙটি শুরু হয়
F
, যা সর্বদা একই স্পট। - পরের 3 টি সারি যানবাহন সহ রাস্তা।
- পরের সারিটি একটি নিরাপদ অঞ্চল।
- পরবর্তী 3 টি সারি লগ সহ জল (স্পর্শী জল == মৃত্যু)।
- একবার
W
গলি পৌঁছে আপনি জয়। - ব্যাঙ মারা গেলে তা আবার ফিরে যায়
F
প্লেয়ার নিয়ন্ত্রণ:
L
- বামR
- ঠিক আছেU
- আপD
- নিচেW
- দাঁড়াও
আপনি সরানোর পরে, অন্য একটি ফ্রেম পাস হয়। (নোট করুন যে ফ্রেমটি আপনার চলাফেরার পরে চলেছে, আপনার পদক্ষেপের একই সময়ে নয়)) আপনার প্রোগ্রামটি অবশ্যই অক্ষরের ক্রম হিসাবে অনুকূল সমাধান দিতে হবে URWUUL
। যদি কোনও কোর্সের কোনও সমাধান না হয় তবে আপনার প্রোগ্রামটি আউটপুট করে N
।
উদাহরণস্বরূপ: (যেহেতু আমি এগুলি হাত দ্বারা করেছি আমি জানি না যে সেগুলি সর্বোত্তম সমাধান কিনা))
0WWWWWWWWW 1 এলএল 2 এলএলএল 2 llll 0 1 ভিভি ভিভি 1 ভি ভি 1 ভিভি 0 এফ
সমাধান: WUWUUURWUULWUU
0WWWWWWWWW 2 এলএল 1 এলএলএল 1 এলএল 0 2 ভিভি 1 ভিভি 2 ভিভি 0 এফ
সমাধান: WUWUWUUWUUWWUU
0WWWWWWWWW 2 llll 2 এলএলএল 1 llll 0 2 ভি ভিভি 1 ভিভি ভিভি 1 v ভি 0 এফ
সমাধান: WWUUUURURRWWUUU
0WWWWWWWWW 2 llll 2 এলএলএল 1 এলএল 0 1 ভিভি ভি 2 ভিভিভি 2 ভিভিভি 0 এফ
সমাধান: N
(প্রথম সারির অতীতে যাওয়ার কোনও উপায় নেই))
পাঠ্য বাক্সে কোর্সটি আটকানো এবং "লোড কোর্স" চাপ দিয়ে স্নিপেটে এগুলি পরীক্ষা করুন। তারপরে সমাধানটিকে "ইনপুট" এ পেস্ট করুন এবং জমা দিন push
স্নিপেট: পরীক্ষার কেসগুলি তৈরি করা শক্ত, সুতরাং আমি এই স্নিপেট তৈরি করেছি যা আপনাকে দেখতে দেয় যে আপনার প্রোগ্রামটি এলোমেলোভাবে উত্পন্ন কোর্সগুলি সমাধান করতে পারে কিনা। পরীক্ষার উদ্দেশ্যে, আপনাকে যা করতে হবে তা হ'ল LRUWL...
"ইনপুট" বিভাগে আপনার প্রোগ্রামের সমাধান (উদাহরণস্বরূপ ) ইনপুট করে জমা দিন push কোর্সটিকে পুনরায় সেট করতে এর মূল স্থানে "রিসেট করুন" চাপুন। আপনি কোনও বাগ খুঁজে পেলে আমাকে জানান Let
var timer;
var f_x, f_y;
var replaced;
var copy;
document.body.onkeyup = function(e) {
var a = document.activeElement;
if (a !== controls && a !== data) hop(e.keyCode);
};
function setup() {
stop();
var rows = game.children;
rows[0].innerHTML = "0WWWWWWWWW";
load(logs, "L");
rows[2].innerHTML = "0 ";
load(cars, "V");
rows[4].innerHTML = "0 F ";
copy = game.innerHTML;
save();
f_x = 5;
f_y = 9;
replaced = " ";
}
function save() {
data.value = "";
for (var i = 1; i <= 9; i++) {
data.value += getRow(i).textContent;
if (i < 9) data.value += "\n";
}
}
function extLoad() {
stop();
var rows = data.value.split("\n");
replaced = " ";
for (var i = 0; i < rows.length; i++) {
var r = getRow(i + 1);
r.innerHTML = rows[i].replace(/ /g, " ");
if (rows[i].indexOf("V") !== -1 || rows[i].indexOf("L") !== -1) r.className = "right";
else if (rows[i].indexOf("v") !== -1 || rows[i].indexOf("l") !== -1) r.className = "left";
var f = rows[i].indexOf("F");
if (f !== -1) {
f_y = i + 1;
f_x = f;
}
}
copy = game.innerHTML;
}
function reset() {
stop();
game.innerHTML = copy;
f_x = 5;
f_y = 9;
replaced = " ";
}
function play() {
if (!timer) {
timer = setInterval(next, 1500);
}
}
function stop() {
if (timer) {
clearInterval(timer);
timer = null;
}
}
function input(i) {
var s = controls.value;
if (i === 0) {
stop();
sub.disabled = true;
}
if (s[i] === "L") hop(65);
else if (s[i] === "U") hop(87);
else if (s[i] === "R") hop(68);
else if (s[i] === "D") hop(83);
next();
if (i < s.length - 1) setTimeout(function() {
input(i + 1);
}, 750);
else sub.disabled = false;
}
function load(part, code) {
for (var r = 0; r < 3; r++) {
var row = part.children[r];
var s = "";
var dir = r % 2;
row.className = dir === 1 ? "right" : "left";
s += Math.floor(Math.random() * 2) + 1;
var end = 0;
for (var c = 0; c < 9-end;) {
var spaces = Math.min(9 - end - c , Math.floor(Math.random() * 2) + 2);
if(c === 0 && end===0) {
spaces = Math.floor(Math.random()*4);
end = Math.max(0,2-spaces);
}
s += " ".repeat(spaces);
c += spaces;
var type = "";
var len = 0;
var rand = Math.floor(Math.random() * 2);
if (code === "L") {
type = dir === 1 ? "L" : "l";
len = rand + 3;
} else {
type = dir === 1 ? "V" : "v";
len = rand + 1;
}
if (c + len > 9-end) continue;
s += type.repeat(len);
c += len;
}
row.innerHTML = s + " ".repeat(end);
}
}
function next() {
move(logs);
move(cars);
}
function move(part) {
var rows = part.children;
for (var i = 0; i < rows.length; i++) {
var s = rows[i].textContent;
var f = s.indexOf("F") !== -1;
if (f) {
replace(f_y, f_x, false);
s = rows[i].textContent;
}
var speed = s[0];
var stuff = s.substring(1);
var v = vel(speed, rows[i].className);
rows[i].textContent = s[0] + shift(stuff, speed, rows[i].className);
if (f) {
if (part === logs) {
f_x += v;
if (f_x < 1 || f_x > 9) {
go(5 - f_x, f_y - 9);
return;
}
}
replace(f_y, f_x, true);
s = rows[i].textContent.substring(1);
var c = f_x + v;
var t = "";
if (c > 9) t = s.substring(f_x) + s.substring(0, c - 9);
else if (c < 0) t = s.substring(0, f_x) + s.substring(9 + c);
else t = v > 0 ? s.substring(f_x, c) : s.substring(c, f_x);
if (t.indexOf("V") !== -1 || t.indexOf("v") !== -1) {
go(5 - f_x, f_y - 9);
}
}
}
}
function vel(mag, dir) {
var d = dir === "right" ? 1 : -1;
var m = parseInt(mag);
return d * m;
}
function shift(s, n, d) {
n = parseInt(n);
for (var i = 0; i < n; i++) {
if (d === "left") {
s = s.substring(1) + s.substring(0, 1);
} else {
s = s.substring(s.length - 1) + s.substring(0, s.length - 1);
}
}
return s;
}
function hop(k) {
if (k === 65) go(-1, 0);
else if (k === 87) go(0, 1);
else if (k === 68) go(1, 0);
else if (k === 83) go(0, -1);
}
function go(x, y) {
replace(f_y, f_x, false);
f_y -= y;
f_x += x;
replace(f_y, f_x, true);
if (f_x < 1 || f_x > 9 || f_y > 9) {
go(5 - f_x, f_y - 9);
return;
}
if (f_y == 1) {
alert("win!");
go(5 - f_x, f_y - 9);
}
}
function replace(y, x, f) {
var row = getRow(y);
if (!row) return false;
var s = row.textContent;
if (x < 1 || x >= s.length) return false;
if (f) {
replaced = s[x];
if (replaced === "V" || replaced === "v" || (replaced.charCodeAt(0) === 160 && y < 5)) {
go(5 - f_x, f_y - 9);
} else {
row.textContent = s.substring(0, x) + "F" + s.substring(x + 1);
}
} else {
row.textContent = s.substring(0, x) + replaced + s.substring(x + 1);
}
}
function getRow(y) {
if (y < 1 || y > 9) return false;
if (y === 1) return game.firstChild;
if (y === 9) return game.lastChild;
if (y > 5) return cars.children[y - 6];
if (y < 5) return logs.children[y - 2];
return game.children[2];
}
<body onload="setup()"><code id="game"><div></div><div id="logs"><div></div><div></div><div></div></div><div></div><div id="cars"><div></div><div></div><div></div></div><div></div></code>
<input type="button" value="Step" onclick="next()" />
<input type="button" value="Pause" onclick="stop()" />
<input type="button" value="Play" onclick="play()" />
<input type="button" value="Reset" onclick="reset()" />
<input type="button" value="New Course" onclick="setup()" />
<div>Controls: WASD</div>
<div>Input:
<input type="text" id="controls" />
<input type="submit" onclick="input(0)" id="sub" />
</div>
<div>
<textarea id="data" rows=9 cols=12></textarea>
<input type="button" onclick="extLoad()" value="Load Course" />
<input type="button" onclick="save()" value="Save Course" />
</div>
</body>
কোথা হতে শুরু:
সম্পর্কিত:
আরো দেখুন:
WWUUUURURRWWUUU
-> শেগি ফ্রগার খেলছে।