Advertisement
Guest User

AHL: Five programming problems every Software Engineer shoul

a guest
May 8th, 2015
261
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. (function (){    
  2.     function sum_for(numbers){
  3.         var sum = 0;
  4.         for (var i = 0; i < numbers.length; i++){
  5.             sum += numbers[i];
  6.         }
  7.         return sum;
  8.     }
  9.    
  10.     function sum_while(numbers){
  11.         var sum = 0;
  12.         var number;
  13.         while (number = numbers.pop()){
  14.             sum += number;
  15.         }
  16.         return sum;
  17.     }
  18.    
  19.     function sum_recurse(total_sum, numbers){
  20.         if (numbers.length == 0)
  21.             return total_sum
  22.         total_sum += numbers.pop();
  23.         return sum_recurse(total_sum, numbers);
  24.     }
  25.        
  26.     console.log(sum_for([1, 2, 4, 8, 16]));
  27.     console.log(sum_while([1, 2, 4, 8, 16]));
  28.     console.log(sum_recurse(0, [1, 2, 4, 8, 16]));
  29.    
  30.     function combine_lists(list_a, list_b){
  31.         var combined_array = [];
  32.         for (var i = 0; i < (list_a.length + list_b.length) / 2; i++)
  33.         {
  34.             var a = list_a[i];
  35.             var b = list_b[i];
  36.            
  37.             if (a)
  38.                combined_array.push(list_a[i]);
  39.            
  40.             if (b)
  41.                combined_array.push(list_b[i]);
  42.         }
  43.         return combined_array;
  44.     }
  45.    
  46.     console.log(combine_lists(["a", "b", "c"], [1, 2, 3]));
  47.    
  48.     function generate_fibonacci(fib_nums){
  49.         var num_c = fib_nums[fib_nums.length - 2] + fib_nums[fib_nums.length - 1];
  50.         fib_nums.push(num_c);
  51.         if (fib_nums.length === 100)
  52.             return fib_nums
  53.         else
  54.             return generate_fibonacci(fib_nums)
  55.     }
  56.    
  57.     console.log(generate_fibonacci([0, 1]));
  58.    
  59.     function make_big_number(set){
  60.         var max_length = 0;
  61.        
  62.         for (var i = 0; i < set.length; i++){
  63.             var set_s = (set[i] + "");
  64.             if (set_s.length > max_length)
  65.                 max_length = set_s.length;
  66.         }
  67.        
  68.         var padded_set = [];
  69.        
  70.         for (var i = 0; i < set.length; i++){
  71.             var working_num = set[i] + "";
  72.             if (working_num.length < max_length){
  73.                 for (var j = 0; j < max_length - working_num.length; j++){
  74.                     working_num = working_num + 0;
  75.                 }
  76.             }
  77.             padded_set.push(working_num );
  78.         }
  79.        
  80.         var sort_padded = padded_set.slice(0).sort().reverse();
  81.         var return_arr = [];
  82.         for (var i = 0; i < sort_padded.length; i++){
  83.             return_arr[i] = set[padded_set.indexOf(sort_padded[i])];
  84.         }
  85.        
  86.         return return_arr.join("");
  87.        
  88.     }
  89.    
  90.     console.log(make_big_number([50, 2, 1, 9]));
  91.    
  92.    
  93.    
  94.     function find_all_combinations(number_string, valid_characters){
  95.         var recurse = function(){
  96.             return function(working_string, level, set){
  97.                 level += 1;
  98.                 for (var i = 0; i < valid_characters.length; i++)
  99.                 {
  100.                     var op_string = working_string + valid_characters[i];
  101.  
  102.                     if (op_string.length === number_string.length - 1){
  103.                         var merged_string = "";
  104.                         for (var j = 0; j < number_string.length; j++){
  105.                             merged_string += number_string[j];
  106.                             if (typeof op_string[j] !== 'undefined')
  107.                                merged_string += op_string[j];
  108.                         }
  109.                         var math_string = merged_string.replace(/\s+/g, '');
  110.                         if (+eval(math_string) === 100)
  111.                            set.push(math_string);
  112.                     }
  113.  
  114.                     if (level < number_string.length - 1)
  115.                     {
  116.                         recurse(op_string, level, set);
  117.                     }
  118.                 }
  119.                 return set;
  120.             }
  121.         }();
  122.        
  123.         return recurse("", 0, []);
  124.     }
  125.    
  126.     console.log(find_all_combinations("123456789", " -+"));
  127.    
  128. })();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement