From a34ef141f958e25e7665379a3e62abede4f2365c Mon Sep 17 00:00:00 2001 From: ainurKasi Date: Mon, 18 Nov 2013 00:24:34 +0400 Subject: [PATCH 1/3] Homework 01 --- hw01/math-fn.js | 34 ++++++++++- hw01/str-util.js | 144 ++++++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 176 insertions(+), 2 deletions(-) diff --git a/hw01/math-fn.js b/hw01/math-fn.js index 1adffc2..20c8241 100644 --- a/hw01/math-fn.js +++ b/hw01/math-fn.js @@ -25,7 +25,7 @@ function isNumber(x){ return (typeof x === "number") && !isNaN(x) && isFinite(x); - } + } if(arguments.length < 2){ throw new Error("Invalid arguments"); @@ -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/Числа_Фибоначчи) @@ -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); + } + } + + } + + + + \ No newline at end of file diff --git a/hw01/str-util.js b/hw01/str-util.js index 9959226..53f0b03 100644 --- a/hw01/str-util.js +++ b/hw01/str-util.js @@ -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. * @@ -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-запроса. @@ -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-запроса. @@ -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, если строка, переданная * в качестве первого аргумента начинается со строки, переданной в качестве второго аргумента, @@ -91,6 +199,20 @@ * @return {Boolean} Результат проверки. */ + function startsWith(str, prefix) + { + if(str.indexOf(prefix) === 0) + { + return true; + } + else + { + return false; + } + } + + + /** * Задание 6. Создать функцию endsWith, возвращающая true, если строка, переданная * в качестве первого аргумента оканчивается на строку, переданную в качестве второго аргумента, @@ -107,4 +229,24 @@ * Строка - кандидат на роль суффикса. * * @return {Boolean} Результат проверки. - */ \ No newline at end of file + */ + + + + function(str, suffix) + { + + var index = suffix.length; + + if(substring(str.length - index) === suffix){ + return true; + } + else + { +return false; + } + + } + + + \ No newline at end of file From e469c6ec84f2ae2ed03ed2c2081bd70393d19533 Mon Sep 17 00:00:00 2001 From: ainurKasi Date: Fri, 22 Nov 2013 18:02:26 +0400 Subject: [PATCH 2/3] update hw2 --- hw02/hw02.js | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/hw02/hw02.js b/hw02/hw02.js index 8cb1143..3cc6e15 100644 --- a/hw02/hw02.js +++ b/hw02/hw02.js @@ -22,6 +22,9 @@ function Warrior(name, level){ this.level = level; } +function Warrior(){ +} + /** * Задание 2. Добавить метод attack нашему воину. * Метод возвращает уровень воина умноженный на коэффициент 0.1. @@ -36,7 +39,11 @@ function Warrior(name, level){ * @return {Number} Урон, наносимой атакой. */ Warrior.prototype.attack = function() { - // Ваш код здесь... + + var A = new Warrior(); + + A. + }; /** From 893adc7afe61b87a48b4bc74ce6eccc1ec68fcd9 Mon Sep 17 00:00:00 2001 From: ainurKasi Date: Sun, 24 Nov 2013 04:24:14 +0400 Subject: [PATCH 3/3] Homework2 --- hw02/hw02.js | 72 +++++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 60 insertions(+), 12 deletions(-) diff --git a/hw02/hw02.js b/hw02/hw02.js index 3cc6e15..928147f 100644 --- a/hw02/hw02.js +++ b/hw02/hw02.js @@ -1,4 +1,4 @@ -/** +/** * Задание 1. Реализовать конструктор класса Warrior, который в качестве параметров * принимает имя и уровень воина. У созданного при помощи этого конструктора объекта * должны имя и уровень должны быть доступны в качестве полей экземпляра. @@ -17,13 +17,13 @@ * @param {Number} level Уровень воина. */ function Warrior(name, level){ - // Ваш код здесь... this.name = name; this.level = level; + this.getCode = function(){ + return "Кодекс воина"; + } } -function Warrior(){ -} /** * Задание 2. Добавить метод attack нашему воину. @@ -39,11 +39,7 @@ function Warrior(){ * @return {Number} Урон, наносимой атакой. */ Warrior.prototype.attack = function() { - - var A = new Warrior(); - - A. - +return this.level * 0.1; }; /** @@ -60,8 +56,34 @@ 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"); + } + + } } /** @@ -69,8 +91,33 @@ function Jedi (name, level) { * @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"); + } + } + +} /** * Метод произнесения кодекса. @@ -103,7 +150,8 @@ function Jedi (name, level) { * @throws Error("Invalid argument") * Если призываемый объект не является ситхом, выкидывается исключение. */ -// Ваш код здесь... + + /**