Advertisement
Guest User

Bitburner autocontract.ns

a guest
May 11th, 2019
167
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // autocontract.ns v20190511 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); p++) {
  11.                 arrayJump[p] = 1;
  12.             }
  13.         }
  14.     }
  15.  
  16.     return arrayJump[arrayJump.length - 1];
  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.  
  263.     let k = arrayData[0] - 1; // k
  264.     let ak = arrayData[1] - 1; // n-k
  265.     let n = k + ak; // n = k + (n-k);
  266.  
  267.     // n choose k = n!/[(k)!(n-k)!] = n! / k! / (n-k)!
  268.  
  269.     let i;
  270.     let factN = 1,
  271.         factAK = 1;
  272.  
  273.     for (i = n; i > k; i--) { // n!/k! = n * n-1 * n-2 ... k+1
  274.         factN = factN * i;
  275.     }
  276.     for (i = ak; i > 1; i--) {
  277.         factAK = factAK * i;
  278.     }
  279.  
  280.     return (factN / factAK);
  281. }
  282.  
  283. async function solverUniquePathsII(ns, arrayData) {
  284.     ns.tprint("solverUniquePathsII()");
  285.     await ns.sleep(1000);
  286.     let i, j, k;
  287.     let pathsTo = [];
  288.     for (i = 0; i < arrayData.length; i++) {
  289.         pathsTo[i] = [];
  290.         for (j = 0; j < arrayData[0].length; j++) {
  291.             pathsTo[i][j] = 0;
  292.         }
  293.     }
  294.     pathsTo[0][0] = 1;
  295.  
  296.     for (i = 0; i < arrayData.length; i++) {
  297.         for (j = 0; j < arrayData[0].length; j++) {
  298.             if (i > 0 && j > 0 && !arrayData[i][j]) {
  299.                 pathsTo[i][j] = pathsTo[i][j - 1] + pathsTo[i - 1][j];
  300.             } else if (i > 0 && !arrayData[i][j]) {
  301.                 pathsTo[i][j] = pathsTo[i - 1][j];
  302.             } else if (j > 0 && !arrayData[i][j]) {
  303.                 pathsTo[i][j] = pathsTo[i][j - 1];
  304.             } else if (i === 0 && j === 0 && !arrayData[i][j]) {
  305.                 pathsTo[0][0] = 1;
  306.             } else {
  307.                 pathsTo[i][j] = 0;
  308.             }
  309.         }
  310.     }
  311.  
  312.     return pathsTo[pathsTo.length - 1][pathsTo[0].length - 1];
  313. }
  314.  
  315. async function solverWaysToExpress(ns, arrayData) {
  316.     ns.tprint("solverWaysToExpress()");
  317.     await ns.sleep(1000);
  318.     let i, j, k;
  319.  
  320.     let operatorList = ["", "+", "-", "*"];
  321.     let validExpressions = [];
  322.  
  323.     let tempPermutations = Math.pow(4, (arrayData[0].length - 1));
  324.  
  325.     for (i = 0; i < tempPermutations; i++) {
  326.  
  327.         if (!Boolean(i % 100000)) {
  328.             ns.tprint(i + "/" + tempPermutations + ", " + validExpressions.length + " found.");
  329.             await ns.sleep(100);
  330.         }
  331.  
  332.         let arraySummands = [];
  333.         let candidateExpression = arrayData[0].substr(0, 1);
  334.         arraySummands[0] = parseInt(arrayData[0].substr(0, 1));
  335.  
  336.         for (j = 1; j < arrayData[0].length; j++) {
  337.             candidateExpression += operatorList[(i >> ((j - 1) * 2)) % 4] + arrayData[0].substr(j, 1);
  338.  
  339.             let rollingOperator = operatorList[(i >> ((j - 1) * 2)) % 4];
  340.             let rollingOperand = parseInt(arrayData[0].substr(j, 1));
  341.  
  342.             switch (rollingOperator) {
  343.                 case "":
  344.                     rollingOperand = rollingOperand * (arraySummands[arraySummands.length - 1] / Math.abs(arraySummands[arraySummands.length - 1]));
  345.                     arraySummands[arraySummands.length - 1] = arraySummands[arraySummands.length - 1] * 10 + rollingOperand;
  346.                     break;
  347.                 case "+":
  348.                     arraySummands[arraySummands.length] = rollingOperand;
  349.                     break;
  350.                 case "-":
  351.                     arraySummands[arraySummands.length] = 0 - rollingOperand;
  352.                     break;
  353.                 case "*":
  354.                     while (j < arrayData[0].length - 1 && ((i >> (j * 2)) % 4) === 0) {
  355.                         j += 1;
  356.                         candidateExpression += arrayData[0].substr(j, 1);
  357.                         rollingOperand = rollingOperand * 10 + parseInt(arrayData[0].substr(j, 1));
  358.                     }
  359.                     arraySummands[arraySummands.length - 1] = arraySummands[arraySummands.length - 1] * rollingOperand;
  360.                     break;
  361.             }
  362.         }
  363.  
  364.         let rollingTotal = arraySummands.reduce(function(a, b) { return a + b; });
  365.  
  366.         if (arrayData[1] === rollingTotal) {
  367.             validExpressions[validExpressions.length] = candidateExpression;
  368.         }
  369.     }
  370.  
  371.     return JSON.stringify(validExpressions);
  372. }
  373.  
  374. async function solverWaysToSum(ns, arrayData) {
  375.     ns.tprint("solverWaysToSum()");
  376.     await ns.sleep(1000);
  377.     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];
  378.  
  379.     return precalcPartitions[arrayData];
  380. }
  381.  
  382. export async function main(ns) {
  383.     let listServers = ["home"];
  384.     let listIndex = 0;
  385.  
  386.     while (listIndex < listServers.length) {
  387.         await ns.sleep(250);
  388.         let listScan = ns.scan(listServers[listIndex], true);
  389.         for (let i = 0; i < listScan.length; i++) {
  390.             if (listServers.indexOf(listScan[i]) === -1) {
  391.                 listServers[listServers.length] = listScan[i];
  392.             }
  393.         }
  394.  
  395.         listIndex += 1;
  396.     }
  397.     ns.tprint("Completed server probe; now solving contracts");
  398.  
  399.     while (true) {
  400.         await ns.sleep(1000);
  401.  
  402.         listIndex = (listIndex + 1) % listServers.length;
  403.  
  404.         let listFiles = ns.ls(listServers[listIndex], ".cct");
  405.  
  406.         for (let z = 0; z < listFiles.length; z++) {
  407.             let inputData = ns.codingcontract.getData(listFiles[z], listServers[listIndex]);
  408.             let inputType = ns.codingcontract.getContractType(listFiles[z], listServers[listIndex]);
  409.             let outputData;
  410.             let outputResult = null;
  411.  
  412.             switch (inputType) {
  413.                 case "Algorithmic Stock Trader I":
  414.                     if(inputData.length > 1){
  415.                         outputData = await solverStockTrader(ns, [1, inputData]);    
  416.                     } else {
  417.                         outputData = 0;
  418.                     }
  419.                    
  420.                     outputResult = ns.codingcontract.attempt(outputData, listFiles[z], listServers[listIndex]);
  421.  
  422.                     ns.tprint([listServers[listIndex],
  423.                         listFiles[z],
  424.                         inputType,
  425.                         outputData,
  426.                         outputResult
  427.                     ]);
  428.                     if (!outputResult) {
  429.                         ns.tprint("Failed data for debug: " + JSON.stringify(inputData));
  430.                     }
  431.                     break;
  432.                 case "Algorithmic Stock Trader II":
  433.                     if(inputData.length > 1){
  434.                         outputData = await solverStockTrader(ns, [Math.floor(inputData.length / 2), inputData]);
  435.                     } else {
  436.                         outputData = 0;
  437.                     }
  438.                     outputResult = ns.codingcontract.attempt(outputData, listFiles[z], listServers[listIndex]);
  439.  
  440.                     ns.tprint([listServers[listIndex],
  441.                         listFiles[z],
  442.                         inputType,
  443.                         outputData,
  444.                         outputResult
  445.                     ]);
  446.                     if (!outputResult) {
  447.                         ns.tprint("Failed data for debug: " + JSON.stringify(inputData));
  448.                     }
  449.                     break;
  450.                 case "Algorithmic Stock Trader III":
  451.                     if(inputData.length > 1){
  452.                         outputData = await solverStockTrader(ns, [2, inputData]);
  453.                     } else {
  454.                         outputData = 0;
  455.                     }
  456.                    
  457.                     outputResult = ns.codingcontract.attempt(outputData, listFiles[z], listServers[listIndex]);
  458.  
  459.                     ns.tprint([listServers[listIndex],
  460.                         listFiles[z],
  461.                         inputType,
  462.                         outputData,
  463.                         outputResult
  464.                     ]);
  465.                     if (!outputResult) {
  466.                         ns.tprint("Failed data for debug: " + JSON.stringify(inputData));
  467.                     }
  468.                     break;
  469.                 case "Algorithmic Stock Trader IV":
  470.                     outputData = await solverStockTrader(ns, inputData);
  471.                     outputResult = ns.codingcontract.attempt(outputData, listFiles[z], listServers[listIndex]);
  472.  
  473.                     ns.tprint([listServers[listIndex],
  474.                         listFiles[z],
  475.                         inputType,
  476.                         outputData,
  477.                         outputResult
  478.                     ]);
  479.                     if (!outputResult) {
  480.                         ns.tprint("Failed data for debug: " + JSON.stringify(inputData));
  481.                     }
  482.                     break;
  483.                 case "Array Jumping Game":
  484.                     outputData = await solverArrayJumpingGame(ns, inputData);
  485.                     outputResult = ns.codingcontract.attempt(outputData, listFiles[z], listServers[listIndex]);
  486.  
  487.                     ns.tprint([listServers[listIndex],
  488.                         listFiles[z],
  489.                         inputType,
  490.                         outputData,
  491.                         outputResult
  492.                     ]);
  493.                     if (!outputResult) {
  494.                         ns.tprint("Failed data for debug: " + JSON.stringify(inputData));
  495.                     }
  496.                     break;
  497.                 case "Find All Valid Math Expressions":
  498.                     outputData = await solverWaysToExpress(ns, inputData);
  499.                     outputResult = ns.codingcontract.attempt(outputData, listFiles[z], listServers[listIndex]);
  500.  
  501.                     ns.tprint([listServers[listIndex],
  502.                         listFiles[z],
  503.                         inputType,
  504.                         outputData,
  505.                         outputResult
  506.                     ]);
  507.                     if (!outputResult) {
  508.                         ns.tprint("Failed data for debug: " + JSON.stringify(inputData));
  509.                     }
  510.                     break;
  511.                 case "Find Largest Prime Factor":
  512.                     outputData = await solverLargestPrime(ns, inputData);
  513.                     outputResult = ns.codingcontract.attempt(outputData, listFiles[z], listServers[listIndex]);
  514.  
  515.                     ns.tprint([listServers[listIndex],
  516.                         listFiles[z],
  517.                         inputType,
  518.                         outputData,
  519.                         outputResult
  520.                     ]);
  521.                     if (!outputResult) {
  522.                         ns.tprint("Failed data for debug: " + JSON.stringify(inputData));
  523.                     }
  524.                     break;
  525.                 case "Generate IP Addresses":
  526.                     outputData = await solverGenerateIPs(ns, inputData);
  527.                     outputResult = ns.codingcontract.attempt(outputData, listFiles[z], listServers[listIndex]);
  528.  
  529.                     ns.tprint([listServers[listIndex],
  530.                         listFiles[z],
  531.                         inputType,
  532.                         outputData,
  533.                         outputResult
  534.                     ]);
  535.                     if (!outputResult) {
  536.                         ns.tprint("Failed data for debug: " + JSON.stringify(inputData));
  537.                     }
  538.                     break;
  539.                 case "Merge Overlapping Intervals":
  540.                     outputData = await solverMergeRanges(ns, inputData);
  541.                     outputResult = ns.codingcontract.attempt(outputData, listFiles[z], listServers[listIndex]);
  542.  
  543.                     ns.tprint([listServers[listIndex],
  544.                         listFiles[z],
  545.                         inputType,
  546.                         outputData,
  547.                         outputResult
  548.                     ]);
  549.                     if (!outputResult) {
  550.                         ns.tprint("Failed data for debug: " + JSON.stringify(inputData));
  551.                     }
  552.                     break;
  553.                 case "Minimum Path Sum in a Triangle":
  554.                     outputData = await solverTrianglePath(ns, inputData);
  555.                     outputResult = ns.codingcontract.attempt(outputData, listFiles[z], listServers[listIndex]);
  556.  
  557.                     ns.tprint([listServers[listIndex],
  558.                         listFiles[z],
  559.                         inputType,
  560.                         outputData,
  561.                         outputResult
  562.                     ]);
  563.                     if (!outputResult) {
  564.                         ns.tprint("Failed data for debug: " + JSON.stringify(inputData));
  565.                     }
  566.                     break;
  567.                 case "Spiralize Matrix":
  568.                     outputData = await solverSpiralizeMatrix(ns, inputData);
  569.                     outputResult = ns.codingcontract.attempt(outputData, listFiles[z], listServers[listIndex]);
  570.  
  571.                     ns.tprint([listServers[listIndex],
  572.                         listFiles[z],
  573.                         inputType,
  574.                         outputData,
  575.                         outputResult
  576.                     ]);
  577.                     if (!outputResult) {
  578.                         ns.tprint("Failed data for debug: " + JSON.stringify(inputData));
  579.                     }
  580.                     break;
  581.                 case "Subarray with Maximum Sum":
  582.                     outputData = await solverLargestSubset(ns, inputData);
  583.                     outputResult = ns.codingcontract.attempt(outputData, listFiles[z], listServers[listIndex]);
  584.  
  585.                     ns.tprint([listServers[listIndex],
  586.                         listFiles[z],
  587.                         inputType,
  588.                         outputData,
  589.                         outputResult
  590.                     ]);
  591.                     if (!outputResult) {
  592.                         ns.tprint("Failed data for debug: " + JSON.stringify(inputData));
  593.                     }
  594.                     break;
  595.                 case "Total Ways to Sum":
  596.                     outputData = await solverWaysToSum(ns, inputData);
  597.                     outputResult = ns.codingcontract.attempt(outputData, listFiles[z], listServers[listIndex]);
  598.  
  599.                     ns.tprint([listServers[listIndex],
  600.                         listFiles[z],
  601.                         inputType,
  602.                         outputData,
  603.                         outputResult
  604.                     ]);
  605.                     if (!outputResult) {
  606.                         ns.tprint("Failed data for debug: " + JSON.stringify(inputData));
  607.                     }
  608.                     break;
  609.                 case "Unique Paths in a Grid I":
  610.                     outputData = await solverUniquePaths(ns, inputData);
  611.                     outputResult = ns.codingcontract.attempt(outputData, listFiles[z], listServers[listIndex]);
  612.  
  613.                     ns.tprint([listServers[listIndex],
  614.                         listFiles[z],
  615.                         inputType,
  616.                         outputData,
  617.                         outputResult
  618.                     ]);
  619.                     if (!outputResult) {
  620.                         ns.tprint("Failed data for debug: " + JSON.stringify(inputData));
  621.                     }
  622.                     break;
  623.                 case "Unique Paths in a Grid II":
  624.                     outputData = await solverUniquePathsII(ns, inputData);
  625.                     outputResult = ns.codingcontract.attempt(outputData, listFiles[z], listServers[listIndex]);
  626.  
  627.                     ns.tprint([listServers[listIndex],
  628.                         listFiles[z],
  629.                         inputType,
  630.                         outputData,
  631.                         outputResult
  632.                     ]);
  633.                     if (!outputResult) {
  634.                         ns.tprint("Failed data for debug: " + JSON.stringify(inputData));
  635.                     }
  636.                     break;
  637.                 default:
  638.                     ns.tprint([listServers[listIndex],
  639.                         listFiles[z],
  640.                         inputType,
  641.                         "NO SOLVER YET"
  642.                     ]);
  643.                     break;
  644.             }
  645.         }
  646.     }
  647. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement