SHARE
TWEET

Билетик v.1

icw82 Oct 1st, 2013 57 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function calc(x, y, p){
  2.     p || (p = 6);
  3.     var a = Array(p),
  4.         e, pos, toeval,
  5.         result = [];
  6.  
  7.     // Если в числе разрядов больше чем указано — обрезаем его
  8.     x = x % Math.pow(10, p);
  9.    
  10.     // Разбиваем на компоненты
  11.     for (var i = 0; i < p; i++){
  12.         e = Math.pow(10, i);
  13.         a[i] = x > i * Math.pow(10, i) ?
  14.             (x % (e*10) - x % e) / e : 0;
  15.     }
  16.    
  17.     // Славарь операторов
  18.     o = ['+','*'];
  19.    
  20.     // Максимальное количество возможных вариантов
  21.     e = Math.pow(o.length, p);
  22.    
  23.     // Перебор и сравнение
  24.     for (var i = 0; i < e; i++){
  25.        pos = i.toString(o.length)
  26.        toeval = '';
  27.        for (var j = 0; j < p; j++)
  28.            toeval = toeval + o[(pos[j]||0)] + a[j];
  29.        toeval = toeval.replace(/^\*/,'');
  30.        
  31.        if (eval(toeval) == y)
  32.            result.push(toeval);
  33.     }
  34.  
  35.     return result.length > 0 ? result : false;
  36. }
  37.  
  38. console.log( calc(551, 100) );
  39. console.log( calc(554000, 100) );
RAW Paste Data
Top