Nuclear Powered Mushroom

    advent19-intcode

    15.0.0 • Public • Published

    Advent Of Code 2019 Intcode Emulator

    Why module?

    Since Advent Of Code seems to require same intcode computer over and over again, this module is for those who did not have a chance to implement it themselves on previous tasks but who would still love to work on future tasks.

    I have integrated it into my own solution - it seems that it works well :)

    Usage

    Typical usage

    const emulator = require('adventofcode-2019-intcode')
     
    // Raw program which is normally provided as input data of the task
    const raw = '................'
     
    // Parse provided program
    const soft = emulator.parseProgram(raw)
     
    // Initialize registers
    const reg = emulator.createRegisters()
     
    // Customizable execution index (optional)
    // If not provided, it will be 0
    const index = 0
     
    // Some input array (first input at index 0)
    // If additional input will be requested, run will be halted
    // with exit code NEED_INPUT
    // One can use custom index to continue program by providing
    // additional inputs.
    const inputs = [0, 1, 2]
     
    const result = emulator.run(soft, reg, inputs, p)
     
    // emulator.run also accepts 5th parameter (boolean) which can enable printing every command it executes

    Result is an object which may contain following keys:

    • exitCode - reason for exiting (one of emulator.exitCodes)
    • pos - current execution index
    • registers - current state of registers
    • data - current state of memory/program
    • output - single output value whenever output command is reached OR array of all output values when program terminates

    Important: Note that even though emulator returns updated data and registers as a result - it also modifies both by reference. Therefor if you need data and arguments not to be changed - you must clone them. Simplest (yet dirty) way to do it is to JSON serialize and un-serialize :)

    State of emulator

    It should be completely operational. Emulator version corresponds to task number of Advent Of Code 2019 and is backwards compatible.

    There is no test coverage for now - sry.

    Had an idea to make opcodes configurable - maybe later :) Currently every opcode is simply hard-coded.

    This module is basically a copy-paste of quick and dirty solution used for the task.


    HF & GL

    Install

    npm i advent19-intcode

    DownloadsWeekly Downloads

    4

    Version

    15.0.0

    License

    MIT

    Unpacked Size

    9.43 kB

    Total Files

    5

    Last publish

    Collaborators

    • white-turbine