Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
34 changes: 33 additions & 1 deletion hw01/math-fn.js
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@

function isNumber(x){
return (typeof x === "number") && !isNaN(x) && isFinite(x);
}
}

if(arguments.length < 2){
throw new Error("Invalid arguments");
Expand Down Expand Up @@ -53,6 +53,18 @@
* @return {Number} факториал числа.
*/

function factorial(a){


var fact = 1;

while(a > 0){
fact = fact * a;
a--;
}
return fact;
}

/**
* Задание 2. Создать функцию nfib для подсчета n-го числа Фибоначчи
* (http://ru.wikipedia.org/wiki/Числа_Фибоначчи)
Expand All @@ -67,3 +79,23 @@
*
* @return {Number} Число Фибоначчи.
*/

function nfib(a){
if(a == 1)
{
return 0;
}
else{
if(a == 2 || a == 3)
{
return 1;
}else{
return nfib(a-1) + nfib(a-2);
}
}

}




144 changes: 143 additions & 1 deletion hw01/str-util.js
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,44 @@
* @return {String} отформатированная строка.
*/

function format(token, values)
{

val1 = values.split(",");

val2 = token.split(",");

var index = 0;

var newtoken = null;

if(token.search("{0}")){
return "without wildcards";
}

val3 = val2[1].split(" ");


while(index < val3.length)
{
var re = "{" index + "}" + "/g";

if(newtoken === null)
{
newtoken = token.replace(re, val1[index]);
}
else
{
newtoken = newtoken.replace(re, val1[index]);
}
index++;
}
return newtoken;

}



/**
* Задание 2. Создать функцию repeat.
*
Expand All @@ -44,6 +82,35 @@
* @return {String} Строка с повотрениями.
*/

function repeat(a, b, c)
{
var str = "";

if(c != null)
{
var d = a + c;
}
else
{
d = a;
}

while(b > 0)
{
if(b == 1)
{
str = str + a;
}
else
{
str = str + d;
}
b--;
}
return str;
}


/**
* Задание 3. Создать функцию toGetParams, формирующую из
* объекта строку параметров для GET-запроса.
Expand All @@ -57,6 +124,25 @@
* @return {String} строка параметров.
*/

function toGetParams(obj)
{

String getR = null;

for(key in obj)
{

if(getR == null){
getR = key + "=" + obj[key];
}
else{
getR = getR + "&" + key + "=" + obj[key];
}
}
return getR;

}

/**
* Задание 4. Создать функцию formatUrl, формирующую из базового url и объекта
* строку GET-запроса.
Expand All @@ -73,6 +159,28 @@
* @return {String} сформированный url.
*/


function formatUrl(url, obj)
{

var getR = null;

url = url + "?";

for(key in obj)
{
if(getR === null)
{
key + obj[key];
}else
{
getR = getR + "&" + key + "=" + obj[key];
}
}

return url + getR;
}

/**
* Задание 5. Создать функцию startsWith, возвращающая true, если строка, переданная
* в качестве первого аргумента начинается со строки, переданной в качестве второго аргумента,
Expand All @@ -91,6 +199,20 @@
* @return {Boolean} Результат проверки.
*/

function startsWith(str, prefix)
{
if(str.indexOf(prefix) === 0)
{
return true;
}
else
{
return false;
}
}



/**
* Задание 6. Создать функцию endsWith, возвращающая true, если строка, переданная
* в качестве первого аргумента оканчивается на строку, переданную в качестве второго аргумента,
Expand All @@ -107,4 +229,24 @@
* Строка - кандидат на роль суффикса.
*
* @return {Boolean} Результат проверки.
*/
*/



function(str, suffix)
{

var index = suffix.length;

if(substring(str.length - index) === suffix){
return true;
}
else
{
return false;
}

}



67 changes: 61 additions & 6 deletions hw02/hw02.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
/**
/**
* Задание 1. Реализовать конструктор класса Warrior, который в качестве параметров
* принимает имя и уровень воина. У созданного при помощи этого конструктора объекта
* должны имя и уровень должны быть доступны в качестве полей экземпляра.
Expand All @@ -17,11 +17,14 @@
* @param {Number} level Уровень воина.
*/
function Warrior(name, level){
// Ваш код здесь...
this.name = name;
this.level = level;
this.getCode = function(){
return "Кодекс воина";
}
}


/**
* Задание 2. Добавить метод attack нашему воину.
* Метод возвращает уровень воина умноженный на коэффициент 0.1.
Expand All @@ -36,7 +39,7 @@ function Warrior(name, level){
* @return {Number} Урон, наносимой атакой.
*/
Warrior.prototype.attack = function() {
// Ваш код здесь...
return this.level * 0.1;
};

/**
Expand All @@ -53,17 +56,68 @@ Warrior.prototype.attack = function() {
* @param {String} name Имя джедая.
* @param {Number} level Уровень джедая.
*/

Jedi.prototype = new Warrior();

function Jedi (name, level) {
// Ваш код здесь...
this.level = level;
this.name = name;
this.sideOfForce = "light";
this.getCode = function(){
return "Нет волнения — есть покой...";
}
this.toLightSide = function(sith){
if(sith instanceof Sith)
{
if(this.level > sith.level)
{
sith.sideOfForce = "light";
}
else
{
sith.toDarkSide(this);
}
}
else
{
throw Error("Invalid argument");
}

}
}

/**
* Создает экземпляр ситха
* @param {String} name Имя ситха.
* @param {Number} level Уровень ситха.
*/
// Ваш код здесь...
Sith.prototype = new Warrior();

function Sith(name, level){
this.level = level;
this.name = name;
this.sideOfForce = "dark";
this.getCode = function(){
return "Спокойствие — ложь, есть только страсть...";
}

this.toDarkSide = function(jedi)
{
if(jedi instanceof Jedi)
{
if(this.level > jedi.level){
jedi.sideOfForce = "dark";
}
else{
jedi.toLightSide(this);
}
}
else{
throw Error("Invalid argument");
}
}

}

/**
* Метод произнесения кодекса.
Expand Down Expand Up @@ -96,7 +150,8 @@ function Jedi (name, level) {
* @throws Error("Invalid argument")
* Если призываемый объект не является ситхом, выкидывается исключение.
*/
// Ваш код здесь...




/**
Expand Down