Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 18.11.2015, 16:53
Профессор
Отправить личное сообщение для Mess4me Посмотреть профиль Найти все сообщения от Mess4me
 
Регистрация: 03.11.2014
Сообщений: 263

ksa,
да та)
Ответить с цитированием
  #12 (permalink)  
Старый 18.11.2015, 21:28
Профессор
Отправить личное сообщение для tsigel Посмотреть профиль Найти все сообщения от tsigel
 
Регистрация: 12.12.2012
Сообщений: 1,398

Mess4me,
valueOf
Ответить с цитированием
  #13 (permalink)  
Старый 18.11.2015, 21:51
Профессор
Отправить личное сообщение для Mess4me Посмотреть профиль Найти все сообщения от Mess4me
 
Регистрация: 03.11.2014
Сообщений: 263

tsigel,
а без valueOf?
Ответить с цитированием
  #14 (permalink)  
Старый 19.11.2015, 00:02
Аватар для Vlasenko Fedor
Профессор
Отправить личное сообщение для Vlasenko Fedor Посмотреть профиль Найти все сообщения от Vlasenko Fedor
 
Регистрация: 13.03.2013
Сообщений: 1,572

Сообщение от Mess4me Посмотреть сообщение
tsigel,
а без valueOf?
а разве это было в задании ?

function sum() {

  var currentSum = getSum(arguments);

  function fn() {
    currentSum += getSum(arguments);
    return fn;
  }
  function getSum(args) {
 		var argSum = 0;
	    for (var i = 0; i <args.length; i++) {
	  		argSum += args[i]
	  	};
    return argSum;
  }
  fn.toString = fn.valueOf = function() {
    return currentSum;
  };
  return fn;
}

alert( 'sum(2, 5, 10) =  ' + sum(2, 5, 10) + "\n" 
+ 'sum(2, 5)(10) =  ' + sum(2, 5)(10) + "\n" 
+ 'sum(2)(5)(10) = ' + sum(2)(5)(10) + "\n" 
+ 'sum(2)(5, 10) = ' + sum(2)(5, 10));

Если количество вызываемых аргументов равно 3
function sum() {

    var currentSum = getSum(arguments);

    function fn() {
        currentSum += getSum(arguments);
        return checked(arguments.length);
    }

    function getSum(args) {
        var argSum = 0;
        for (var i = 0; i < args.length; i++) {
            argSum += args[i]
        }

        return argSum;
    }

    function checked(col) {
        fn.arg = fn.arg || 0;
        fn.arg += col;
        return fn.arg == 3 ? currentSum : fn;
    }

    return checked(arguments.length);

}

alert( 'sum(2, 5, 10) =  ' + sum(2, 5, 10) + "\n" 
+ 'sum(2, 5)(10) =  ' + sum(2, 5)(10) + "\n" 
+ 'sum(2)(5)(10) = ' + sum(2)(5)(10) + "\n" 
+ 'sum(2)(5, 10) = ' + sum(2)(5, 10));

Последний раз редактировалось Vlasenko Fedor, 19.11.2015 в 04:03.
Ответить с цитированием
  #15 (permalink)  
Старый 19.11.2015, 04:27
Аватар для Vlasenko Fedor
Профессор
Отправить личное сообщение для Vlasenko Fedor Посмотреть профиль Найти все сообщения от Vlasenko Fedor
 
Регистрация: 13.03.2013
Сообщений: 1,572

Еще вариант
function sum() {
	var res;
    sum.res = sum.res || 0;
    sum.arg = sum.arg || 0;
    sum.arg += arguments.length;
    for (var i = 0; i < arguments.length; i++) sum.res += arguments[i];
    if(sum.arg == 3){
    	res = sum.res;
    	sum.arg = sum.res = 0;
    }else{
		res = sum;
    }
   
    return res;

}

alert( 'sum(2, 5, 10) =  ' + sum(2, 5, 10) + "\n" 
+ 'sum(2, 5)(10) =  ' + sum(2, 5)(10) + "\n" 
+ 'sum(2)(5)(10) = ' + sum(2)(5)(10) + "\n" 
+ 'sum(2)(5, 10) = ' + sum(2)(5, 10));
Ответить с цитированием
  #16 (permalink)  
