Compare commits

..

18 Commits

Author SHA1 Message Date
d5e55b31b3 small update 2024-10-06 10:01:09 +02:00
4945683d09 fixin stuff? 2024-10-06 09:59:53 +02:00
cfdc1e0550 config.mjs mizzajl 2024-10-06 09:56:00 +02:00
23cb424e56 Merge branch 'main' of https://gitea.goetje-ing.de/ArchitectsOfTheBitburner/A_Bitburner_Saga 2024-10-06 09:51:14 +02:00
ce4c8f26ee test 2024-10-06 09:51:03 +02:00
Philipp
902e1e16bc this should now be an empty commit 2024-10-06 09:49:23 +02:00
Philipp
0832725507 maybe gitignore is fixed now? 2024-10-06 09:49:08 +02:00
30b2e4d041 updated EveryServerRun and batch to read from settings.txt 2024-10-06 09:45:38 +02:00
fd61cb72e1 second try 2024-10-06 09:30:35 +02:00
3cf9484442 moving some files around 2024-10-06 08:57:15 +02:00
7a5338daf5 Merge branch 'main' of https://gitea.goetje-ing.de/ArchitectsOfTheBitburner/A_Bitburner_Saga 2024-10-05 22:02:23 +02:00
f1cc1ea18e mizzajl- some changes 2024-10-05 22:02:02 +02:00
Philipp
9a2a96114a Cleanup Ramses Folder 2 2024-10-05 22:00:22 +02:00
Philipp
2c5ac45b97 Cleanup Ramses Folder 2024-10-05 22:00:11 +02:00
Philipp
939f836e3a Cleanup 2024-10-05 21:33:15 +02:00
ae47b87feb mizzajl some random comment 2024-10-05 21:33:00 +02:00
7705683965 Merge branch 'main' of https://gitea.goetje-ing.de/ArchitectsOfTheBitburner/A_Bitburner_Saga 2024-10-05 21:25:42 +02:00
9ee6a6149f mizzajl sync new beginning 2024-10-05 21:22:06 +02:00
113 changed files with 126 additions and 2823 deletions

8
.gitignore vendored
View File

