Advertisement
Guest User

autocontract.ns v3

a guest
Mar 8th, 2022
370
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 27.95 KB | None | 0 0
  1. // autocontract.ns v3 by /u/hyperpandiculation with sanitize parenthesis solution by /u/Shaosil
  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. async function sanitizeParentheses(ns, arrayData) {
  394. ns.tprint("sanitizeParentheses()");
  395. await ns.sleep(1000);
  396. var solutions = new Set();
  397.  
  398. // Returns true and adds to solutions set if a string contains valid parentheses, false otherwise
  399. var checkValidity = (str) => {
  400. var nestLevel = 0;
  401. for (var c of str) {
  402. if (c == "(") nestLevel++;
  403. else if (c == ")") nestLevel--;
  404. if (nestLevel < 0) return false;
  405. }
  406.  
  407. if (nestLevel == 0) solutions.add(str);
  408. return nestLevel == 0;
  409. };
  410.  
  411. // Does a breadth first search to check all nodes at the target depth
  412. var getNodesAtDepth = (str, targetDepth, curDepth = 0) => {
  413. if (curDepth == targetDepth)
  414. checkValidity(str);
  415. else
  416. for (var i = 0; i < str.length; i++)
  417. if (str[i] == "(" || str[i] == ")")
  418. getNodesAtDepth(str.slice(0, i) + str.slice(i + 1), targetDepth, curDepth + 1);
  419. }
  420.  
  421. // Start from the top level and expand down until we find at least one solution
  422. var targetDepth = 0;
  423. while (solutions.size == 0 && targetDepth < arrayData.length - 1) {
  424. getNodesAtDepth(arrayData, targetDepth++);
  425. }
  426.  
  427. // If no solutions were found, return [""]
  428. if (solutions.size == 0) solutions.add("");
  429. return `[${[...solutions].join(", ")}]`;
  430. }
  431.  
  432. export async function main(ns) {
  433. let listServers = ["home"];
  434. let listIndex = 0;
  435.  
  436. while (listIndex < listServers.length) {
  437. await ns.sleep(250);
  438. let listScan = ns.scan(listServers[listIndex], true);
  439. for (let i = 0; i < listScan.length; i++) {
  440. if (listServers.indexOf(listScan[i]) === -1) {
  441. listServers[listServers.length] = listScan[i];
  442. }
  443. }
  444.  
  445. listIndex += 1;
  446. }
  447. ns.tprint("Completed server probe; now solving contracts");
  448.  
  449. while (true) {
  450. await ns.sleep(1000);
  451.  
  452. listIndex = (listIndex + 1) % listServers.length;
  453.  
  454. let listFiles = ns.ls(listServers[listIndex], ".cct");
  455.  
  456. for (let z = 0; z < listFiles.length; z++) {
  457. let inputData = ns.codingcontract.getData(listFiles[z], listServers[listIndex]);
  458. let inputType = ns.codingcontract.getContractType(listFiles[z], listServers[listIndex]);
  459. let outputData;
  460. let outputResult = null;
  461.  
  462. switch (inputType) {
  463. case "Algorithmic Stock Trader I":
  464. if(inputData.length > 1){
  465. outputData = await solverStockTrader(ns, [1, inputData]);
  466. } else {
  467. outputData = 0;
  468. }
  469.  
  470. outputResult = ns.codingcontract.attempt(outputData, listFiles[z], listServers[listIndex]);
  471.  
  472. ns.tprint([listServers[listIndex],
  473. listFiles[z],
  474. inputType,
  475. outputData,
  476. outputResult
  477. ]);
  478. if (!outputResult) {
  479. ns.tprint("Failed data for debug: " + JSON.stringify(inputData));
  480. }
  481. break;
  482. case "Algorithmic Stock Trader II":
  483. if(inputData.length > 1){
  484. outputData = await solverStockTrader(ns, [Math.floor(inputData.length / 2), inputData]);
  485. } else {
  486. outputData = 0;
  487. }
  488. outputResult = ns.codingcontract.attempt(outputData, listFiles[z], listServers[listIndex]);
  489.  
  490. ns.tprint([listServers[listIndex],
  491. listFiles[z],
  492. inputType,
  493. outputData,
  494. outputResult
  495. ]);
  496. if (!outputResult) {
  497. ns.tprint("Failed data for debug: " + JSON.stringify(inputData));
  498. }
  499. break;
  500. case "Algorithmic Stock Trader III":
  501. if(inputData.length > 1){
  502. outputData = await solverStockTrader(ns, [2, inputData]);
  503. } else {
  504. outputData = 0;
  505. }
  506.  
  507. outputResult = ns.codingcontract.attempt(outputData, listFiles[z], listServers[listIndex]);
  508.  
  509. ns.tprint([listServers[listIndex],
  510. listFiles[z],
  511. inputType,
  512. outputData,
  513. outputResult
  514. ]);
  515. if (!outputResult) {
  516. ns.tprint("Failed data for debug: " + JSON.stringify(inputData));
  517. }
  518. break;
  519. case "Algorithmic Stock Trader IV":
  520. outputData = await solverStockTrader(ns, inputData);
  521. outputResult = ns.codingcontract.attempt(outputData, listFiles[z], listServers[listIndex]);
  522.  
  523. ns.tprint([listServers[listIndex],
  524. listFiles[z],
  525. inputType,
  526. outputData,
  527. outputResult
  528. ]);
  529. if (!outputResult) {
  530. ns.tprint("Failed data for debug: " + JSON.stringify(inputData));
  531. }
  532. break;
  533. case "Array Jumping Game":
  534. outputData = await solverArrayJumpingGame(ns, inputData);
  535. outputResult = ns.codingcontract.attempt(outputData, listFiles[z], listServers[listIndex]);
  536.  
  537. ns.tprint([listServers[listIndex],
  538. listFiles[z],
  539. inputType,
  540. outputData,
  541. outputResult
  542. ]);
  543. if (!outputResult) {
  544. ns.tprint("Failed data for debug: " + JSON.stringify(inputData));
  545. }
  546. break;
  547. case "Find All Valid Math Expressions":
  548. outputData = await solverWaysToExpress(ns, inputData);
  549. outputResult = ns.codingcontract.attempt(outputData, listFiles[z], listServers[listIndex]);
  550.  
  551. ns.tprint([listServers[listIndex],
  552. listFiles[z],
  553. inputType,
  554. outputData,
  555. outputResult
  556. ]);
  557. if (!outputResult) {
  558. ns.tprint("Failed data for debug: " + JSON.stringify(inputData));
  559. }
  560. break;
  561. case "Find Largest Prime Factor":
  562. outputData = await solverLargestPrime(ns, inputData);
  563. outputResult = ns.codingcontract.attempt(outputData, listFiles[z], listServers[listIndex]);
  564.  
  565. ns.tprint([listServers[listIndex],
  566. listFiles[z],
  567. inputType,
  568. outputData,
  569. outputResult
  570. ]);
  571. if (!outputResult) {
  572. ns.tprint("Failed data for debug: " + JSON.stringify(inputData));
  573. }
  574. break;
  575. case "Generate IP Addresses":
  576. outputData = await solverGenerateIPs(ns, inputData);
  577. outputResult = ns.codingcontract.attempt(outputData, listFiles[z], listServers[listIndex]);
  578.  
  579. ns.tprint([listServers[listIndex],
  580. listFiles[z],
  581. inputType,
  582. outputData,
  583. outputResult
  584. ]);
  585. if (!outputResult) {
  586. ns.tprint("Failed data for debug: " + JSON.stringify(inputData));
  587. }
  588. break;
  589. case "Merge Overlapping Intervals":
  590. outputData = await solverMergeRanges(ns, inputData);
  591. outputResult = ns.codingcontract.attempt(outputData, listFiles[z], listServers[listIndex]);
  592.  
  593. ns.tprint([listServers[listIndex],
  594. listFiles[z],
  595. inputType,
  596. outputData,
  597. outputResult
  598. ]);
  599. if (!outputResult) {
  600. ns.tprint("Failed data for debug: " + JSON.stringify(inputData));
  601. }
  602. break;
  603. case "Minimum Path Sum in a Triangle":
  604. outputData = await solverTrianglePath(ns, inputData);
  605. outputResult = ns.codingcontract.attempt(outputData, listFiles[z], listServers[listIndex]);
  606.  
  607. ns.tprint([listServers[listIndex],
  608. listFiles[z],
  609. inputType,
  610. outputData,
  611. outputResult
  612. ]);
  613. if (!outputResult) {
  614. ns.tprint("Failed data for debug: " + JSON.stringify(inputData));
  615. }
  616. break;
  617. case "Spiralize Matrix":
  618. outputData = await solverSpiralizeMatrix(ns, inputData);
  619. outputResult = ns.codingcontract.attempt(outputData, listFiles[z], listServers[listIndex]);
  620.  
  621. ns.tprint([listServers[listIndex],
  622. listFiles[z],
  623. inputType,
  624. outputData,
  625. outputResult
  626. ]);
  627. if (!outputResult) {
  628. ns.tprint("Failed data for debug: " + JSON.stringify(inputData));
  629. }
  630. break;
  631. case "Subarray with Maximum Sum":
  632. outputData = await solverLargestSubset(ns, inputData);
  633. outputResult = ns.codingcontract.attempt(outputData, listFiles[z], listServers[listIndex]);
  634.  
  635. ns.tprint([listServers[listIndex],
  636. listFiles[z],
  637. inputType,
  638. outputData,
  639. outputResult
  640. ]);
  641. if (!outputResult) {
  642. ns.tprint("Failed data for debug: " + JSON.stringify(inputData));
  643. }
  644. break;
  645. case "Total Ways to Sum":
  646. outputData = await solverWaysToSum(ns, inputData);
  647. outputResult = ns.codingcontract.attempt(outputData, listFiles[z], listServers[listIndex]);
  648.  
  649. ns.tprint([listServers[listIndex],
  650. listFiles[z],
  651. inputType,
  652. outputData,
  653. outputResult
  654. ]);
  655. if (!outputResult) {
  656. ns.tprint("Failed data for debug: " + JSON.stringify(inputData));
  657. }
  658. break;
  659. case "Unique Paths in a Grid I":
  660. outputData = await solverUniquePaths(ns, inputData);
  661. outputResult = ns.codingcontract.attempt(outputData, listFiles[z], listServers[listIndex]);
  662.  
  663. ns.tprint([listServers[listIndex],
  664. listFiles[z],
  665. inputType,
  666. outputData,
  667. outputResult
  668. ]);
  669. if (!outputResult) {
  670. ns.tprint("Failed data for debug: " + JSON.stringify(inputData));
  671. }
  672. break;
  673. case "Sanitize Parentheses in Expression":
  674. outputData = await sanitizeParentheses(ns, inputData);
  675. outputResult = ns.codingcontract.attempt(outputData, listFiles[z], listServers[listIndex]);
  676.  
  677. ns.tprint([listServers[listIndex],
  678. listFiles[z],
  679. inputType,
  680. outputData,
  681. outputResult
  682. ]);
  683. if (!outputResult) {
  684. ns.tprint("Failed data for debug: " + JSON.stringify(inputData));
  685. }
  686. break;
  687. case "Unique Paths in a Grid II":
  688. outputData = await solverUniquePathsII(ns, inputData);
  689. outputResult = ns.codingcontract.attempt(outputData, listFiles[z], listServers[listIndex]);
  690.  
  691. ns.tprint([listServers[listIndex],
  692. listFiles[z],
  693. inputType,
  694. outputData,
  695. outputResult
  696. ]);
  697. if (!outputResult) {
  698. ns.tprint("Failed data for debug: " + JSON.stringify(inputData));
  699. }
  700. break;
  701. default:
  702. ns.tprint([listServers[listIndex],
  703. listFiles[z],
  704. inputType,
  705. "NO SOLVER YET"
  706. ]);
  707. break;
  708. }
  709. }
  710. }
  711. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement