Advertisement
Guest User

autocontract.ns for Bitburner by /u/hyperpandiculation

a guest
May 15th, 2019
5,594
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // autocontract.ns v20190515 by /u/hyperpandiculation
  2.  
  3. async function solverArrayJumpingGame(ns, arrayData) {
  4.     await ns.sleep(1000);
  5.     ns.tprint("solverArrayJumpingGame()");
  6.     let arrayJump = [1];
  7.  
  8.     for (let n = 0; n < arrayData.length; n++) {
  9.         if (arrayJump[n]) {
  10.             for (let p = n; p <= Math.min(n + arrayData[n], arrayData.length-1); p++) { // fixed off-by-one error
  11.                 arrayJump[p] = 1;
  12.             }
  13.         }
  14.     }
  15.  
  16.     return 0 + Boolean(arrayJump[arrayData.length - 1]); // thanks /u/Kalumniatoris
  17. }
  18.  
  19. async function solverGenerateIPs(ns, arrayData) {
  20.     ns.tprint("solverGenerateIPs()");
  21.     await ns.sleep(1000);
  22.     let i, j, k, l;
  23.  
  24.     let arrayDigits = [];
  25.     let arrayDelim = [];
  26.     for (i = 0; i < arrayData.length; i++) {
  27.         arrayDigits[i] = arrayData.substring(i, i + 1);
  28.         arrayDelim[i] = "";
  29.     }
  30.  
  31.     let validCandidates = [];
  32.  
  33.     for (i = 0; i < arrayData.length - 3; i++) {
  34.         for (j = i + 1; j < arrayData.length - 2; j++) {
  35.             for (k = j + 1; k < arrayData.length - 1; k++) {
  36.                 let arrayDelimScratch = JSON.parse(JSON.stringify(arrayDelim));
  37.                 arrayDelimScratch[i] = ".";
  38.                 arrayDelimScratch[j] = ".";
  39.                 arrayDelimScratch[k] = ".";
  40.  
  41.                 let candidateAddress = "";
  42.                 for (l = 0; l < arrayData.length; l++) {
  43.                     candidateAddress = candidateAddress + arrayDigits[l] + arrayDelimScratch[l];
  44.                 }
  45.  
  46.                 let isValid = 1;
  47.                 for (l = 0; l < 4; l++) {
  48.                     let tempOctet = candidateAddress.split(".")[l];
  49.                     if (tempOctet.slice(0, 1) === "0") { isValid = 0; }
  50.                     if (parseInt(tempOctet) > 255) { isValid = 0; }
  51.                 }
  52.                 if (isValid) {
  53.                     validCandidates[validCandidates.length] = candidateAddress;
  54.                 }
  55.             }
  56.         }
  57.     }
  58.  
  59.     let tempStr = JSON.stringify(validCandidates);
  60.     return tempStr.replace(/\"/g, '');
  61. }
  62.  
  63. async function solverLargestPrime(ns, arrayData) {
  64.     ns.tprint("solverLargestPrime()");
  65.     await ns.sleep(1000);
  66.     let primeFound = 0;
  67.  
  68.     while (!primeFound) {
  69.         primeFound = 1;
  70.         for (let i = 2; i < Math.sqrt(arrayData); i++) {
  71.             if (!Boolean((arrayData / i) - Math.floor(arrayData / i))) {
  72.                 arrayData = arrayData / i;
  73.                 primeFound = 0;
  74.             }
  75.         }
  76.     }
  77.  
  78.     return arrayData;
  79. }
  80.  
  81. async function solverLargestSubset(ns, arrayData) {
  82.     ns.tprint("solverLargestSubset()");
  83.     await ns.sleep(1000);
  84.     let highestSubset = arrayData[0];
  85.  
  86.     for (let i = 0; i < arrayData.length; i++) {
  87.  
  88.         for (let j = i; j < arrayData.length; j++) {
  89.             let tempSubset = 0;
  90.             for (let k = i; k <= j; k++) {
  91.                 tempSubset += arrayData[k];
  92.             }
  93.  
  94.             if (highestSubset < tempSubset) {
  95.                 highestSubset = tempSubset;
  96.             }
  97.         }
  98.     }
  99.  
  100.     return highestSubset;
  101. }
  102.  
  103. async function solverMergeRanges(ns, arrayData) {
  104.     ns.tprint("solverMergeRanges()");
  105.     await ns.sleep(1000);
  106.  
  107.     let i, j, k;
  108.     let rangeMax = 0;
  109.     let rangeMin = 999;
  110.     let outputRanges = [];
  111.  
  112.     for (i = 0; i < arrayData.length; i++) {
  113.         rangeMin = Math.min(rangeMin, arrayData[i][0]);
  114.         rangeMax = Math.max(rangeMax, arrayData[i][1]);
  115.     }
  116.  
  117.     let activeRange = 0;
  118.     let startRange, inRange;
  119.  
  120.     for (i = rangeMin; i <= rangeMax + 1; i++) {
  121.         inRange = 0;
  122.  
  123.         for (j = 0; j < arrayData.length; j++) {
  124.             if (i >= arrayData[j][0] && i < arrayData[j][1]) {
  125.                 inRange = 1;
  126.  
  127.                 if (activeRange === 0) {
  128.                     activeRange = 1;
  129.                     startRange = i;
  130.                 }
  131.             }
  132.         }
  133.  
  134.         if (activeRange === 1 && inRange === 0) {
  135.             activeRange = 0;
  136.             outputRanges[outputRanges.length] = [startRange, i];
  137.         }
  138.     }
  139.  
  140.     return JSON.stringify(outputRanges);
  141. }
  142.  
  143. async function solverSpiralizeMatrix(ns, arrayData) {
  144.     ns.tprint("solverSpiralizeMatrix()");
  145.     await ns.sleep(1000);
  146.     let i, j;
  147.  
  148.     let arrayY = arrayData.length;
  149.     let arrayX = arrayData[0].length;
  150.  
  151.     let loopCount = Math.ceil(arrayX / 2) + 1;
  152.     let marginData = [0, 1, 1, 0];
  153.  
  154.     let resultData = [];
  155.  
  156.     let lastWaypoint = [0, 0];
  157.  
  158.     resultData[0] = arrayData[0][0];
  159.  
  160.     for (i = 0; i < loopCount; i++) {
  161.         if (marginData[0] + marginData[2] <= arrayY && marginData[1] + marginData[3] <= arrayX) {
  162.             for (j = lastWaypoint[1] + 1; j <= arrayX - marginData[1]; j++) {
  163.                 resultData[resultData.length] = arrayData[lastWaypoint[0]][j];
  164.             }
  165.  
  166.             lastWaypoint = [0 + marginData[0], arrayX - marginData[1]];
  167.             marginData[0] += 1;
  168.         }
  169.         if (marginData[0] + marginData[2] <= arrayY && marginData[1] + marginData[3] <= arrayX) {
  170.             for (j = lastWaypoint[0] + 1; j <= arrayY - marginData[2]; j++) {
  171.                 resultData[resultData.length] = arrayData[j][lastWaypoint[1]];
  172.             }
  173.  
  174.             lastWaypoint = [arrayY - marginData[2], arrayX - marginData[1]];
  175.             marginData[1] += 1;
  176.         }
  177.         if (marginData[0] + marginData[2] <= arrayY && marginData[1] + marginData[3] <= arrayX) {
  178.             for (j = lastWaypoint[1] - 1; j >= 0 + marginData[3]; j--) {
  179.                 resultData[resultData.length] = arrayData[lastWaypoint[0]][j];
  180.             }
  181.  
  182.             lastWaypoint = [arrayY - marginData[2], 0 + marginData[3]];
  183.             marginData[2] += 1;
  184.         }
  185.         if (marginData[0] + marginData[2] <= arrayY && marginData[1] + marginData[3] <= arrayX) {
  186.             for (j = lastWaypoint[0] - 1; j >= 0 + marginData[0]; j--) {
  187.                 resultData[resultData.length] = arrayData[j][lastWaypoint[1]];
  188.             }
  189.  
  190.             lastWaypoint = [0 + marginData[0], 0 + marginData[3]];
  191.             marginData[3] += 1;
  192.         }
  193.     }
  194.  
  195.     return JSON.stringify(resultData);
  196.  
  197.  
  198. }
  199.  
  200. async function solverStockTrader(ns, arrayData) {
  201.     ns.tprint("solverStockTrader()");
  202.     await ns.sleep(1000);
  203.    
  204.     let i, j, k;
  205.  
  206.     let tempStr = "[0";
  207.     for (i = 0; i < arrayData[1].length; i++) {
  208.         tempStr += ",0";
  209.     }
  210.     tempStr += "]";
  211.     let tempArr = "[" + tempStr;
  212.     for (i = 0; i < arrayData[0] - 1; i++) {
  213.         tempArr += "," + tempStr;
  214.     }
  215.     tempArr += "]";
  216.  
  217.     let highestProfit = JSON.parse(tempArr);
  218.  
  219.     for (i = 0; i < arrayData[0]; i++) {
  220.         for (j = 0; j < arrayData[1].length; j++) { // Buy / Start
  221.             for (k = j; k < arrayData[1].length; k++) { // Sell / End
  222.                 if (i > 0 && j > 0 && k > 0) {
  223.                     highestProfit[i][k] = Math.max(highestProfit[i][k], highestProfit[i - 1][k], highestProfit[i][k - 1], highestProfit[i - 1][j - 1] + arrayData[1][k] - arrayData[1][j]);
  224.                 } else if (i > 0 && j > 0) {
  225.                     highestProfit[i][k] = Math.max(highestProfit[i][k], highestProfit[i - 1][k], highestProfit[i - 1][j - 1] + arrayData[1][k] - arrayData[1][j]);
  226.                 } else if (i > 0 && k > 0) {
  227.                     highestProfit[i][k] = Math.max(highestProfit[i][k], highestProfit[i - 1][k], highestProfit[i][k - 1], arrayData[1][k] - arrayData[1][j]);
  228.                 } else if (j > 0 && k > 0) {
  229.                     highestProfit[i][k] = Math.max(highestProfit[i][k], highestProfit[i][k - 1], arrayData[1][k] - arrayData[1][j]);
  230.                 } else {
  231.                     highestProfit[i][k] = Math.max(highestProfit[i][k], arrayData[1][k] - arrayData[1][j]);
  232.                 }
  233.             }
  234.         }
  235.     }
  236.     return highestProfit[arrayData[0] - 1][arrayData[1].length - 1];
  237. }
  238.  
  239. async function solverTrianglePath(ns, arrayData) {
  240.     ns.tprint("solverTrianglePath()");
  241.     await ns.sleep(1000);
  242.     let i, j;
  243.  
  244.     for (i = 1; i < arrayData.length; i++) {
  245.         for (j = 0; j < arrayData[i].length; j++) {
  246.             arrayData[i][j] += Math.min(arrayData[i - 1][Math.max(0, j - 1)], arrayData[i - 1][Math.min(j, arrayData[i - 1].length - 1)]);
  247.         }
  248.     }
  249.  
  250.     let finalRow = arrayData[arrayData.length - 1];
  251.     let finalMinimum = 999;
  252.     for (i = 0; i < finalRow.length; i++) {
  253.         finalMinimum = Math.min(finalMinimum, finalRow[i]);
  254.     }
  255.  
  256.     return finalMinimum;
  257. }
  258.  
  259. async function solverUniquePaths(ns, arrayData) {
  260.     ns.tprint("solverUniquePaths()");
  261.     await ns.sleep(1000);
  262.     //let precalcFactorial = [1, 1, 2, 6, 24, 120, 720, 5040, 40320, 362880, 3628800, 39916800, 479001600, 6227020800, 87178291200, 1307674368000, 20922789888000, 355687428096000, 6402373705728000, 121645100408832000, 2432902008176640000];
  263.  
  264.     //if (arrayData === undefined || arrayData === null) {
  265.     //    return 1;
  266.     //}
  267.  
  268.     //let factN = precalcFactorial[arrayData[0] + arrayData[1] - 2];
  269.     //let factK = precalcFactorial[arrayData[0] - 1];
  270.     //let factNK = precalcFactorial[arrayData[1] - 1];
  271.     //
  272.  
  273.     let k = arrayData[0] - 1; // k
  274.     let ak = arrayData[1] - 1; // n-k
  275.     let n = k + ak; // n = k + (n-k);
  276.  
  277.     // n choose k = n!/[(k)!(n-k)!] = n! / k! / (n-k)!
  278.  
  279.     let i;
  280.     let factN = 1,
  281.         factAK = 1;
  282.  
  283.     for (i = n; i > k; i--) { // n!/k! = n * n-1 * n-2 ... k+1
  284.         factN = factN * i;
  285.     }
  286.     for (i = ak; i > 1; i--) {
  287.         factAK = factAK * i;
  288.     }
  289.  
  290.     return (factN / factAK);
  291. }
  292.  
  293. async function solverUniquePathsII(ns, arrayData) {
  294.     ns.tprint("solverUniquePathsII()");
  295.     await ns.sleep(1000);
  296.     let i, j, k;
  297.     let pathsTo = [];
  298.     for (i = 0; i < arrayData.length; i++) {
  299.         pathsTo[i] = [];
  300.         for (j = 0; j < arrayData[0].length; j++) {
  301.             pathsTo[i][j] = 0;
  302.         }
  303.     }
  304.     pathsTo[0][0] = 1;
  305.  
  306.     for (i = 0; i < arrayData.length; i++) {
  307.         for (j = 0; j < arrayData[0].length; j++) {
  308.             if (i > 0 && j > 0 && !arrayData[i][j]) {
  309.                 pathsTo[i][j] = pathsTo[i][j - 1] + pathsTo[i - 1][j];
  310.             } else if (i > 0 && !arrayData[i][j]) {
  311.                 pathsTo[i][j] = pathsTo[i - 1][j];
  312.             } else if (j > 0 && !arrayData[i][j]) {
  313.                 pathsTo[i][j] = pathsTo[i][j - 1];
  314.             } else if (i === 0 && j === 0 && !arrayData[i][j]) {
  315.                 pathsTo[0][0] = 1;
  316.             } else {
  317.                 pathsTo[i][j] = 0;
  318.             }
  319.         }
  320.     }
  321.  
  322.     return pathsTo[pathsTo.length - 1][pathsTo[0].length - 1];
  323. }
  324.  
  325. async function solverWaysToExpress(ns, arrayData) {
  326.     ns.tprint("solverWaysToExpress()");
  327.     await ns.sleep(1000);
  328.     let i, j, k;
  329.  
  330.     let operatorList = ["", "+", "-", "*"];
  331.     let validExpressions = [];
  332.  
  333.     let tempPermutations = Math.pow(4, (arrayData[0].length - 1));
  334.  
  335.     for (i = 0; i < tempPermutations; i++) {
  336.  
  337.         if (!Boolean(i % 100000)) {
  338.             ns.tprint(i + "/" + tempPermutations + ", " + validExpressions.length + " found.");
  339.             await ns.sleep(100);
  340.         }
  341.  
  342.         let arraySummands = [];
  343.         let candidateExpression = arrayData[0].substr(0, 1);
  344.         arraySummands[0] = parseInt(arrayData[0].substr(0, 1));
  345.  
  346.         for (j = 1; j < arrayData[0].length; j++) {
  347.             candidateExpression += operatorList[(i >> ((j - 1) * 2)) % 4] + arrayData[0].substr(j, 1);
  348.  
  349.             let rollingOperator = operatorList[(i >> ((j - 1) * 2)) % 4];
  350.             let rollingOperand = parseInt(arrayData[0].substr(j, 1));
  351.  
  352.             switch (rollingOperator) {
  353.                 case "":
  354.                     rollingOperand = rollingOperand * (arraySummands[arraySummands.length - 1] / Math.abs(arraySummands[arraySummands.length - 1]));
  355.                     arraySummands[arraySummands.length - 1] = arraySummands[arraySummands.length - 1] * 10 + rollingOperand;
  356.                     break;
  357.                 case "+":
  358.                     arraySummands[arraySummands.length] = rollingOperand;
  359.                     break;
  360.                 case "-":
  361.                     arraySummands[arraySummands.length] = 0 - rollingOperand;
  362.                     break;
  363.                 case "*":
  364.                     while (j < arrayData[0].length - 1 && ((i >> (j * 2)) % 4) === 0) {
  365.                         j += 1;
  366.                         candidateExpression += arrayData[0].substr(j, 1);
  367.                         rollingOperand = rollingOperand * 10 + parseInt(arrayData[0].substr(j, 1));
  368.                     }
  369.                     arraySummands[arraySummands.length - 1] = arraySummands[arraySummands.length - 1] * rollingOperand;
  370.                     break;
  371.             }
  372.         }
  373.  
  374.         let rollingTotal = arraySummands.reduce(function(a, b) { return a + b; });
  375.  
  376.         //if(arrayData[1] == eval(candidateExpression)){
  377.         if (arrayData[1] === rollingTotal) {
  378.             validExpressions[validExpressions.length] = candidateExpression;
  379.         }
  380.     }
  381.  
  382.     return JSON.stringify(validExpressions);
  383. }
  384.  
  385. async function solverWaysToSum(ns, arrayData) {
  386.     ns.tprint("solverWaysToSum()");
  387.     await ns.sleep(1000);
  388.     let precalcPartitions = [0, 0, 1, 2, 4, 6, 10, 14, 21, 29, 41, 55, 76, 100, 134, 175, 230, 296, 384, 489, 626, 791, 1001, 1254, 1574, 1957, 2435, 3009, 3717, 4564, 5603, 6841, 8348, 10142, 12309, 14882, 17976, 21636, 26014, 31184, 37337, 44582, 53173, 63260, 75174, 89133, 105557, 124753, 147272, 173524, 204225, 239942, 281588, 329930, 386154, 451275, 526822, 614153, 715219, 831819, 966466, 1121504, 1300155, 1505498, 1741629, 2012557, 2323519, 2679688, 3087734, 3554344, 4087967, 4697204, 5392782, 6185688, 7089499, 8118263, 9289090, 10619862, 12132163, 13848649, 15796475, 18004326, 20506254, 23338468, 26543659, 30167356, 34262961, 38887672, 44108108, 49995924, 56634172, 64112358, 72533806, 82010176, 92669719, 104651418, 118114303, 133230929, 150198135, 169229874, 190569291, 214481125, 241265378, 271248949, 304801364, 342325708, 384276335, 431149388, 483502843, 541946239, 607163745, 679903202, 761002155, 851376627, 952050664, 1064144450, 1188908247, 1327710075, 1482074142, 1653668664, 1844349559, 2056148050, 2291320911, 2552338240, 2841940499, 3163127351, 3519222691, 3913864294, 4351078599, 4835271869, 5371315399, 5964539503, 6620830888, 7346629511, 8149040694, 9035836075, 10015581679, 11097645015, 12292341830, 13610949894, 15065878134, 16670689207, 18440293319, 20390982756, 22540654444, 24908858008, 27517052598, 30388671977, 33549419496, 37027355199];
  389.  
  390.     return precalcPartitions[arrayData];
  391. }
  392.  
  393. export async function main(ns) {
  394.     let listServers = ["home"];
  395.     let listIndex = 0;
  396.  
  397.     while (listIndex < listServers.length) {
  398.         await ns.sleep(250);
  399.         let listScan = ns.scan(listServers[listIndex], true);
  400.         for (let i = 0; i < listScan.length; i++) {
  401.             if (listServers.indexOf(listScan[i]) === -1) {
  402.                 listServers[listServers.length] = listScan[i];
  403.             }
  404.         }
  405.  
  406.         listIndex += 1;
  407.     }
  408.     ns.tprint("Completed server probe; now solving contracts");
  409.  
  410.     while (true) {
  411.         await ns.sleep(1000);
  412.  
  413.         listIndex = (listIndex + 1) % listServers.length;
  414.  
  415.         let listFiles = ns.ls(listServers[listIndex], ".cct");
  416.  
  417.         for (let z = 0; z < listFiles.length; z++) {
  418.             let inputData = ns.codingcontract.getData(listFiles[z], listServers[listIndex]);
  419.             let inputType = ns.codingcontract.getContractType(listFiles[z], listServers[listIndex]);
  420.             let outputData;
  421.             let outputResult = null;
  422.  
  423.             switch (inputType) {
  424.                 case "Algorithmic Stock Trader I":
  425.                     if(inputData.length > 1){
  426.                         outputData = await solverStockTrader(ns, [1, inputData]);    
  427.                     } else {
  428.                         outputData = 0;
  429.                     }
  430.                    
  431.                     outputResult = ns.codingcontract.attempt(outputData, listFiles[z], listServers[listIndex]);
  432.  
  433.                     ns.tprint([listServers[listIndex],
  434.                         listFiles[z],
  435.                         inputType,
  436.                         outputData,
  437.                         outputResult
  438.                     ]);
  439.                     if (!outputResult) {
  440.                         ns.tprint("Failed data for debug: " + JSON.stringify(inputData));
  441.                     }
  442.                     break;
  443.                 case "Algorithmic Stock Trader II":
  444.                     if(inputData.length > 1){
  445.                         outputData = await solverStockTrader(ns, [Math.floor(inputData.length / 2), inputData]);
  446.                     } else {
  447.                         outputData = 0;
  448.                     }
  449.                     outputResult = ns.codingcontract.attempt(outputData, listFiles[z], listServers[listIndex]);
  450.  
  451.                     ns.tprint([listServers[listIndex],
  452.                         listFiles[z],
  453.                         inputType,
  454.                         outputData,
  455.                         outputResult
  456.                     ]);
  457.                     if (!outputResult) {
  458.                         ns.tprint("Failed data for debug: " + JSON.stringify(inputData));
  459.                     }
  460.                     break;
  461.                 case "Algorithmic Stock Trader III":
  462.                     if(inputData.length > 1){
  463.                         outputData = await solverStockTrader(ns, [2, inputData]);
  464.                     } else {
  465.                         outputData = 0;
  466.                     }
  467.                    
  468.                     outputResult = ns.codingcontract.attempt(outputData, listFiles[z], listServers[listIndex]);
  469.  
  470.                     ns.tprint([listServers[listIndex],
  471.                         listFiles[z],
  472.                         inputType,
  473.                         outputData,
  474.                         outputResult
  475.                     ]);
  476.                     if (!outputResult) {
  477.                         ns.tprint("Failed data for debug: " + JSON.stringify(inputData));
  478.                     }
  479.                     break;
  480.                 case "Algorithmic Stock Trader IV":
  481.                     outputData = await solverStockTrader(ns, inputData);
  482.                     outputResult = ns.codingcontract.attempt(outputData, listFiles[z], listServers[listIndex]);
  483.  
  484.                     ns.tprint([listServers[listIndex],
  485.                         listFiles[z],
  486.                         inputType,
  487.                         outputData,
  488.                         outputResult
  489.                     ]);
  490.                     if (!outputResult) {
  491.                         ns.tprint("Failed data for debug: " + JSON.stringify(inputData));
  492.                     }
  493.                     break;
  494.                 case "Array Jumping Game":
  495.                     outputData = await solverArrayJumpingGame(ns, inputData);
  496.                     outputResult = ns.codingcontract.attempt(outputData, listFiles[z], listServers[listIndex]);
  497.  
  498.                     ns.tprint([listServers[listIndex],
  499.                         listFiles[z],
  500.                         inputType,
  501.                         outputData,
  502.                         outputResult
  503.                     ]);
  504.                     if (!outputResult) {
  505.                         ns.tprint("Failed data for debug: " + JSON.stringify(inputData));
  506.                     }
  507.                     break;
  508.                 case "Find All Valid Math Expressions":
  509.                     outputData = await solverWaysToExpress(ns, inputData);
  510.                     outputResult = ns.codingcontract.attempt(outputData, listFiles[z], listServers[listIndex]);
  511.  
  512.                     ns.tprint([listServers[listIndex],
  513.                         listFiles[z],
  514.                         inputType,
  515.                         outputData,
  516.                         outputResult
  517.                     ]);
  518.                     if (!outputResult) {
  519.                         ns.tprint("Failed data for debug: " + JSON.stringify(inputData));
  520.                     }
  521.                     break;
  522.                 case "Find Largest Prime Factor":
  523.                     outputData = await solverLargestPrime(ns, inputData);
  524.                     outputResult = ns.codingcontract.attempt(outputData, listFiles[z], listServers[listIndex]);
  525.  
  526.                     ns.tprint([listServers[listIndex],
  527.                         listFiles[z],
  528.                         inputType,
  529.                         outputData,
  530.                         outputResult
  531.                     ]);
  532.                     if (!outputResult) {
  533.                         ns.tprint("Failed data for debug: " + JSON.stringify(inputData));
  534.                     }
  535.                     break;
  536.                 case "Generate IP Addresses":
  537.                     outputData = await solverGenerateIPs(ns, inputData);
  538.                     outputResult = ns.codingcontract.attempt(outputData, listFiles[z], listServers[listIndex]);
  539.  
  540.                     ns.tprint([listServers[listIndex],
  541.                         listFiles[z],
  542.                         inputType,
  543.                         outputData,
  544.                         outputResult
  545.                     ]);
  546.                     if (!outputResult) {
  547.                         ns.tprint("Failed data for debug: " + JSON.stringify(inputData));
  548.                     }
  549.                     break;
  550.                 case "Merge Overlapping Intervals":
  551.                     outputData = await solverMergeRanges(ns, inputData);
  552.                     outputResult = ns.codingcontract.attempt(outputData, listFiles[z], listServers[listIndex]);
  553.  
  554.                     ns.tprint([listServers[listIndex],
  555.                         listFiles[z],
  556.                         inputType,
  557.                         outputData,
  558.                         outputResult
  559.                     ]);
  560.                     if (!outputResult) {
  561.                         ns.tprint("Failed data for debug: " + JSON.stringify(inputData));
  562.                     }
  563.                     break;
  564.                 case "Minimum Path Sum in a Triangle":
  565.                     outputData = await solverTrianglePath(ns, inputData);
  566.                     outputResult = ns.codingcontract.attempt(outputData, listFiles[z], listServers[listIndex]);
  567.  
  568.                     ns.tprint([listServers[listIndex],
  569.                         listFiles[z],
  570.                         inputType,
  571.                         outputData,
  572.                         outputResult
  573.                     ]);
  574.                     if (!outputResult) {
  575.                         ns.tprint("Failed data for debug: " + JSON.stringify(inputData));
  576.                     }
  577.                     break;
  578.                 case "Spiralize Matrix":
  579.                     outputData = await solverSpiralizeMatrix(ns, inputData);
  580.                     outputResult = ns.codingcontract.attempt(outputData, listFiles[z], listServers[listIndex]);
  581.  
  582.                     ns.tprint([listServers[listIndex],
  583.                         listFiles[z],
  584.                         inputType,
  585.                         outputData,
  586.                         outputResult
  587.                     ]);
  588.                     if (!outputResult) {
  589.                         ns.tprint("Failed data for debug: " + JSON.stringify(inputData));
  590.                     }
  591.                     break;
  592.                 case "Subarray with Maximum Sum":
  593.                     outputData = await solverLargestSubset(ns, inputData);
  594.                     outputResult = ns.codingcontract.attempt(outputData, listFiles[z], listServers[listIndex]);
  595.  
  596.                     ns.tprint([listServers[listIndex],
  597.                         listFiles[z],
  598.                         inputType,
  599.                         outputData,
  600.                         outputResult
  601.                     ]);
  602.                     if (!outputResult) {
  603.                         ns.tprint("Failed data for debug: " + JSON.stringify(inputData));
  604.                     }
  605.                     break;
  606.                 case "Total Ways to Sum":
  607.                     outputData = await solverWaysToSum(ns, inputData);
  608.                     outputResult = ns.codingcontract.attempt(outputData, listFiles[z], listServers[listIndex]);
  609.  
  610.                     ns.tprint([listServers[listIndex],
  611.                         listFiles[z],
  612.                         inputType,
  613.                         outputData,
  614.                         outputResult
  615.                     ]);
  616.                     if (!outputResult) {
  617.                         ns.tprint("Failed data for debug: " + JSON.stringify(inputData));
  618.                     }
  619.                     break;
  620.                 case "Unique Paths in a Grid I":
  621.                     outputData = await solverUniquePaths(ns, inputData);
  622.                     outputResult = ns.codingcontract.attempt(outputData, listFiles[z], listServers[listIndex]);
  623.  
  624.                     ns.tprint([listServers[listIndex],
  625.                         listFiles[z],
  626.                         inputType,
  627.                         outputData,
  628.                         outputResult
  629.                     ]);
  630.                     if (!outputResult) {
  631.                         ns.tprint("Failed data for debug: " + JSON.stringify(inputData));
  632.                     }
  633.                     break;
  634.                 case "Unique Paths in a Grid II":
  635.                     outputData = await solverUniquePathsII(ns, inputData);
  636.                     outputResult = ns.codingcontract.attempt(outputData, listFiles[z], listServers[listIndex]);
  637.  
  638.                     ns.tprint([listServers[listIndex],
  639.                         listFiles[z],
  640.                         inputType,
  641.                         outputData,
  642.                         outputResult
  643.                     ]);
  644.                     if (!outputResult) {
  645.                         ns.tprint("Failed data for debug: " + JSON.stringify(inputData));
  646.                     }
  647.                     break;
  648.                 default:
  649.                     ns.tprint([listServers[listIndex],
  650.                         listFiles[z],
  651.                         inputType,
  652.                         "NO SOLVER YET"
  653.                     ]);
  654.                     break;
  655.             }
  656.         }
  657.     }
  658. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement