Retired

Transform the graph (retired)

Description
Loading description...
Data Structures
Algorithms
  • Please sign in or sign up to leave a comment.
  • Blind4Basics Avatar
    Traceback (most recent call last):
      File "tests.py", line 1, in <module>
        from solution import adj_list_to_matrix
      File "/workspace/default/solution.py", line 3
      ...
                            
    IndentationError: unindent does not match any outer indentation level
    

    you need to remove the tabulation character in the initial solution, and replace it with 4 whitespaces (or a tab char, but produced through cw's editor: cw is using exclusively whispaces, replacing tab char automatically, and this code comes from your editor which uses actual tabulation char. And this is annoying for the user, because it raises this error.

    Cheers

  • rowcased Avatar

    Random test input is subject to manipulation.

    • nevepura Avatar

      How, exactly? Could you write it in a comment marking it as spoiler?

    • rowcased Avatar

      This comment has been hidden.

    • nevepura Avatar

      Right. The input data could be forged. I didn't think about that. That wasn't in the spirit of the problem solving, but still possible. Fixed now, thanks.

    • Blind4Basics Avatar

      Fixed now, thanks.

      Not yet: you only did a shallow copy. Meaning the sets are still mutable on the user side with side effect. So:

      • either do a deep copy
      • or don't do any copy at all, but compute the expected result and the error message before you call to the user's function.

      cheers

      edit: actually, just remove the message: this is exactly what the default message is supposed to be, so you're actually printing it 2 times (the provided message is always added to the default one)

    • nevepura Avatar

      either do a deep copy or don't do any copy at all, but compute the expected result before you call to the user's function.

      Done both :smile:

  • Blind4Basics Avatar

    Hi,

    Afaik, the input isn't an adjacency list, but a dict of sets of successors. An adjacency list would be represented by a list of lists of successors (btw, it's rather obvious with the examples, but you should clearly specify that only directed graphs will be used).

    Cheers

    • nevepura Avatar

      Yes. I had the doubt about how to represent the adjacency list. I've seen it represented both as list (of sets of successors) and as dictionary. As a dictionary it is convenient in some cases. In this problem it's the same. Do you think I should change it, and put the list?

      About the directed graph, sure, you are right, i'll edit the description. Thanks.

    • Blind4Basics Avatar

      no, you can keep the current setup, just update the description, talking about dict of successors (and the orientation thing).

    • nevepura Avatar

      Before editing, there's only one thing I disagree with. I'd say "dictionary of sets of ints" and not "dictionary of sets of successors". I don't see how the sets contain successors: the elements of a set aren't ordered nor contiguous. Only in some example they look like so, but actually they are not. So, any reason for "successors" to be there?

    • Blind4Basics Avatar

      No, that wouldn't be enough if not actually incorrect.
      In your example, 2 is the successor of 1 because there is an arc going from 1 to 2. that has absolutely nothing to do with the numbers themselves, but only with the "configuration" of the graph itself. As a matter of fact, 2 is a successor of 3 as well as 3 is a successor of 2. Limiting the wording to "dict of sets of ints" is sort of forgetting half of the reason why you build that structure (because one could provide the very same graph as a dict of sets of predecessors, and then you wouldn't have the same dict while both structures are describing the very same graph).

    • nevepura Avatar

      Alright, now i've caught up with terminology. Edited the description, how is it now?

    • Blind4Basics Avatar

      all good, except I'd change the first 2 lines:

      You have a directed graph, with nodes numbered progressively from 1 to N. Graphs can be represented in many ways.
      In this problem, you are given a graph in the form of a dictionary of sets of successors. Return the corresponding adjacency matrix.

      to:

      Graphs can be represented in many ways.
      In this problem, you are given a directed graph in the form of a dictionary of sets of successors and you need to return the corresponding adjacency matrix. Nodes are numbered from 1 to N.

    • nevepura Avatar

      I like it. Updated. Slightly changed: i've put the last purpose in the input section. Marking this as solved.

      Issue marked resolved by nevepura 4 years ago