hacker.js: refactor schedule correction logic into schedule making logic to prevent having to iterate to schedule twice.

[?]
Sep 6, 2020, 12:57 PM
TXTXXNNBGMGN3POGN5VMGWGN5IF3VF5KAYUWJIQ7HKIONGTBZLBQC

Dependencies

  • [2] JS52JD4Q weaken_manager.js: add. lib_server_used.js: move to lib_ram_script. lib_ps: delete. main.js, hacker.js, lib_ram_script.js: refactor. README.md: update.
  • [3] SXEJJKPI executables: add `--help` flag. hacker.js: change scheduling logic. refactor. kill.js: allow handling more than one server or script at a time. cyclic_weaken.js: add. README.md: update.
  • [4] U2SGR33G hacker.js: minor refactor.
  • [5] 2BKHJI2S init
  • [6] ZVQK2652 executables: fix help message.
  • [7] JGNALSUQ add "cyclic_weaken.js" feature. hacker.js, main.js, libs: refactor. README.md: update.

Change contents

  • edit in sbin/hacker.js at line 44
    [3.370][3.370:389]()
    array_get_clone,
  • replacement in sbin/hacker.js at line 823
    [2.28364][2.28364:29916]()
    return (
    object_server_target_after.apply_job(object_job) &&
    (object_job.float_server_target_security_after =
    object_server_target_after.security_current),
    object_job
    );
    };
    // returns a schedule with jobs near the end that prevent it from achieving minimum security removed so the target server has minimum security when the schedule finishes. if no jobs achieve minimum security, return the original schedule.
    const array_get_schedule_corrected = function (
    ns,
    array_schedule
    ) {
    const
    array_schedule_edited = array_get_clone(array_schedule),
    float_server_target_security_minimum = ns.getServerMinSecurityLevel(
    array_schedule_edited[0].string_server_target
    );
    let boolean_have_seen_job_with_security_minimum = !1;
    for (
    ;
    !boolean_have_seen_job_with_security_minimum &&
    array_schedule_edited.length > 0;
    )
    for (
    let integer_index_job = array_schedule_edited.length - 1;
    integer_index_job >= 0 && !boolean_have_seen_job_with_security_minimum;
    --integer_index_job
    ) {
    const object_job = array_schedule_edited[integer_index_job];
    if (
    object_job.float_server_target_security_after ===
    float_server_target_security_minimum
    ) {
    boolean_have_seen_job_with_security_minimum = !0;
    break;
    }
    array_schedule_edited.splice(integer_index_job, 1);
    }
    return boolean_have_seen_job_with_security_minimum &&
    0 !== array_schedule_edited.length
    ? array_schedule_edited
    : array_schedule;
    [2.28364]
    [2.29916]
    object_server_target_after.apply_job(object_job);
    object_job.float_server_target_security_after = object_server_target_after.security_current;
    return object_job;
  • edit in sbin/hacker.js at line 843
    [2.30288]
    [2.30288]
    float_server_target_security_minimum = ns.getServerMinSecurityLevel(
    string_server_target
    ),
  • replacement in sbin/hacker.js at line 847
    [2.30313][2.30313:30360]()
    let array_servers_used = array_make_servers(
    [2.30313]
    [2.30360]
    let
    array_servers_used = array_make_servers(
  • replacement in sbin/hacker.js at line 852
    [2.30433][2.30433:30440]()
    );
    [2.30433]
    [2.30440]
    ),
    integer_last_seen_job_index_with_security_minimum = -1;
  • edit in sbin/hacker.js at line 873
    [2.30857]
    [2.30857]
    if (object_job.float_server_target_security_after ===
    float_server_target_security_minimum) {
    integer_last_seen_job_index_with_security_minimum = array_schedule.length;
    }
  • replacement in sbin/hacker.js at line 885
    [2.31122][2.31122:31181]()
    return array_get_schedule_corrected(ns, array_schedule);
    [2.31122]
    [2.31181]
    // return a schedule with jobs near the end that prevent it from achieving minimum security removed so the target server has minimum security when the schedule finishes. if no jobs achieve minimum security, return the original schedule.
    return (integer_last_seen_job_index_with_security_minimum > 0)
    ? array_schedule.slice(0, integer_last_seen_job_index_with_security_minimum + 1)
    : array_schedule;
  • replacement in lib/lib_no_ns.js at line 105
    [3.6608][3.6608:6667]()
    export const array_get_clone = function (array_original) {
    [3.6608]
    [3.6667]
    const array_get_clone = function (array_original) {