ФорумПрограммированиеПыхнуть хотите?Battles → только для мазохистов!

только для мазохистов!

  • ЗлобныйТролль

    Сообщения: 50 Репутация: N Группа: Кто попало

    Spritz 19 марта 2010 г. 10:15

    задачко: реализовать функцию make, которая позволяла делать так:


    var add = function (a, b) { return a+b; },
    mul = function (a, b) { return a*b; };

    make(1)(2)(3)(4)(5)(add); // 15
    make(1)(2)(3)(4)(5)(mul); // 120



    задачко со звездочкой:



    var x = make(1)(2)(3), y = make(4)(5)(6);

    x(add); // 6
    y(add); // 120



    И с двумя звездочками:


    var x = make(1)(2)(3), y = x(4)(5), z = x(1)(1);

    x(add); // 6
    y(add); // 15
    z(add); // 8



  • Абырвалг

    Сообщения: 6476 Репутация: N Группа: Джедаи

    Spritz 19 марта 2010 г. 10:31, спустя 16 минут 2 секунды

    ебааать!


    пойду водки нажрусь
  • rider-sx

    Сообщения: 2706 Репутация: N Группа: Адекваты

    Spritz 19 марта 2010 г. 10:48, спустя 16 минут 58 секунд

    нахуй надо… =)
  • adw0rd

    Сообщения: 22905 Репутация: N Группа: в ухо

    Spritz 19 марта 2010 г. 10:54, спустя 5 минут 28 секунд


    function make(p)
    {
    if(typeof p != 'function') {
    p = parseInt(p)
           if(!arguments.callee.l) {
               arguments.callee.l = []
           }
           arguments.callee.l.push(p)
           return make
    } else {
    var f = arguments.callee.l
    s = f[0]
    f = f.slice(1)
    for (i in f) {
    s = p(s, f)
    }
    arguments.callee.l = []
    return s
    }
    }

    var add = function (a, b) { return a+b; },
       mul = function (a, b) { return a*b; };

    x = make(1)(2)(3)(4)(5)(add); // 15
    y = make(1)(2)(3)(4)(5)(mul); // 120

    console.log('>>> ' + x)
    console.log('>>> ' + y)


    я лузер в js, поэтому вот такое чудо получилось
    adw/0
  • ЗлобныйТролль

    Сообщения: 50 Репутация: N Группа: Кто попало

    Spritz 19 марта 2010 г. 10:55, спустя 1 минуту 42 секунды

    adw0rd, ну это первое решение, к которому обычно приходят. В таких случая я обычно говорю: "усложняем: избавьтесь от массива" ;-)
  • adw0rd

    Сообщения: 22905 Репутация: N Группа: в ухо

    Spritz 19 марта 2010 г. 10:57, спустя 1 минуту 31 секунду

    Ну вообще спасибо за задачи, вечером еще посмотрю тему, а сейчас работать. До вечера
    adw/0
  • AlexB

    Сообщения: 4290 Репутация: N Группа: в ухо

    Spritz 19 марта 2010 г. 11:00, спустя 3 минуты 14 секунд

    Ебал я программировать за интерес. Мне за деньги-то в лом …
  • ЗлобныйТролль

    Сообщения: 50 Репутация: N Группа: Кто попало

    Spritz 19 марта 2010 г. 11:05, спустя 5 минут 2 секунды

    AlexB, эта задачка на принципиально понимание пока-не-скажу-чего. Это как в Си с указателями - есть группа людей, которая неспособна их осилить.
    Спустя 101 сек.
    и если влом программировать - значит это не твое.
  • vasa_c

    Сообщения: 3127 Репутация: N Группа: в ухо

    Spritz 19 марта 2010 г. 12:25, спустя 1 час 20 минут 11 секунд

    y(add); // 120

    mul?
  • ЗлобныйТролль

    Сообщения: 50 Репутация: N Группа: Кто попало

    Spritz 19 марта 2010 г. 12:28, спустя 2 минуты 31 секунду

    vasa_c, пардон, mul конечно)
    Спустя 89 сек.
    ну либо

    y(add); // 15

  • vasa_c

    Сообщения: 3127 Репутация: N Группа: в ухо

    Spritz 19 марта 2010 г. 13:14, спустя 46 минут 20 секунд

    function make(arg) {

    if (typeof(arg) == "function") {
    throw "fuck";
    }

    function herake(f, current) {
    return (function(next) {
    function huyake(func) {
    return func(f ? f(func) : current, next);
    }
    if (typeof(next) == "function") {
    if (!f) {
    throw "fuck";
    }
    return f(next);
    } else {
    return herake(huyake, next);
    }
    });
    };
    return herake(null, arg);
    }
  • ЗлобныйТролль

    Сообщения: 50 Репутация: N Группа: Кто попало

    Spritz 19 марта 2010 г. 13:33, спустя 18 минут 47 секунд

    vasa_c, корявенько, но основной принцип реализован верно.
  • vasa_c

    Сообщения: 3127 Репутация: N Группа: в ухо

    Spritz 19 марта 2010 г. 13:36, спустя 3 минуты 22 секунды

    Это пыха, здесь всё сурово и коряво, никакого гламура.
  • Trej Gun

    Сообщения: 5299 Репутация: N Группа: в ухо

    Spritz 19 марта 2010 г. 13:41, спустя 4 минуты 36 секунд


    Ебал я программировать за интерес. Мне за деньги-то в лом …
    солидарен
  • AlexB

    Сообщения: 4290 Репутация: N Группа: в ухо

    Spritz 20 марта 2010 г. 6:34, спустя 16 часов 53 минуты 10 секунд


    AlexB, эта задачка на принципиально понимание пока-не-скажу-чего. Это как в Си с указателями - есть группа людей, которая неспособна их осилить.
    Спустя 101 сек.
    и если влом программировать - значит это не твое.
    Да я ж разве спорю? Ясен пень не мое! Уже давно подозреваю, что мое призвание - снимать жесткое порно. Только вот, не зовут на собеседования …

Пожалуйста, авторизуйтесь, чтобы написать комментарий!