Старый 19.11.2015, 12:47
Профессор
Отправить личное сообщение для Mess4me Посмотреть профиль Найти все сообщения от Mess4me
 
Регистрация: 03.11.2014
Сообщений: 263

Poznakomlus,
шикарные решения , особенно последнее Молодец
Интересная задачка на собеседовании, неправда ли?
Предпоследнее тоже понравилось , хотя чуть чуть запутанное для меня )
Ответить с цитированием
  #17 (permalink)  
Старый 20.11.2015, 10:07
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,124

Сообщение от Mess4me
Интересная задачка на собеседовании, неправда ли?
По-мне так фигня полная...
Ответить с цитированием
  #18 (permalink)  
Старый 13.01.2016, 23:40
Профессор
Отправить личное сообщение для Keramet Посмотреть профиль Найти все сообщения от Keramet
 
Регистрация: 30.12.2015
Сообщений: 194

А рабоче-крестьянский вариант засчитывается?
var sum = function() {
				var args = arguments,
					lenArgs = args.length;
				
				if 	(lenArgs == 3) return args[0] + args[1] + args[2];
				
				if 	(lenArgs == 2) {
					return function(c) { return args[0] + args[1] + c; }
				}	
				if 	(lenArgs == 1) {
					return function() {
						if (arguments.length == 1){
							var b = arguments[0];
							return function(c) { return args[0] + b + c;	}
						} else {
							return args[0] + arguments[0] + arguments[1];
						}
					}
				}	
			}

alert( 'sum(2, 5, 10) =  ' + sum(2, 5, 10) + "\n"
+ 'sum(2, 5)(10) =  ' + sum(2, 5)(10) + "\n"
+ 'sum(2)(5)(10) =  ' + sum(2)(5)(10) + "\n"
+ 'sum(2)(5, 10) =  ' + sum(2)(5, 10));

Последний раз редактировалось Keramet, 13.01.2016 в 23:44.
Ответить с цитированием
  #19 (permalink)  
Старый 14.01.2016, 14:23
Профессор
Отправить личное сообщение для caetus Посмотреть профиль Найти все сообщения от caetus
 
Регистрация: 23.09.2014
Сообщений: 197

ребята у вас в решениях проблема , если передать 0 он все ломает
function sum () {
    var len = 0, sum = 0;
    return function fn () {
        for(var i = 0, a = arguments; i < a.length && len < 3; i++) (sum+= a[i]*1, a[i] !== '') && (len+=1);
        return (len == 3) ? sum : fn; 
    }.apply(this, [].join.call(arguments, ',').split(','));
}

alert(sum(2, 5, 10)+ "\n"+
sum(2, 5)(10)+ "\n"+
sum(2)(5)(10)+ "\n"+
sum(2)(5, 10)+ "\n"+
sum()(2)(5)(10)+ "\n"+
sum(0)(10)(7));//17

Последний раз редактировалось caetus, 14.01.2016 в 15:03.
Ответить с цитированием
  #20 (permalink)  
Старый 14.01.2016, 15:57
Профессор
Отправить личное сообщение для Siend Посмотреть профиль Найти все сообщения от Siend
 
Регистрация: 04.02.2012
Сообщений: 196

У вас у всех сломается на не озвученном тут примере:
console.log(sum(2, 5));

во всяком случае решения caetus и Poznakomlus выводят в консоль объект функции) я понимаю - в задаче этого не было озвучено, но мы же понимаем что логика универсальной функции сложения тут ломается)
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Варианты сохранения массивов (из js) на сервере? romm Общие вопросы Javascript 8 17.01.2015 14:08
Прошу оценить варианты цветовой гаммы, жду ваших советов Adriano Ваши сайты и скрипты 2 05.01.2014 17:35
Составить алгоритм и программу для решения следующей задачи. Даны два массива X (5), rjabijj Общие вопросы Javascript 2 05.07.2012 22:02
Добавить варианты в поле <inpute type=text> softrix AJAX и COMET 2 06.07.2010 12:07
Варианты решения задачи bobri4 Элементы интерфейса 1 07.10.2009 01:41