Програма на JavaScript с отворен код за генериране на геодезически измервания във формат DPI за Tplan.
GitHub: https://github.com/Nanich87/Survey-Observations-Generator
Програма на JavaScript с отворен код за генериране на геодезически измервания във формат DPI за Tplan.
GitHub: https://github.com/Nanich87/Survey-Observations-Generator
Решението на най-лесната задача от изпита по JavaScript UI и DOM.
Handlesbars.js
<script id="authors-template" type='text/x-handlebars-template'> {{#authors}} <div class="box {{#if right}}right{{/if}}"> <div class="inner"> <p><img alt="{{name}}" src="{{image}}" width="100" height="133"></p> <div> <h3>{{name}}</h3> {{#each titles}} <p>{{{this}}}</p> {{/each}} <ul> {{#each urls}} <li><a href="{{this}}" target="_blank">{{this}}</a></li> {{/each}} </ul> </div> </div> </div> {{/authors}} </script>
Решението на линейната засечка в геодезията може, най-просто, да се представи като пресичане на две окръжности с радиуси – измерените дължини от новата точка P към две дадени точки A и B, и начало – съответно в точки A и B.
Ако от точка P сме измерили посоки към дадените точки A и B, с помощта на тези посоки можем да определим конфигурацията на триъгълника ABP и съответно да приложим формулите за решаването на линейната засечка. Ако посоките са сортирани по възходящ ред, а разликата между по-голямата и по-малката посока е по малко от 200 гради, то конфигурацията на триъгълника е такава, че точките трябва да участват във формулите обърнато т. е. точка B трябва да участва във формулите като точка A и обратното – точка A трябва да участва като точка B. В противен случай точките не се обръщат. По този начин решението е еднозначно и не се налага търсене на трета дадена точка, към която да е измервана дължина.
Цел:
Оптимизиране на GPS мрежа, която да отговаря на определени критерии за точност, надеждност и стойност.
Резултат:
Определяне на оптимална конфигурация на мрежата и оптимален наблюдателен план, за да се избегнат ненужни измервания и губене на време.
Повече за програмата можете да намерите на Оптимизиране на GPS мрежи
Лошото класиране след изпита по 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++;
}
}