Лошото класиране след изпита по JavaScript основи не се дължи само на липсата на проверени домашни работи, но а и на подготовката преди самия изпит! От решени 4 задачи предните два дни – толкова! 🙂
- Взет с отличие!
- Точки: 63.41
- Място: 190
Лошото класиране след изпита по JavaScript основи не се дължи само на липсата на проверени домашни работи, но а и на подготовката преди самия изпит! От решени 4 задачи предните два дни – толкова! 🙂
Това е решението на първата задача от изпита по JavaScript основи, проведен на 19 май 2014 година в Телерик Академия.
В задачата се иска да се намерят всички възможни варианти на автомобили, камиони и триколки, на които сумата на гумите да е равен на определено число.
Решението на задачата е само с цикли, без рекурсия. Използват се комбинации.
function findPermutations(n) {
var tires = [3, 4, 10];
var buffer = new Array(n + 1);
for (var i = 0; i <= n; ++i)
buffer[i] = new Array(tires.length + 1);
for (var j = 1; j <= tires.length; ++j)
buffer[0][j] = 1;
for (i = 1; i <= n; ++i) {
buffer[i][0] = 0;
for (j = 1; j <= tires.length; ++j) {
var value = buffer[i][j − 1];
if (tires[j − 1] <= i)
value += buffer[i − tires[j − 1]][j];
buffer[i][j] = value;
}
}
return buffer[n][tires.length];
}
Това е бонус задачата от изпита по JavaScript в Телерик Академия, проведен на 19 май 2014 година.
Задачата се казва Cartesian Coordinate System и е решена с 51 символа при условие, изискващо решение до 54 символа на кода.
Задача от изпита по JavaScript основи, проведен на 19 май 2014 година.
Решението не дава точки в BGCoder!
function findCombinationsCount(tiresCount, vehicles, checkFromIndex) {
if (tiresCount === 0) {
return 1;
} else if (tiresCount < 0 || vehicles.length === checkFromIndex) { return 0; } else { var withFirstVehicle = findCombinationsCount(tiresCount - vehicles[checkFromIndex], vehicles, checkFromIndex); var withoutFirstVehicle = findCombinationsCount(tiresCount, vehicles, checkFromIndex + 1); return withFirstVehicle + withoutFirstVehicle; } } function solve(params) { var tiresCount = params; var vehicles = [3, 4, 10]; var answer = findCombinationsCount(tiresCount, vehicles, 0); return answer; } console.log(solve(20));
Изпитът по JavaScript приключи с почти задоволителен резултат – 225 от 300 точки.
Разпределението по задачи е следното: първа задача – 100 от 100; втора задача – 100 от 100; трета задача – 0 от 100; бонус задача – 25 от 25. Общ брой точки – 225.
Решение на задача: Labyrinth Escape
Изпит: JavaScript основи
Точки в BGCoder: 100 от 100
function Solve(params) {
var input = params[0].split(" ");
var rowsCount = parseInt(input[0]);
var columnsCount = parseInt(input[1]);
var labyrinthNumbers = new Array(rowsCount);
var visitedCells = new Array(rowsCount);
var number = 1;
for (var i = 0; i < rowsCount; i++) {
labyrinthNumbers[i] = new Array(columnsCount);
visitedCells[i] = new Array(columnsCount);
for (var j = 0; j < columnsCount; j++) {
labyrinthNumbers[i][j] = number;
visitedCells[i][j] = 0;
number++;
}
}
input = params[1].split(" ");
var rowPosition = parseInt(input[0]);
var columnPosition = parseInt(input[1]);
visitedCells[rowPosition][columnPosition] = 1;
var numbersSum = 0;
numbersSum += labyrinthNumbers[rowPosition][columnPosition];
var directions = new Array(rowsCount);
for (var i = 0; i < rowsCount; i++) {
directions[i] = new Array(columnsCount);
for (var j = 0; j < columnsCount; j++) {
directions[i][j] = params[i + 2][j];
}
}
var steps = 1;
while (true) {
switch (directions[rowPosition][columnPosition]) {
case "l":
columnPosition -= 1;
break;
case "r":
columnPosition += 1;
break;
case "u":
rowPosition -= 1;
break;
case "d":
rowPosition += 1;
break;
}
if (rowPosition < 0 || rowPosition >= rowsCount || columnPosition < 0 || columnPosition >= columnsCount) {
return 'out ' + numbersSum;
}
if (visitedCells[rowPosition][columnPosition] === 1) {
return 'lost ' + steps;
}
visitedCells[rowPosition][columnPosition] = 1;
numbersSum += labyrinthNumbers[rowPosition][columnPosition];
steps++;
}
}
Решение на задача: Max Sum
Изпит: JavaScript основи
Точки в BGCoder: 100 от 100
function Solve(arr) {
var maxSum = parseInt(arr[1]);
var maxLength = 1;
var maxIndex = 0;
for (var i = 2, currentSum = parseInt(arr[1]), currentIndex = 1; i < arr.length; i++) {
currentSum += parseInt(arr[i]);
if (arr[i] > currentSum) {
currentSum = parseInt(arr[i]);
currentIndex = i;
}
if (currentSum > maxSum) {
maxSum = currentSum;
maxIndex = currentIndex;
maxLength = i - currentIndex + 1;
}
}
return maxSum;
}
Списък на няколко задължителни добавки за Mozilla Firefox по категории
Добавки за сигурност в интернет и блокиране на реклами и скриптове
Добавки за сваляне на видео от сайтове
Добавки за уеб разработване
Решение на задача: Joro The Naughty
Изпит: JavaScript основи
Точки в BGCoder: 100 от 100
function Solve(params) {
var line = params[0].split(" ");
var N = parseInt(line[0]);
var M = parseInt(line[1]);
var numbers = new Array(N);
var visited = new Array(N);
var number = 1;
for (var i = 0; i < N; i++) {
numbers[i] = new Array(M);
visited[i] = new Array(M);
for (var j = 0; j < M; j++) {
numbers[i][j] = number;
visited[i][j] = 0;
number++;
}
}
var J = parseInt(line[2]);
line = params[1].split(" ");
var rowPosition = parseInt(line[0]);
var columnPosition = parseInt(line[1]);
visited[rowPosition][columnPosition] = 1;
var numbersSum = 0;
numbersSum += numbers[rowPosition][columnPosition];
for (var jump = 2; jump < J + 2; jump++) {
line = params[jump].split(" ");
var rowStep = parseInt(line[0]);
var columnStep = parseInt(line[1]);
rowPosition += rowStep;
columnPosition += columnStep;
if (rowPosition < 0 || rowPosition >= N || columnPosition < 0 || columnPosition >= M) {
return 'escaped ' + numbersSum;
}
if (visited[rowPosition][columnPosition] === 1) {
return 'caugth' + jump - 1;
}
visited[rowPosition][columnPosition] = 1;
numbersSum += numbers[rowPosition][columnPosition];
if (jump === J + 1) {
jump = 1;
}
}
}
Решение на задачата: Sequences
Курс: JavaScript основи
Точки в BGCoder: 100 от 100
function Solve(params) {
var N = parseInt(params[0]);
var answer = 0;
if (N === 0) {
return 0;
}
var sequencesCount = 1;
for (var i = 2; i <= N; i++) {
var currentElement = parseInt(params[i]);
var previousElement = parseInt(params[i - 1]);
if (currentElement < previousElement) {
sequencesCount++;
}
}
answer = sequencesCount;
return answer;
}