Search Results for

    Show / Hide Table of Contents

    Class SubComparison

    Implements binary comparison for two numbers a, b stored in the same chain.

    Determines whether a > b, a < b or a = b and makes the result available to all amoebots on the chain.

    This procedure requires at least 2 pins and it always uses the "outermost / leftmost" pins when traversing the chain. If an amoebot occurs on the chain multiple times, its predecessor and successor directions must be different for all occurrences.

    Usage:

    • Establish a chain of amoebots such that each amoebot knows its predecessor and successor (except the start and end amoebots). Each amoebot should store a bit a and a bit b.
    • Initialize using the Init(bool, bool, Direction, Direction) method. You must pass the bits a and b and the two chain directions. The chain start should have no predecessor and the end should have no successor.
    • Call SetupPinConfig(PinConfiguration) to modify the pin configuration.
    • Call ActivateSend() in the same round to start the procedure.
    • After this, call ActivateReceive(), SetupPinConfig(PinConfiguration), and ActivateSend() in this order in every round.
    • The procedure can be paused after each ActivateReceive() call and resumed by continuing with SetupPinConfig(PinConfiguration) in some future round.
    • Call IsFinished() after ActivateReceive() to check whether the comparison is finished.
    • The comparison result is thereafter available through Result() for each amoebot on the chain.
    Inheritance
    object
    Subroutine
    SubComparison
    Namespace: AS2.Subroutines.BinaryOps
    Assembly: .dll
    Syntax
    public class SubComparison : Subroutine

    Constructors

    | Edit this page View Source

    SubComparison(Particle, ParticleAttribute<int>)

    Declaration
    public SubComparison(Particle p, ParticleAttribute<int> stateAttr = null)
    Parameters
    Type Name Description
    Particle p
    ParticleAttribute<int> stateAttr

    Fields

    | Edit this page View Source

    bit_A

    Declaration
    private const int bit_A = 2
    Field Value
    Type Description
    int
    | Edit this page View Source

    bit_B

    Declaration
    private const int bit_B = 3
    Field Value
    Type Description
    int
    | Edit this page View Source

    bit_Finished

    Declaration
    private const int bit_Finished = 10
    Field Value
    Type Description
    int
    | Edit this page View Source

    state

    Declaration
    private ParticleAttribute<int> state
    Field Value
    Type Description
    ParticleAttribute<int>

    Methods

    | Edit this page View Source

    ActivateReceive()

    Activation during ActivateBeep() to receive the beeps sent in the last round. Should always be called before SetupPinConfig(PinConfiguration) and ActivateSend(), except in the very first activation, where it should not be called.

    Declaration
    public void ActivateReceive()
    | Edit this page View Source

    ActivateSend()

    Activation during ActivateBeep() to send the beeps required for this step. Must be called after ActivateReceive() and SetupPinConfig(PinConfiguration).

    Declaration
    public void ActivateSend()
    | Edit this page View Source

    Bit_A()

    This amoebot's bit of a.

    Declaration
    public bool Bit_A()
    Returns
    Type Description
    bool

    Whether this amoebot's bit of a is equal to 1.

    | Edit this page View Source

    Bit_B()

    This amoebot's bit of b.

    Declaration
    public bool Bit_B()
    Returns
    Type Description
    bool

    Whether this amoebot's bit of b is equal to 1.

    | Edit this page View Source

    GetStateBit(int)

    Helper for reading a single bit from the state integer.

    Declaration
    private bool GetStateBit(int bit)
    Parameters
    Type Name Description
    int bit

    The position of the bit.

    Returns
    Type Description
    bool

    The value of the state bit at position bit.

    | Edit this page View Source

    Init(bool, bool, Direction, Direction)

    Initializes the subroutine. Must be called by each amoebot on the chain that stores a and b.

    Declaration
    public void Init(bool a, bool b, Direction predDir, Direction succDir)
    Parameters
    Type Name Description
    bool a

    This amoebot's bit of a.

    bool b

    This amoebot's bit of b.

    Direction predDir

    The direction of the predecessor. Should be NONE only at the start of the chain.

    Direction succDir

    The direction of the successor. Should be NONE only at the end of the chain.

    | Edit this page View Source

    IsFinished()

    Checks whether the procedure is finished. Should be called after ActivateReceive().

    Declaration
    public bool IsFinished()
    Returns
    Type Description
    bool

    true if and only if the comparison procedure has finished.

    | Edit this page View Source

    PredDir()

    Helper for reading the predecessor direction from the state integer.

    Declaration
    private Direction PredDir()
    Returns
    Type Description
    Direction

    The direction of the chain predecessor.

    | Edit this page View Source

    Result()

    Returns the result of the comparison after the procedure has finished.

    Declaration
    public SubComparison.ComparisonResult Result()
    Returns
    Type Description
    SubComparison.ComparisonResult

    The result of comparing a to b.

    | Edit this page View Source

    Round()

    Helper for reading the round number from the state integer.

    Declaration
    private int Round()
    Returns
    Type Description
    int

    The current round number.

    | Edit this page View Source

    SetResult(ComparisonResult)

    Helper for setting the comparison result.

    Declaration
    private void SetResult(SubComparison.ComparisonResult result)
    Parameters
    Type Name Description
    SubComparison.ComparisonResult result

    The new value of the result.

    | Edit this page View Source

    SetRound(int)

    Helper for setting the round counter.

    Declaration
    private void SetRound(int round)
    Parameters
    Type Name Description
    int round

    The new value of the round counter.

    | Edit this page View Source

    SetStateBit(int, bool)

    Helper for setting a single bit from the state integer.

    Declaration
    private void SetStateBit(int bit, bool value)
    Parameters
    Type Name Description
    int bit

    The position of the bit.

    bool value

    The new value of the bit.

    | Edit this page View Source

    SetupPinConfig(PinConfiguration)

    Sets up the required circuits for the next step in the given pin configuration. This must be called after ActivateReceive() and before ActivateSend().

    Declaration
    public void SetupPinConfig(PinConfiguration pc)
    Parameters
    Type Name Description
    PinConfiguration pc

    The pin configuration to set up. Partition set IDs will always equal one of the IDs of the contained pins.

    | Edit this page View Source

    SuccDir()

    Helper for reading the successor direction from the state integer.

    Declaration
    private Direction SuccDir()
    Returns
    Type Description
    Direction

    The direction of the chain successor.

    • Edit this page
    • View Source
    In this article
    Back to top AmoebotSim 2.0 Documentation v1.11
    Copyright © 2025 AmoebotSim 2.0 Authors
    Generated by DocFX