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

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

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

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

    Spritz Март 19, 2010, 5: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
    
    


  • Абырвалг

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

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

    ебааать!


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

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

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

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

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

    Spritz Март 19, 2010, 5: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, поэтому вот такое чудо получилось
    https://smappi.org/ - платформа по созданию API на все случаи жизни
  • ЗлобныйТролль

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

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

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

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

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

    Ну вообще спасибо за задачи, вечером еще посмотрю тему, а сейчас работать. До вечера
    https://smappi.org/ - платформа по созданию API на все случаи жизни
  • AlexB

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

    Spritz Март 19, 2010, 6 п.п., спустя 3 минуты 14 секунд

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

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

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

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

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

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

    y(add); // 120

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

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

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

    vasa_c, пардон, mul конечно)
    Спустя 89 сек.
    ну либо
    
    y(add); // 15
    

  • vasa_c

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

    Spritz Март 19, 2010, 8: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, 8:33 п.п., спустя 18 минут 47 секунд

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

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

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

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

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

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


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

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

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


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

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