// a

// Напишите функцию a, которая просто является коротким именем для alert. 
// Смотрите пример с d(), которая является коротким именем для debugger из материала лекции

function a(text) {
  return alert(text);
};

// cube

// Напишите функцию cube, которая возвращает число в третьей степени:

function cube(num) {
  return num * num * num;
}

// avg2

// Напишите функцию avg2, которая рассчитывает среднюю для двух чисел:

// формула для подсчета среднего: (a + b) / 2

function avg2(a, b) {
  return ((a + b) / 2);
};

// sum3

// Напишите функцию sum3 для суммирования 3 чисел:

// Обратите внимание, что sum3 от двух параметров тоже работает корректно.

function sum3(a = 0, b = 0, c = 0) {
  return (a + b + c);
};

// intRandom

// Напишите функцию intRandom, которая принимает два параметра: 
// нижнюю и верхнюю границу, и возвращает целое случайное число из этого диапазона включительно:
// Обратите внимание, что если передан один параметр (intRandom(10) в примере выше), 
// то функция работает как будто первый параметр равен 0, 
// а переданный параметр становится вторым параметром (intRandom(0,10))
// Используйте умножение для расширения значения встроенной функции Math.random c диапозона 1, 
// сложениe для смещения результата на первый параметр, и Math.round для округления результата

function intRandom(n, m = 0) {
  return (Math.round(Math.random() * (m - n) + n));
};

// greetAll

// Сделайтей функцию, которая приветствует всех, кто передан в качестве параметров.
// Вам поможет arguments и for

function greetAll(a) {
  for (i = 1; i < arguments.length; i++) {
    a += ', ' + arguments[i];
  }
  return 'Hello, ' + a;
};

// sum

// Напишите функцию sum, которая сумирует любое количество параметров: 
// Используйте псевдомассив arguments для получения всех параметров, и for для итерирования по нему

function sum(a = 0) {
  for (i = 1; i < arguments.length; i++) {
    a += arguments[i];
  }
  return a;
};

// Union

// Всё предыдущие функции и примеры с ними объедините в функции, которые вызывайте в switch по имени задания:

// function aSample() {
//   a("Привет!") // вызывает alert("Привет!")
// }

// function cubeSample() {
//   cube(5) // => 125
// }

// var sample = prompt("Введите название задания")
// switch (sample.toLowerCase()) {
//   case "a": aSample()
//     break
//   case "cube": cubeSample()
//     break
// }

var sample = prompt("Введите название задания");
switch (sample.toLowerCase()) {
  case "a": a('hi!');
    break;
  case "cube": cube(5);
    break;
  case 'avg2': avg2(3, 14);
    break;
  case 'sum3': sum3(1, 2, 3);
    break;
  case 'intrandom': intRandom(1, 10);
    break;
  case 'greetall': greetAll('Billy', 'Willy', 'Dilly');
    break;
  case 'sum': sum(3, 14, 15, 92);
    break;
  default: alert('Something bad has happened, please try again :(');
    break;
};

// Union declarative

// Используйте ассоциативный массив вместо switch

var list = {
  'lista': function listA(text) {
    return text;
  },
  'listcube': function listCube(num) {
    return num * num * num;
  },
  'listavg2': function listAvg2(a, b) {
    return ((a + b) / 2);
  },
  'listsum3': function listSum3(a = 0, b = 0, c = 0) {
    return (a + b + c);
  },
  'listintrandom': function listIntRandom(n, m = 0) {
    return Math.round(Math.random() * (m - n) + n);
  },
  'listgreetall': function listGreetAll(a) {
    for (var i = 1; i < arguments.length; i++) {
      a += ', ' + arguments[i];
    }
    return ('Hello, ' + a);
  },
  'listsum': function sum(a = 0) {
    for (var i = 1; i < arguments.length; i++) {
      a += arguments[i];
    }
    return a;
  }
};

list.lista('hi');
list.listcube(4);
list.listavg2(3, 14);
list.listsum3(1, 2, 3);
list.listintrandom(1, 10);
list.listgreetall('Billy', 'Willy', 'Dilly');
list.listsum(3, 14, 15, 92);