Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix: P2D #497

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open

fix: P2D #497

wants to merge 1 commit into from

Commits on Apr 29, 2024

  1. fix: P2D

    The previous implementation could give an incorrect result when the
    first node was not a root node.
    
    Example:
    
    P2D 0 2 2
    
    correctly returns:
    
    0 1 0    0 2 1
    
    However
    
    P2D 1 1
    
    returns
    
    1 0    0 1
    
    Therefore, it says that no permutation is necessary to have the
    depth-first traversal.
    
    The reason is that, in the matrix `(-1+d)↑⍤0 1⊢⌽z`, a zero can either
    mean the index of a node or an element used to fill the empty positions.
    
    In the last example, `(-1+d)↑⍤0 1⊢⌽z` is:
    
    1 0  <- path of the node is 1 0
    1 0  <- path of the node is 1
    
    Grade Up says that rows of this matrix are already sorted.
    
    A quick fix is just to add one to the matrix z. Therefore,
    we have instead `(-1+d)↑⍤0 1⊢⌽1+z)` which is in our example:
    
    2 1
    2 0
    
    And we have the expected result:
    
    >> P2D 1 1
    
    1 0     1 0
    
    Notes:
    - There are no issue when the first node is a root node.
    - There is no issue when `⎕IO` is equal to 1. Actually, the value we
      need to add to z is `1 - ⎕IO`, if we wanted a solution that works
      for any value of `⎕IO`.
    axiles committed Apr 29, 2024
    Configuration menu
    Copy the full SHA
    aca314e View commit details
    Browse the repository at this point in the history