Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Варианты решения (https://javascript.ru/forum/misc/59600-varianty-resheniya.html)

Mess4me 18.11.2015 13:53

Варианты решения
 
Коллеги , какие варианты решения можете предложить не задействовав toString в решении?:)
console.log(sum(2, 5, 10));//17
   console.log(sum(2, 5)(10));//17
   console.log(sum(2)(5)(10));//17
   console.log(sum(2)(5, 10));//17

ksa 18.11.2015 15:43

Mess4me, что есть sum?

Цитата:

Сообщение от Mess4me
не задействовав toString

var a=1;
consol.log(''+a);
consol.log(a+'');

Mess4me 18.11.2015 15:56

ksa,
sum это та функция что выдаст результат )
Вот её как раз я и хочу чтобы кто то написал )

Mess4me 18.11.2015 16:01

ksa,
function sum(a) {

  var currentSum = a;

  function f(b) {
    currentSum += b;
    return f;
  }

  f.toString = function() {
    return currentSum;
  };

  return f;
}

alert( sum(1)(2) ); // 3
alert( sum(5)(-1)(2) ); // 6
alert( sum(6)(-1)(-2)(-3) ); // 0
alert( sum(0)(1)(2)(3)(4)(5) ); // 15

Этот пример работает для вызовов (0)(1)(2)(3)(4)(5) и т п .
Как реализовать без toString и для
console.log(sum(2, 5, 10));//17
   console.log(sum(2, 5)(10));//17
   console.log(sum(2)(5)(10));//17
   console.log(sum(2)(5, 10));//17

Mess4me 18.11.2015 16:12

ksa,
исправил

ksa 18.11.2015 16:17

Цитата:

Сообщение от Mess4me
Как реализовать без toString

Как вариант...

function sum(a) {
  var currentSum = a;
  function f(b) {
    currentSum += b;
    return f;
  }
  f.get = function() {
    return currentSum;
  };
  return f;
}
alert( sum(1)(2).get() ); // 3
alert( sum(5)(-1)(2).get() ); // 6
alert( sum(6)(-1)(-2)(-3).get() ); // 0
alert( sum(0)(1)(2)(3)(4)(5).get() ); // 15

console.log(sum(2, 5, 10).get());//17
console.log(sum(2, 5)(10)).get();//17
console.log(sum(2)(5)(10)).get();//17
console.log(sum(2)(5, 10)).get();//17

ksa 18.11.2015 16:20

Или так...

function sum(a) {
  var currentSum = a;
  function f(b) {
	if (b) {
		currentSum += b;
		return f;
	} else {
		return currentSum;
	};
  };
  return f;
};
alert( sum(1)(2)() ); // 3
alert( sum(5)(-1)(2)() ); // 6
alert( sum(6)(-1)(-2)(-3)() ); // 0
alert( sum(0)(1)(2)(3)(4)(5)() ); // 15

Mess4me 18.11.2015 16:27

ksa,
хорошие решения )
как реализовать для

console.log(sum(2, 5, 10));//17
   console.log(sum(2, 5)(10));//17
   console.log(sum(2)(5)(10));//17
   console.log(sum(2)(5, 10));//17

Mess4me 18.11.2015 16:29

ksa,
прочитал в комментариях - дали кому то на собеседовании.

ksa 18.11.2015 16:50

Цитата:

Сообщение от Mess4me
дали кому то на собеседовании

Бедный соискатель... :D


Часовой пояс GMT +3, время: 04:17.