Сорс кодът на JavaScript CSV To GPX Converter може да бъде намерен на следния адрес: github.com/Nanich87/JavaScript-CSV-To-GPX-Converter
Етикет: javascript
Ето го и резултатът от изпита по End-to-end JavaScript Applications (Node.js):
Изпит: 76 от 100
Точки: 55.78
Място: 70
Това е игра тип „викторина/тест“, където информацията за филмите се взима от сайт (www.omdbapi.com), предоставящ API за достъп до филмова база данни. Играта предостовя два режима на игра: първияг е „Отговори на въпроса“, а вторият – „История“. Във втория режим играчът се стреми да подреди филмите по правилен хронологичен ред. Играта предоставя уеб система за регистрация и вход, както и статистика, като за целта използва Telerik Backend Services.
Използвани технологии:
- Telerik Backend Services
- Bootstrap
- JQuery, System.js
- HTML 5
Rams and Sheeps – JavaScript Game
JS OOP изпит – сутрешна група
Решение на задачата на сутрешната група на изпита по JavaScript OOP
// item.js
define(function() {
'use strict';
var Item;
Item = (function() {
var types = ['accessory', 'smart-phone', 'notebook', 'pc', 'tablet'];
function Item(type, name, price) {
if (types.indexOf(type) == -1) {
throw "invalid item type";
};
if (name.length < 6 || name.length > 40) {
throw "invalid item name";
};
if (price < 0.0) {
throw "invalid item price";
};
this.type = type;
this.name = name;
this.price = price;
}
return Item;
})();
return Item;
});
// store.js
define(function() {
'use strict';
var Store;
Store = (function() {
function Store(storeName) {
if (storeName.length < 6 || storeName.length > 40) {
throw "invalid store name";
}
this._name = storeName;
this._items = [];
};
Store.prototype.addItem = function(item) {
if (item.constructor.name !== "Item") {
throw "invalid item type";
}
this._items.push(item);
return this;
};
Store.prototype.getAll = function() {
var sortedItems = compareBy(this._items, "name");
return sortedItems;
};
Store.prototype.getSmartPhones = function() {
var items = [];
this._items.forEach(function(item) {
if (item.type === 'smart-phone') {
items.push(item);
}
});
var sortedItems = compareBy(items, "name");
return sortedItems;
};
Store.prototype.getMobiles = function() {
var items = [];
this._items.forEach(function(item) {
if (item.type === 'smart-phone' || item.type === 'tablet') {
items.push(item);
}
});
var sortedItems = compareBy(items, "name");
return sortedItems;
};
Store.prototype.getComputers = function() {
var items = [];
this._items.forEach(function(item) {
if (item.type === 'pc' || item.type === 'notebook') {
items.push(item);
}
});
var sortedItems = compareBy(items, "name");
return sortedItems;
};
Store.prototype.filterItemsByType = function(type) {
var items = [];
this._items.forEach(function(item) {
if (item.type === type) {
items.push(item);
}
});
var sortedItems = compareBy(items, "name");
return sortedItems;
};
Store.prototype.filterItemsByPrice = function(options) {
var minPrice = 0;
var maxPrice = 999999999.99;
var items = [];
if (options) {
minPrice = options.min || minPrice;
maxPrice = options.max || maxPrice;
}
this._items.forEach(function(item) {
if (item.price >= minPrice && item.price <= maxPrice) {
items.push(item);
}
});
var sortedItems = compareBy(items, "price");
return sortedItems;
};
Store.prototype.countItemsByType = function() {
var itemTypes = [];
for (var i = 0; i < this._items.length; i++) {
if (itemTypes[this._items[i].type]) {
itemTypes[this._items[i].type]++;
} else {
itemTypes[this._items[i].type] = 1;
}
}
return itemTypes;
};
Store.prototype.filterItemsByName = function(part) {
var items = [];
this._items.forEach(function(item) {
if (item.name.toLowerCase().indexOf(part.toLowerCase()) >= 0) {
items.push(item);
}
});
var sortedItems = compareBy(items, "name");
return sortedItems;
};
function compareBy(data, field) {
data.sort(function(a, b) {
if (a[field] < b[field]) return -1;
if (a[field] > b[field])
return 1;
return 0;
});
return data;
};
return Store;
})();
return Store;
});
JavaScript основи – класиране
Лошото класиране след изпита по JavaScript основи не се дължи само на липсата на проверени домашни работи, но а и на подготовката преди самия изпит! От решени 4 задачи предните два дни – толкова! 🙂
- Взет с отличие!
- Точки: 63.41
- Място: 190
Комбинации на числа по търсена сума
Това е решението на първата задача от изпита по 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
Изпитът по 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
Решение на задача: 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;
}