@@ -144,5 +144,9 @@ build/
.vscode/*
!.vscode/launch.json
local/path/home/bestTarget.txt
local/path/home/serverList.txt
# Non Clashing Bitburner Override
*config.mjs*
*serverList.txt*
*bestTarget.txt*
config.mjs

View File

@@ -1,4 +1,4 @@
import { getGrowThreads } from "myLibrary.js";
import { getGrowThreads, getSetting } from "myLibrary.js";
/** @param {NS} ns */
export async function main(ns) {
@@ -31,7 +31,8 @@ export async function main(ns) {
const nGrowScriptRAM = 1.7 * nGrowThreads;
//ns.tprint("nGrowScriptRAM = " + nGrowScriptRAM);
const nFrequency = 50;
//const nFrequency = 50;
const nFrequency = getSetting(ns, "batchFrequency");
let nScriptsRAM;
let nMaxRam;
let nScripts;

View File

@@ -52,11 +52,10 @@ export async function main(ns) {
//Gang
ns.print("Karma = " + cCyan + Math.round(ns.heart.break()).toLocaleString() + cReset);
if (ns.gang.inGang()) {
ns.print("Gang found... running " + sGangScript);
if (!ns.getRunningScript(sGangScript)) {
ns.print("Gang found... running " + sGangScript);
ns.exec(sGangScript, sThisRunner, 1);
}
}
else {
ns.print("Gang: " + cRed + "none" + cReset);
@@ -104,8 +103,9 @@ export async function main(ns) {
//Home Upgrades
if (nMoney > ns.singularity.getUpgradeHomeRamCost()) {
let nHomeRAMUpgradeCost = ns.singularity.getUpgradeHomeRamCost();
ns.singularity.upgradeHomeRam();
ns.tprint(cCyan + "Upgraded home RAM" + cReset);
ns.tprint(cCyan + "Upgraded home RAM to " + (nHomeMaxRAM*2) + " for " + nHomeRAMUpgradeCost + cReset);
}
else if (nCores < 8 && nMoney > ns.singularity.getUpgradeHomeCoresCost()) {
ns.singularity.upgradeHomeCores();

96
Mizzajl/home/backdoor.js Normal file
View File

@@ -0,0 +1,96 @@
/** @param {NS} ns */
export async function main(ns) {
ns.tail();
await scanRecursiveWrapper(ns);
let currentHackingLevel = ns.getHackingLevel();
let currentArray = [];
let currentHop = "";
let serverRoutes = JSON.parse(ns.read("ServerRouteList.txt"));
let allPaths = getPaths(serverRoutes);
for (const entry of allPaths) {
for (const name of entry) {
if (ns.singularity.connect(name) === false) {
ns.tprint("Error when trying to connect to: " + currentHop);
return
}
if (ns.getServer(name).hostname === "CSEC" || ns.getServer(name).hostname === "avmnite-02h" || ns.getServer(name).hostname === "I.I.I.I" || ns.getServer(name).hostname === "run4theh111z" || ns.getServer(name).hostname === "The-Cave") {
if (!ns.getServer(name).backdoorInstalled) {
if (ns.getServerRequiredHackingLevel(name) < currentHackingLevel && ns.hasRootAccess(name) === true) {
ns.print("Trying to backdoor " + name)
await ns.singularity.installBackdoor(name);
ns.print("Success on " + name)
}
} else { continue }
}
}
}
ns.singularity.connect("home");
}
function getPaths(obj, path = []) {
const paths = [];
for (const key in obj) {
const newPath = [...path, key];
paths.push(newPath);
if (typeof obj[key] === 'object' && obj[key] !== null) {
paths.push(...getPaths(obj[key], newPath));
}
}
return paths;
}
/** @param {NS} ns */
async function scanRecursiveWrapper(ns) {
ns.rm("ServerRouteList.txt");
const home = "home";
let serverRouteList = { home: {} };
let knownServers = [];
let unscanned = [];
unscanned.push(home);
knownServers.push(home);
while (unscanned.length > 0) {
let currentServer = unscanned.pop();
let currentChildren = ns.scan(currentServer).filter(element => !knownServers.includes(element));
knownServers = knownServers.concat(currentChildren);
let keyPath = findKeyPath(serverRouteList, currentServer);
let childrenObject = currentChildren.reduce((a, v) => ({ ...a, [v]: {} }), {});
writeValueToPath(serverRouteList, keyPath, childrenObject);
for (let i = 0; i < currentChildren.length; i++) {
let child = currentChildren[i];
unscanned.push(child);
}
}
ns.write("ServerRouteList.txt", JSON.stringify(serverRouteList), "w");
}
function findKeyPath(json, key) {
if (typeof json !== 'object' || json === null) {
return null;
}
if (key in json) {
return key;
}
for (const property in json) {
if (json.hasOwnProperty(property)) {
const path = findKeyPath(json[property], key);
if (path !== null) {
return property + '*' + path;
}
}
}
return null;
}
function writeValueToPath(json, path, value) {
const parts = path.split('*');
let currentObject = json;
for (let i = 0; i < parts.length - 1; i++) {
const part = parts[i];
if (currentObject[part] === undefined) {
currentObject[part] = {};
}
currentObject = currentObject[part];
}
currentObject[parts[parts.length - 1]] = value;
}

View File

@@ -1,4 +1,4 @@
import { getGrowThreads } from "myLibrary.js";
import { getGrowThreads, getSetting } from "myLibrary.js";
/** @param {NS} ns */
export async function main(ns) {
@@ -22,7 +22,8 @@ export async function main(ns) {
const sGrowScript = "RMgrow.js";
const sWeakenScript = "RMweaken.js";
const nHackThreads = 5; //1
//const nHackThreads = 50; //1
const nHackThreads = getSetting(ns, "batchHacks"); //1
const nHackScriptRAM = 1.75;
const nGrowScriptRAM = 1.7;

View File

@@ -0,0 +1,6 @@
/** @param {NS} ns */
export async function main(ns) {
while (true) {
await ns.share();
}
}

View File

@@ -26,7 +26,7 @@ export async function main(ns) {
while (nCurrentProgress < 100) {
ns.read(""filename"");
//ns.read(""filename"");
ns.print(sProgress[Math.floor(nCurrentProgress / (sProgress.length - 1))]);
ns.write("filename", "text", "w");

View File

@@ -0,0 +1,6 @@
{"setting":{
"autoUpgrades":true,
"autoPurchaseServers":true,
"batchHacks":50,
"batchFrequency":1000
}}

View File

@@ -24,7 +24,7 @@ export async function main(ns) {
while (bAutoUpgrade && nCurrentRAM < 2 ** 20) {
//for (let i = 0; i < npServ.length; i++) {
for (let i = 0; i < 1 && bAutoUpgrade; i++) {
for (let i = 0; i < npServ.length && bAutoUpgrade; i++) {
ns.print("----------------------------------------------------------------------");
nMyMoney = ns.getServerMoneyAvailable("home");

File diff suppressed because one or more lines are too long

View File

@@ -1 +0,0 @@
{"serverName":"the-hub","maxRam":32,"maxMoney":483168296.25,"minSec":13,"minPorts":2,"minHackLvl":318,"rootAccess":true,"factorMoneyPerTime":0.1841702873569451,"openPorts":0,"serverFiles":["factionboost.js"],"hackingChance":0.40919188586028893}

View File

@@ -1,46 +0,0 @@
/** @param {NS} ns */
export async function main(ns) {
/*
ns.renamePurchasedServer("pserv-23", "pserv-24");
ns.renamePurchasedServer("pserv-22", "pserv-23");
ns.renamePurchasedServer("pserv-21", "pserv-22");
ns.renamePurchasedServer("pserv-20", "pserv-21");
ns.renamePurchasedServer("pserv-19", "pserv-20");
ns.renamePurchasedServer("pserv-18", "pserv-19");
ns.renamePurchasedServer("pserv-17", "pserv-18");
ns.renamePurchasedServer("pserv-16", "pserv-17");
ns.renamePurchasedServer("pserv-15", "pserv-16");
ns.renamePurchasedServer("pserv-14", "pserv-15");
ns.renamePurchasedServer("pserv-13", "pserv-14");
ns.renamePurchasedServer("pserv-12", "pserv-13");
ns.renamePurchasedServer("pserv-11", "pserv-12");
ns.renamePurchasedServer("pserv-10", "pserv-11");
ns.renamePurchasedServer("pserv-9", "pserv-10");
ns.renamePurchasedServer("pserv-8", "pserv-9");
ns.renamePurchasedServer("pserv-7", "pserv-8");
ns.renamePurchasedServer("pserv-6", "pserv-7");
ns.renamePurchasedServer("pserv-5", "pserv-6");
ns.renamePurchasedServer("pserv-4", "pserv-5");
ns.renamePurchasedServer("pserv-3", "pserv-4");
ns.renamePurchasedServer("pserv-2", "pserv-3");
ns.renamePurchasedServer("pserv-1-0", "pserv-2");
*/
ns.renamePurchasedServer("pserv-1", "pserv-01");
ns.renamePurchasedServer("pserv-2", "pserv-02");
ns.renamePurchasedServer("pserv-3", "pserv-03");
ns.renamePurchasedServer("pserv-4", "pserv-04");
ns.renamePurchasedServer("pserv-5", "pserv-05");
ns.renamePurchasedServer("pserv-6", "pserv-06");
ns.renamePurchasedServer("pserv-7", "pserv-07");
ns.renamePurchasedServer("pserv-8", "pserv-08");
ns.renamePurchasedServer("pserv-9", "pserv-09");
//const nServers = ns.getPurchasedServers();
//for (let i = 0; i < nServers; i++)
//let hostname = ns.purchaseServer("pserv-" + i, ram);
// ns.renamePurchasedServer(([i]), "pserv-" + i);
}

View File

@@ -1,39 +0,0 @@
/** @param {NS} ns */
export async function main(ns) {
const sMessage = ns.args[0]; //
const nCurrentProgress = ns.args[1]; //
const stest = ns.args[2];
const nPID = ns.pid;
const sFileName = "progress_" + nPID;
//ns.print("nPID = "+nPID);
const sProgress = [
"░░░░░░░░░░",
"█░░░░░░░░░",
"██░░░░░░░░",
"███░░░░░░░",
"████░░░░░░",
"█████░░░░░",
"██████░░░░",
"███████░░░",
"████████░░",
"█████████░",
"██████████"
];
ns.tail(nPID);
while (nCurrentProgress < 100) {
ns.read(""filename"");
ns.print(sProgress[Math.floor(nCurrentProgress / (sProgress.length - 1))]);
ns.write("filename", "text", "w");
}
if (nCurrentProgress >= 100)
ns.rm(sFileName);
return nPID;
}

File diff suppressed because one or more lines are too long

View File

@@ -15,7 +15,7 @@ const createContext = async () => await context({
port: 12525,
types: 'NetscriptDefinitions.d.ts',
mirror: {
'Ramses': ['home']
'Mizzajl': ['home']
},
distribute: {
},

File diff suppressed because one or more lines are too long

View File

@@ -1,29 +0,0 @@
/** @param {NS} ns */
export async function main(ns) {
//8,5,1,1,2,6,7,2,5,4
//const sContractData = ns.codingcontract.getData(sContract, sTarget);
const sContractData = "8,5,1,1,2,6,7,2,5,4";
/*
8
5,1
1,2,6
7,2,5,4
*/
//nArray[0[2]]
const sArray = sContractData.split(',');
ns.tprint(sArray);
let nArray = [];
//Number
for (let i = 0; i < sArray.length; i++) {
nArray[i] = Number(sArray[i]);
}
ns.tprint(nArray);
let nLayers = [];
for (let l = 0; l < nArray.length; l++) {
}
}

View File

@@ -1,108 +0,0 @@
/** @param {NS} ns */
export async function main(ns) {
//args
const sTarget = ns.args[0]; // target server
// declare objects
const oHome = ns.getServer("home");
//const oTarget = ns.getServer(sTarget);
//declare variables
const sWeakenScript = "RMweaken.js";
const sGrowScript = "RMgrow.js";
const sBatch = "RMcontroller.js";
const nCores = oHome.cpuCores;
let nSecurity = ns.getServerSecurityLevel(sTarget);
const nMinSecurity = ns.getServerMinSecurityLevel(sTarget);
let nMoney = ns.getServerMoneyAvailable(sTarget);
const nMaxMoney = ns.getServerMaxMoney(sTarget);
const nWeakenSTR = ns.weakenAnalyze(1, nCores);
let nWeakenThreads = Math.ceil((nSecurity - nMinSecurity) / nWeakenSTR);
let nFreeRam = ns.getServerMaxRam("home") - ns.getServerUsedRam("home");
ns.tail(ns.pid, oHome.hostname, sTarget);
//ns.resizeTail(815, 395);
//ns.moveTail(1925, 0);
// crack target
//ns.run(sCrack, 1, sTarget);
const nDelay = ns.getWeakenTime(sTarget);
if (nWeakenThreads > 0 && nSecurity > nMinSecurity) {
ns.tprint("current security is: " + nSecurity);
ns.tprint("minimum security is: " + nMinSecurity);
ns.tprint("threads needed for weaken: " + nWeakenThreads);
ns.tprint(nWeakenThreads + " will reduce Security by " + ns.weakenAnalyze(nWeakenThreads, nCores));
let nScriptRAM = ns.getScriptRam(sWeakenScript, "home");
let nRequiredRAM = nScriptRAM * nWeakenThreads;
ns.tprint(nWeakenThreads + " of " + sWeakenScript + " requires " + nRequiredRAM + " GB of RAM");
ns.tprint("weakening will take " + (nDelay / 1000 / 60) + " minutes");
if (nFreeRam > nRequiredRAM) {
ns.run(sWeakenScript, nWeakenThreads, sTarget);
//await ns.sleep(Math.ceil(nDelay));
nSecurity = ns.getServerSecurityLevel(sTarget);
ns.tprint("Breach complete, security level is now at: " + nSecurity);
}
else {
ns.print("not enough RAM to run all threads at once, splitting into smaller chunks...");
while (nSecurity > nMinSecurity) {
//nWeakenThreads /= (1+(nRequiredRAM / nFreeRam));
nMaxThreads = Math.min( );
ns.print(Math.ceil(nRequiredRAM / nFreeRam));
ns.print(nWeakenThreads);
ns.print(nWeakenThreads * nScriptRAM);
ns.run(sWeakenScript, Math.ceil(nWeakenThreads), sTarget);
await ns.sleep(Math.ceil(nDelay));
nSecurity = ns.getServerSecurityLevel(sTarget);
}
}
}
/*
let nGrowMulti = 1;
ns.print("nGrowMulti = " + nGrowMulti);
let nGrowth = ns.growthAnalyze(sTarget, nGrowMulti, nCores);
ns.print("nGrowth = " + nGrowth);
*/
//ns.growthAnalyzeSecurity();
const startValue = nMoney; // First argument: starting value
const target = nMaxMoney; // Second argument: target value
let result = startValue; // Initialize result with the starting value
let n = 1;
// For loop that continues until the result exceeds or matches the target
for (; result < target; n++) {
result += 1; // Add 1 before multiplication
result *= n; // Multiply by the current step value
}
let nGrowThreadsNeeded = n * ns.growthAnalyze(sTarget, n, 1);
ns.print("nGrowThreadsNeeded = " + nGrowThreadsNeeded);
while (nMoney < nMaxMoney) {
let nFreeRam = ns.getServerMaxRam("home") - ns.getServerUsedRam("home");
let nGrowPID = ns.run(sGrowScript, Math.min([Math.ceil(nGrowThreadsNeeded)], [Math.ceil(nFreeRam / ns.getScriptRam(sGrowScript, "home"))]), sTarget);
await ns.nextPortWrite(nGrowPID);
await ns.sleep(1000);
nMoney = ns.getServerMoneyAvailable(sTarget);
}
await ns.sleep(Math.ceil(nDelay));
//run batch
const nBatchPID = ns.run(sBatch, 1, sTarget);
ns.tail(nBatchPID, "home", sBatch, 1, sTarget);
ns.resizeTail(815, 395, nBatchPID);
ns.moveTail(1925, 0, nBatchPID);
}

View File

@@ -1,166 +0,0 @@
/** @param {NS} ns */
export async function main(ns) {
//Arguments
const sTarget = ns.args[0]; // target server
ns.tail("RMcontroller.js", "home", sTarget);
//Settings
const oHome = ns.getServer("home");
const nCores = oHome.cpuCores;
const sScript = ns.getScriptName();
const sWeaken = "RMweaken.js";
const sGrow = "RMgrow.js";
const sHack = "RMhack.js";
const nScriptRAM = ns.getScriptRam(sScript, "home");
const nWeakenRAM = ns.getScriptRam(sWeaken, "home");
const nGrowRAM = ns.getScriptRam(sGrow, "home");
const nHackRAM = ns.getScriptRam(sHack, "home");
const nHomeUsedRAM = ns.getServerUsedRam("home");
const nHomeMaxRAM = ns.getServerMaxRam("home");
let nHomeFreeRAM = nHomeMaxRAM - nHomeUsedRAM;
const nDelays = [0, 100, 200, 300];
//abort script if sTarget is undefined
if (sTarget === undefined) {
ns.tprint("1st arg sTarget is undefined");
return false;
}
//target server info
const nMinSecurity = ns.getServerMinSecurityLevel(sTarget);
const nMaxMoney = ns.getServerMaxMoney(sTarget);
let nWeakenTime1 = ns.getWeakenTime(sTarget);
let nWeakenTime2 = nWeakenTime1 + nDelays[3];
let nGrowTime = nWeakenTime1 * 0.8;
let nHackTime = nWeakenTime1 / 4;
//let nHackSecurityGain = ns.hackAnalyzeSecurity(1, sTarget);
//let nHackSecurityGain = 0.002;
//let nHackThreadsEstimate = Math.max(Math.floor(1 / nHackSecurityGain),1);
//let nHackThreadsEstimate = 10;
//ns.tprint("nHackSecurityGain = " + nHackSecurityGain);
//ns.tprint("nHackThreadsEstimate = " + nHackThreadsEstimate);
const nHackTotalRAM = nHackRAM * 25;
//let nGrowSecurityGain = ns.growthAnalyzeSecurity(1, sTarget, nCores);
//let nGrowSecurityGain = 0.004;
//let nGrowThreadsEstimate = Math.max(Math.floor(1 / nGrowSecurityGain),1);
//ns.tprint("nGrowSecurityGain = " + nGrowSecurityGain);
//ns.tprint("nGrowThreadsEstimate = " + nGrowThreadsEstimate);
const nGrowTotalRAM = nGrowRAM * 12.5;
//let nWeakenSecurity = ns.weakenAnalyze(1, nCores);
//let nWeakenSecurity = 0.05;
//let nWeakenThreadsEstimate = Math.max(Math.ceil(1 / nWeakenSecurity),1);
//ns.tprint("nWeakenSecurity = " + nWeakenSecurity);
//ns.tprint("nWeakenThreadsEstimate = " + nWeakenThreadsEstimate);
const nWeakenTotalRAM = nWeakenRAM * 1;
const nTotalRAM = nHackTotalRAM + nGrowTotalRAM + (nWeakenTotalRAM * 2)
const nTotalBatches = Math.floor((nHomeFreeRAM - nScriptRAM) / nTotalRAM);
let nHackThreadsEstimate = nTotalBatches * 25;
let nWeakenThreadsEstimate1 = nTotalBatches * 1;
let nGrowThreadsEstimate = nTotalBatches * 12.5;
let nWeakenThreadsEstimate2 = nTotalBatches * 1;
ns.tprint("RAM per Cycle = " + nTotalRAM);
ns.tprint("how many batches can i run at the same time? = " + nTotalBatches);
//await ns.grow(server, { additionalMsec: nMsecDelay });
let nGrowDelay = nWeakenTime1 - nGrowTime;
let nHackDelay = nWeakenTime1 - nHackTime;
const nCycleDuration = nWeakenTime2 + nDelays[3];
ns.tprint("nCycleDuration = " + nCycleDuration);
const nBatchFrequency = Math.ceil(nCycleDuration / nTotalBatches);
ns.tprint("nBatchFrequency = " + nBatchFrequency);
while (true) {
//server stats
let nCurrentSecurity = ns.getServerSecurityLevel(sTarget);
let nCurrentMoney = ns.getServerMoneyAvailable(sTarget);
//timestamp
let currentDate = new Date();
let nOffset;
ns.print("Cash: " + (Math.floor(nCurrentMoney * 1000) / 1000) + " / " + nMaxMoney);
ns.print("Security: " + (Math.floor(nCurrentSecurity * 1000) / 1000) + " / " + nMinSecurity);
//Calculate estimate time of completion
nOffset = ns.getWeakenTime(sTarget);
let nSafeTime = nOffset + nDelays[3] + 1000;
let nWeakTime = new Date(currentDate.getTime() + nSafeTime);
let sWeakTime = nWeakTime.toLocaleTimeString('sw-SV'); //swedish time
//Print estimated time of completion
ns.print("Weakening " + sTarget + " Estimated complete at " + sWeakTime);
//hack
const nHackPID = ns.exec(sHack, "home", nHackThreadsEstimate, sTarget, false, nHackDelay + nDelays[0]);
//ns.tail(nHackPID, "home", "home", nHackThreadsEstimate, sTarget, 0, nHackDelay + nDelays[0]);
//weaken 1
const nWeakenPID1 = ns.exec(sWeaken, "home", nWeakenThreadsEstimate1, sTarget, false, nDelays[1]);
//ns.tail(nWeakenPID, "home", "home", nWeakenThreadsEstimate, sTarget, 0, nDelays[1]);
//grow
const nGrowPID = ns.exec(sGrow, "home", nGrowThreadsEstimate, sTarget, false, nGrowDelay + nDelays[2]);
//ns.tail(nGrowPID, "home", "home", nGrowThreadsEstimate, sTarget, 0, nGrowDelay + nDelays[2]);
//weaken 2
const nWeakenPID2 = ns.exec(sWeaken, "home", nWeakenThreadsEstimate2, sTarget, false, nDelays[3]);
//ns.tail(nWeakenPID2, "home", "home", nWeakenThreadsEstimate, sTarget, 0, nDelays[3]);
//await ns.sleep(nSafeTime);
/*
await ns.nextPortWrite(nHackPID);
await ns.nextPortWrite(nWeakenPID1);
await ns.nextPortWrite(nGrowPID);
await ns.nextPortWrite(nWeakenPID2);
ns.print("nHackPeek = " + nHackPeek);
ns.print("nWeaken1Peek = " + nWeaken1Peek);
ns.print("nGrowPeek = " + nGrowPeek);
ns.print("nWeaken2Peek = " + nWeaken2Peek);
*/
let nHackPeek = ns.peek(nHackPID);
let nWeaken1Peek = ns.peek(nWeakenPID1);
let nGrowPeek = ns.peek(nGrowPID);
let nWeaken2Peek = ns.peek(nWeakenPID2);
if (nHackPeek === true || nWeaken1Peek === true || nGrowPeek === true || nWeaken2Peek === true) {
ns.print("some of the ports are already written to...");
ns.print("nHackPeek = " + nHackPeek);
ns.print("nWeaken1Peek = " + nWeaken1Peek);
ns.print("nGrowPeek = " + nGrowPeek);
ns.print("nWeaken2Peek = " + nWeaken2Peek);
}
await Promise.all([
ns.nextPortWrite(nHackPID),
ns.nextPortWrite(nWeakenPID1),
ns.nextPortWrite(nGrowPID),
ns.nextPortWrite(nWeakenPID2)
])
ns.print("hack: " + nHackPID + " completed at " + ns.readPort(nHackPID));
ns.print("weaken1: " + nWeakenPID1 + " completed at " + ns.readPort(nWeakenPID1));
ns.print("grow: " + nGrowPID + " completed at " + ns.readPort(nGrowPID));
ns.print("weaken2: " + nWeakenPID2 + " completed at " + ns.readPort(nWeakenPID2));
await ns.sleep(100);
}
}

View File

@@ -1,161 +0,0 @@
/** @param {NS} ns */
export async function main(ns) {
ns.tprint(ns.codingcontract.getContractTypes())
let testcontract = ns.codingcontract.createDummyContract("Total Ways to Sum")
let contractType = ns.codingcontract.getContractType(testcontract);
ns.tprint(ns.codingcontract.getDescription(testcontract))
let n = ns.codingcontract.getData(testcontract);
ns.tprint("Data: " + n);
let answer = "";
if (contractType === "Find Largest Prime Factor") {
answer = largestPrimeFactor(n);
}
if (contractType === "Subarray with Maximum Sum") {
answer = SubarrayWithMaximumSum(ns, n)
}
if (contractType === "Total Ways to Sum") {
answer = TotalWaysToSum(ns, n)
}
ns.tprint(answer);
ns.tprint(ns.codingcontract.attempt(answer, testcontract));
}
/*
5:
4 1
3 2
3 1 1
2 2 1
2 1 1 1
1 1 1 1 1
6:
5 1
4 2
4 1 1
3 3
3 2 1
3 1 1 1
2 2 2
2 2 1 1
2 1 1 1 1
1 1 1 1 1 1
# Start with one position m filling it with the integers between 1 and target
# For each m, fill the next position n with integers between 1 and m
# Repeat as long as the sum is smaller than target.
# append all iterations to the Array and count
*/
function TotalWaysToSum(ns, target) {
let sumArray = [];
let inputArray = [];
let unfinishedArray = [];
let rollingSum = 0;
for (let i = 1; i < target; i++) {
inputArray.push([i]);
}
let z = 1
while (inputArray.length > 0) {
z++
inputArray.forEach((element) => {
rollingSum = element.reduce((a, b) => a + b, 0);
if (rollingSum === target) {
sumArray.push(element)
} else {
for (let k = 1; k <= element[element.length-1] && k <= target - rollingSum; k++) {
unfinishedArray.push(element.concat([k]))
}
}
}
)
inputArray = unfinishedArray;
}
ns.tprint("Target: " +target)
ns.tprint("Length: " + sumArray.length)
return sumArray.length
}
function SubarrayWithMaximumSum(ns, givenArray) {
let arrayLength = givenArray.length;
let maxSum = -10000;
let runningSum = 0;
for (let i = 1; i <= arrayLength; i++) {
for (let j = 0; j <= arrayLength - i; j++) {
runningSum = eval(givenArray.slice(j, i + j).join('+'));
//ns.tprint("i: "+i+ " j: "+ j + " Array: "+givenArray.slice(j,i+j)+ " eval: "+ givenArray.slice(j,i+j).join('+')+"runningSum: "+runningSum);
if (maxSum < runningSum) { maxSum = runningSum };
}
}
return maxSum
}
function FindLargestPrimeFactor(number) {
let factor = 2;
while (factor * factor <= number) {
if (number % factor === 0) {
number /= factor;
} else {
factor++
}
}
return number;
}
/*
function FindLargestPrimeFactor(n) {
let x = Math.ceil(Math.random()*10);
let y = x;
let d = 1;
while (d === 1) {
x = g(x, n);
y = g(g(y, n), n)
d = gcd(n, Math.abs(x - y))
//ns.tprint("x:" + x + " y: " + y + " d: " + d)
}
if (d === n) {
return ("failure")
}
else {
return (d)
}
}
function g(x, n) {
return (x * x) % n
}
function gcd(a,b) {
a = Math.abs(a);
b = Math.abs(b);
if (b > a) {var temp = a; a = b; b = temp;}
while (true) {
if (b == 0) return a;
a %= b;
if (a == 0) return b;
b %= a;
}
}
function gcd(a, b) {
if (!b) {
return a;
}
return gcd(b, a % b);
}
*/

View File

@@ -1 +0,0 @@
{"home":{"n00dles":{"nectar-net":{"neo-net":{"computek":{"summit-uni":{}}}}},"foodnstuff":{"zer0":{"silver-helix":{"the-hub":{"rothman-uni":{"millenium-fitness":{}}},"netlink":{"zb-institute":{"alpha-ent":{"galactic-cyber":{}}}},"johnson-ortho":{},"crush-fitness":{}}},"max-hardware":{"phantasy":{},"omega-net":{"avmnite-02h":{"syscore":{"rho-construction":{},"aevum-police":{"global-pharm":{"omnia":{"defcomm":{},"solaris":{}}}}},"catalyst":{},"I.I.I.I":{"lexo-corp":{"aerocorp":{"deltaone":{"icarus":{"infocomm":{"run4theh111z":{"helios":{}}},"taiyang-digital":{"titan-labs":{"vitalife":{"omnitek":{"nwo":{},"powerhouse-fitness":{"fulcrumassets":{},"The-Cave":{}}}}}},"zb-def":{"microdyne":{}}},"zeus-med":{}},"unitalife":{"univ-energy":{"nova-med":{"applied-energetics":{"fulcrumtech":{"4sigma":{},".":{"b-and-a":{"ecorp":{}}}},"stormtech":{"kuai-gong":{"blade":{},"clarkinc":{"megacorp":{}}}}}}}}},"snap-fitness":{}}}}}}},"sigma-cosmetics":{"CSEC":{}},"joesguns":{},"hong-fang-tea":{},"harakiri-sushi":{},"iron-gym":{},"darkweb":{},"pserv-01":{},"pserv-02":{},"pserv-03":{},"pserv-04":{},"pserv-05":{},"pserv-06":{},"pserv-07":{},"pserv-08":{},"pserv-09":{},"pserv-10":{},"pserv-11":{},"pserv-12":{},"pserv-13":{},"pserv-14":{},"pserv-15":{},"pserv-16":{},"pserv-17":{},"pserv-18":{},"pserv-19":{},"pserv-20":{},"pserv-21":{},"pserv-22":{},"pserv-23":{},"pserv-24":{},"pserv-25":{}}}

View File

@@ -1 +0,0 @@
{"serverName":"the-hub","maxRam":32,"maxMoney":483168296.25,"minSec":13,"minPorts":2,"minHackLvl":318,"rootAccess":true,"factorMoneyPerTime":0.20289946912205814,"openPorts":0,"serverFiles":["factionboost.js"],"hackingChance":0.6338748693993541}

Some files were not shown because too many files have changed in this diff Show More