Categories
JavaScript Геодезия

Генериране на геодезически измервания

Програма на JavaScript с отворен код за генериране на геодезически измервания във формат DPI за Tplan.

GitHub: https://github.com/Nanich87/Survey-Observations-Generator

Demo: http://htmlpreview.github.io/?https://github.com/Nanich87/Survey-Observations-Generator/blob/master/generator.html

Categories
JavaScript Телерик

Изпит – JavaScript UI и DOM – Handlebars.js

Решението на най-лесната задача от изпита по 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>
Categories
Геодезия

Еднозначно решение на линейна засечка

Решението на линейната засечка в геодезията може, най-просто, да се представи като пресичане на две окръжности с радиуси – измерените дължини от новата точка P към две дадени точки A и B, и начало – съответно в точки A и B.

Ако от точка P сме измерили посоки към дадените точки A и B, с помощта на тези посоки можем да определим конфигурацията на триъгълника ABP и съответно да приложим формулите за решаването на линейната засечка. Ако посоките са сортирани по възходящ ред, а разликата между по-голямата и по-малката посока е по малко от 200 гради, то конфигурацията на триъгълника е такава, че точките трябва да участват във формулите обърнато т. е. точка B трябва да участва във формулите като точка A и обратното – точка A трябва да участва като точка B. В противен случай точките не се обръщат. По този начин решението е еднозначно и не се налага търсене на трета дадена точка, към която да е измервана дължина.

Categories
Visual C# ГНСС

Софтуер за оптимизация на GPS мрежи

Цел:

Оптимизиране на GPS мрежа, която да отговаря на определени критерии за точност, надеждност и стойност.

Резултат:

Определяне на оптимална конфигурация на мрежата и оптимален наблюдателен план, за да се избегнат ненужни измервания и губене на време.

Повече за програмата можете да намерите на Оптимизиране на GPS мрежи

Categories
JavaScript Телерик

JavaScript основи – класиране

Лошото класиране след изпита по JavaScript основи не се дължи само на липсата на проверени домашни работи, но а и на подготовката преди самия изпит! От решени 4 задачи предните два дни – толкова! 🙂

  • Взет с отличие!
  • Точки: 63.41
  • Място: 190
Categories
JavaScript Телерик

Комбинации на числа по търсена сума

Това е решението на първата задача от изпита по 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];
}
Categories
JavaScript Телерик

Cartesian Coordinate System

Това е бонус задачата от изпита по JavaScript в Телерик Академия, проведен на 19 май 2014 година.

Задачата се казва Cartesian Coordinate System и е решена с 51 символа при условие, изискващо решение до 54 символа на кода.

Categories
Без категория

Решение на задача – Vehicles

Задача от изпита по 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));
Categories
JavaScript Телерик

Резултат от изпита по JavaScript

Изпитът по JavaScript приключи с почти задоволителен резултат – 225 от 300 точки.
Разпределението по задачи е следното: първа задача – 100 от 100; втора задача – 100 от 100; трета задача – 0 от 100; бонус задача – 25 от 25. Общ брой точки – 225.

Categories
JavaScript Телерик

Решение на задача – Labyrinth Escape

Решение на задача: 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++;
    }
}