-
Notifications
You must be signed in to change notification settings - Fork 8
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat: Replace
Tuple
with unary sums (#891)
Closes #864. Updates the `Display` impl of `Sum` as part of this change, so ```mermaid graph LR subgraph 0 ["(0) CFG"] direction LR subgraph 2 ["(2) DataflowBlock"] direction LR 3["(3) Input"] 3--"0:0<br>usize"-->5 4["(4) Output"] 5["(5) Tag"] 5--"0:0<br>Sum(General([TypeRow { types: [Type(Extension(CustomType { extension: IdentList(#quot;prelude#quot;), id: #quot;usize#quot;, args: [], bound: Eq }), Eq)] }, TypeRow { types: [Type(Extension(CustomType { extension: IdentList(#quot;prelude#quot;), id: #quot;usize#quot;, args: [], bound: Eq }), Eq)] }]))"-->4 end 2-."0:0".->6 2-."1:0".->1 1["(1) ExitBlock"] subgraph 6 ["(6) DataflowBlock"] direction LR 7["(7) Input"] 7--"0:1<br>usize"-->8 8["(8) Output"] 9["(9) const:sum:{tag:0, vals:[]}"] 9--"0:0<br>Sum(UnitSum(1))"-->10 10["(10) LoadConstant"] 10--"0:0<br>Sum(UnitSum(1))"-->8 end 6-."0:0".->1 end ``` is now rendered as ```mermaid graph LR subgraph 0 ["(0) CFG"] direction LR subgraph 2 ["(2) DataflowBlock"] direction LR 3["(3) Input"] 3--"0:0<br>usize"-->5 4["(4) Output"] 5["(5) Tag"] 5--"0:0<br>[usize]+[usize]"-->4 end 2-."0:0".->6 2-."1:0".->1 1["(1) ExitBlock"] subgraph 6 ["(6) DataflowBlock"] direction LR 7["(7) Input"] 7--"0:1<br>usize"-->8 8["(8) Output"] 9["(9) const:sum:{tag:0, vals:[]}"] 9--"0:0<br>[]"-->10 10["(10) LoadConstant"] 10--"0:0<br>[]"-->8 end 6-."0:0".->1 end ``` And tuples appear directly as `[usize, usize, ...]`. We were incorrectly using the debug formatter for the internal types. drive-by: Add rust snapshots to the pre-commit ignores. We don't want it to modify whitespaces.
- Loading branch information
Showing
16 changed files
with
159 additions
and
80 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
45 changes: 43 additions & 2 deletions
45
quantinuum-hugr/src/hugr/views/snapshots/hugr__hugr__views__tests__dot_cfg.snap
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,5 +1,46 @@ | ||
--- | ||
source: src/hugr/views/tests.rs | ||
source: quantinuum-hugr/src/hugr/views/tests.rs | ||
expression: h.dot_string() | ||
--- | ||
"digraph {\n0 [shape=plain label=<<table border=\"1\"><tr><td align=\"text\" border=\"0\" colspan=\"1\">(0) CFG</td></tr></table>>]\n1 [shape=plain label=<<table border=\"1\"><tr><td port=\"in0\" align=\"text\" colspan=\"1\" cellpadding=\"1\" border=\"0\">0</td></tr><tr><td align=\"text\" border=\"0\" colspan=\"1\">(1) ExitBlock</td></tr></table>>]\n2 [shape=plain label=<<table border=\"1\"><tr><td port=\"in0\" align=\"text\" colspan=\"2\" cellpadding=\"1\" border=\"0\">0</td></tr><tr><td align=\"text\" border=\"0\" colspan=\"2\">(2) DataflowBlock</td></tr><tr><td port=\"out0\" align=\"text\" colspan=\"1\" cellpadding=\"1\" border=\"0\">0</td><td port=\"out1\" align=\"text\" colspan=\"1\" cellpadding=\"1\" border=\"0\">1</td></tr></table>>]\n2:out0 -> 6:in0 [style=\"dashed\"]\n2:out1 -> 1:in0 [style=\"dashed\"]\n3 [shape=plain label=<<table border=\"1\"><tr><td align=\"text\" border=\"0\" colspan=\"1\">(3) Input</td></tr><tr><td port=\"out0\" align=\"text\" colspan=\"1\" cellpadding=\"1\" >0: usize</td></tr></table>>]\n3:out0 -> 5:in0 [style=\"\"]\n4 [shape=plain label=<<table border=\"1\"><tr><td port=\"in0\" align=\"text\" colspan=\"1\" cellpadding=\"1\" >0: Sum(General([TypeRow { types: [Type(Extension(CustomType { extension: IdentList(\"prelude\"), id: \"usize\", args: [], bound: Eq }), Eq)] }, TypeRow { types: [Type(Extension(CustomType { extension: IdentList(\"prelude\"), id: \"usize\", args: [], bound: Eq }), Eq)] }]))</td></tr><tr><td align=\"text\" border=\"0\" colspan=\"1\">(4) Output</td></tr></table>>]\n5 [shape=plain label=<<table border=\"1\"><tr><td port=\"in0\" align=\"text\" colspan=\"1\" cellpadding=\"1\" >0: usize</td></tr><tr><td align=\"text\" border=\"0\" colspan=\"1\">(5) Tag</td></tr><tr><td port=\"out0\" align=\"text\" colspan=\"1\" cellpadding=\"1\" >0: Sum(General([TypeRow { types: [Type(Extension(CustomType { extension: IdentList(\"prelude\"), id: \"usize\", args: [], bound: Eq }), Eq)] }, TypeRow { types: [Type(Extension(CustomType { extension: IdentList(\"prelude\"), id: \"usize\", args: [], bound: Eq }), Eq)] }]))</td></tr></table>>]\n5:out0 -> 4:in0 [style=\"\"]\n6 [shape=plain label=<<table border=\"1\"><tr><td port=\"in0\" align=\"text\" colspan=\"1\" cellpadding=\"1\" border=\"0\">0</td></tr><tr><td align=\"text\" border=\"0\" colspan=\"1\">(6) DataflowBlock</td></tr><tr><td port=\"out0\" align=\"text\" colspan=\"1\" cellpadding=\"1\" border=\"0\">0</td></tr></table>>]\n6:out0 -> 1:in0 [style=\"dashed\"]\n7 [shape=plain label=<<table border=\"1\"><tr><td align=\"text\" border=\"0\" colspan=\"1\">(7) Input</td></tr><tr><td port=\"out0\" align=\"text\" colspan=\"1\" cellpadding=\"1\" >0: usize</td></tr></table>>]\n7:out0 -> 8:in1 [style=\"\"]\n8 [shape=plain label=<<table border=\"1\"><tr><td port=\"in0\" align=\"text\" colspan=\"1\" cellpadding=\"1\" >0: Sum(UnitSum(1))</td><td port=\"in1\" align=\"text\" colspan=\"1\" cellpadding=\"1\" >1: usize</td></tr><tr><td align=\"text\" border=\"0\" colspan=\"2\">(8) Output</td></tr></table>>]\n9 [shape=plain label=<<table border=\"1\"><tr><td align=\"text\" border=\"0\" colspan=\"1\">(9) const:sum:{tag:0, vals:[]}</td></tr><tr><td port=\"out0\" align=\"text\" colspan=\"1\" cellpadding=\"1\" >0: Sum(UnitSum(1))</td></tr></table>>]\n9:out0 -> 10:in0 [style=\"\"]\n10 [shape=plain label=<<table border=\"1\"><tr><td port=\"in0\" align=\"text\" colspan=\"1\" cellpadding=\"1\" >0: Sum(UnitSum(1))</td></tr><tr><td align=\"text\" border=\"0\" colspan=\"1\">(10) LoadConstant</td></tr><tr><td port=\"out0\" align=\"text\" colspan=\"1\" cellpadding=\"1\" >0: Sum(UnitSum(1))</td></tr></table>>]\n10:out0 -> 8:in0 [style=\"\"]\nhier0 [shape=plain label=\"0\"]\nhier0 -> hier2 [style = \"dashed\"] \nhier0 -> hier1 [style = \"dashed\"] \nhier0 -> hier6 [style = \"dashed\"] \nhier1 [shape=plain label=\"1\"]\nhier2 [shape=plain label=\"2\"]\nhier2 -> hier3 [style = \"dashed\"] \nhier2 -> hier4 [style = \"dashed\"] \nhier2 -> hier5 [style = \"dashed\"] \nhier3 [shape=plain label=\"3\"]\nhier4 [shape=plain label=\"4\"]\nhier5 [shape=plain label=\"5\"]\nhier6 [shape=plain label=\"6\"]\nhier6 -> hier7 [style = \"dashed\"] \nhier6 -> hier8 [style = \"dashed\"] \nhier6 -> hier9 [style = \"dashed\"] \nhier6 -> hier10 [style = \"dashed\"] \nhier7 [shape=plain label=\"7\"]\nhier8 [shape=plain label=\"8\"]\nhier9 [shape=plain label=\"9\"]\nhier10 [shape=plain label=\"10\"]\n}\n" | ||
digraph { | ||
0 [shape=plain label=<<table border="1"><tr><td align="text" border="0" colspan="1">(0) CFG</td></tr></table>>] | ||
1 [shape=plain label=<<table border="1"><tr><td port="in0" align="text" colspan="1" cellpadding="1" border="0">0</td></tr><tr><td align="text" border="0" colspan="1">(1) ExitBlock</td></tr></table>>] | ||
2 [shape=plain label=<<table border="1"><tr><td port="in0" align="text" colspan="2" cellpadding="1" border="0">0</td></tr><tr><td align="text" border="0" colspan="2">(2) DataflowBlock</td></tr><tr><td port="out0" align="text" colspan="1" cellpadding="1" border="0">0</td><td port="out1" align="text" colspan="1" cellpadding="1" border="0">1</td></tr></table>>] | ||
2:out0 -> 6:in0 [style="dashed"] | ||
2:out1 -> 1:in0 [style="dashed"] | ||
3 [shape=plain label=<<table border="1"><tr><td align="text" border="0" colspan="1">(3) Input</td></tr><tr><td port="out0" align="text" colspan="1" cellpadding="1" >0: usize</td></tr></table>>] | ||
3:out0 -> 5:in0 [style=""] | ||
4 [shape=plain label=<<table border="1"><tr><td port="in0" align="text" colspan="1" cellpadding="1" >0: [usize]+[usize]</td></tr><tr><td align="text" border="0" colspan="1">(4) Output</td></tr></table>>] | ||
5 [shape=plain label=<<table border="1"><tr><td port="in0" align="text" colspan="1" cellpadding="1" >0: usize</td></tr><tr><td align="text" border="0" colspan="1">(5) Tag</td></tr><tr><td port="out0" align="text" colspan="1" cellpadding="1" >0: [usize]+[usize]</td></tr></table>>] | ||
5:out0 -> 4:in0 [style=""] | ||
6 [shape=plain label=<<table border="1"><tr><td port="in0" align="text" colspan="1" cellpadding="1" border="0">0</td></tr><tr><td align="text" border="0" colspan="1">(6) DataflowBlock</td></tr><tr><td port="out0" align="text" colspan="1" cellpadding="1" border="0">0</td></tr></table>>] | ||
6:out0 -> 1:in0 [style="dashed"] | ||
7 [shape=plain label=<<table border="1"><tr><td align="text" border="0" colspan="1">(7) Input</td></tr><tr><td port="out0" align="text" colspan="1" cellpadding="1" >0: usize</td></tr></table>>] | ||
7:out0 -> 8:in1 [style=""] | ||
8 [shape=plain label=<<table border="1"><tr><td port="in0" align="text" colspan="1" cellpadding="1" >0: []</td><td port="in1" align="text" colspan="1" cellpadding="1" >1: usize</td></tr><tr><td align="text" border="0" colspan="2">(8) Output</td></tr></table>>] | ||
9 [shape=plain label=<<table border="1"><tr><td align="text" border="0" colspan="1">(9) const:sum:{tag:0, vals:[]}</td></tr><tr><td port="out0" align="text" colspan="1" cellpadding="1" >0: []</td></tr></table>>] | ||
9:out0 -> 10:in0 [style=""] | ||
10 [shape=plain label=<<table border="1"><tr><td port="in0" align="text" colspan="1" cellpadding="1" >0: []</td></tr><tr><td align="text" border="0" colspan="1">(10) LoadConstant</td></tr><tr><td port="out0" align="text" colspan="1" cellpadding="1" >0: []</td></tr></table>>] | ||
10:out0 -> 8:in0 [style=""] | ||
hier0 [shape=plain label="0"] | ||
hier0 -> hier2 [style = "dashed"] | ||
hier0 -> hier1 [style = "dashed"] | ||
hier0 -> hier6 [style = "dashed"] | ||
hier1 [shape=plain label="1"] | ||
hier2 [shape=plain label="2"] | ||
hier2 -> hier3 [style = "dashed"] | ||
hier2 -> hier4 [style = "dashed"] | ||
hier2 -> hier5 [style = "dashed"] | ||
hier3 [shape=plain label="3"] | ||
hier4 [shape=plain label="4"] | ||
hier5 [shape=plain label="5"] | ||
hier6 [shape=plain label="6"] | ||
hier6 -> hier7 [style = "dashed"] | ||
hier6 -> hier8 [style = "dashed"] | ||
hier6 -> hier9 [style = "dashed"] | ||
hier6 -> hier10 [style = "dashed"] | ||
hier7 [shape=plain label="7"] | ||
hier8 [shape=plain label="8"] | ||
hier9 [shape=plain label="9"] | ||
hier10 [shape=plain label="10"] | ||
} |
26 changes: 24 additions & 2 deletions
26
quantinuum-hugr/src/hugr/views/snapshots/hugr__hugr__views__tests__dot_dfg.snap
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,5 +1,27 @@ | ||
--- | ||
source: src/hugr/views/tests.rs | ||
source: quantinuum-hugr/src/hugr/views/tests.rs | ||
expression: h.dot_string() | ||
--- | ||
"digraph {\n0 [shape=plain label=<<table border=\"1\"><tr><td align=\"text\" border=\"0\" colspan=\"1\">(0) DFG</td></tr></table>>]\n1 [shape=plain label=<<table border=\"1\"><tr><td align=\"text\" border=\"0\" colspan=\"2\">(1) Input</td></tr><tr><td port=\"out0\" align=\"text\" colspan=\"1\" cellpadding=\"1\" >0: qubit</td><td port=\"out1\" align=\"text\" colspan=\"1\" cellpadding=\"1\" >1: qubit</td></tr></table>>]\n1:out0 -> 3:in0 [style=\"\"]\n1:out1 -> 3:in1 [style=\"\"]\n2 [shape=plain label=<<table border=\"1\"><tr><td port=\"in0\" align=\"text\" colspan=\"1\" cellpadding=\"1\" >0: qubit</td><td port=\"in1\" align=\"text\" colspan=\"1\" cellpadding=\"1\" >1: qubit</td></tr><tr><td align=\"text\" border=\"0\" colspan=\"2\">(2) Output</td></tr></table>>]\n3 [shape=plain label=<<table border=\"1\"><tr><td port=\"in0\" align=\"text\" colspan=\"3\" cellpadding=\"1\" >0: qubit</td><td port=\"in1\" align=\"text\" colspan=\"3\" cellpadding=\"1\" >1: qubit</td></tr><tr><td align=\"text\" border=\"0\" colspan=\"6\">(3) test.quantum.CX</td></tr><tr><td port=\"out0\" align=\"text\" colspan=\"2\" cellpadding=\"1\" >0: qubit</td><td port=\"out1\" align=\"text\" colspan=\"2\" cellpadding=\"1\" >1: qubit</td><td port=\"out2\" align=\"text\" colspan=\"2\" cellpadding=\"1\" border=\"0\"></td></tr></table>>]\n3:out0 -> 4:in1 [style=\"\"]\n3:out1 -> 4:in0 [style=\"\"]\n3:out2 -> 4:in2 [style=\"dotted\"]\n4 [shape=plain label=<<table border=\"1\"><tr><td port=\"in0\" align=\"text\" colspan=\"2\" cellpadding=\"1\" >0: qubit</td><td port=\"in1\" align=\"text\" colspan=\"2\" cellpadding=\"1\" >1: qubit</td><td port=\"in2\" align=\"text\" colspan=\"2\" cellpadding=\"1\" border=\"0\"></td></tr><tr><td align=\"text\" border=\"0\" colspan=\"6\">(4) test.quantum.CX</td></tr><tr><td port=\"out0\" align=\"text\" colspan=\"3\" cellpadding=\"1\" >0: qubit</td><td port=\"out1\" align=\"text\" colspan=\"3\" cellpadding=\"1\" >1: qubit</td></tr></table>>]\n4:out0 -> 2:in0 [style=\"\"]\n4:out1 -> 2:in1 [style=\"\"]\nhier0 [shape=plain label=\"0\"]\nhier0 -> hier1 [style = \"dashed\"] \nhier0 -> hier2 [style = \"dashed\"] \nhier0 -> hier3 [style = \"dashed\"] \nhier0 -> hier4 [style = \"dashed\"] \nhier1 [shape=plain label=\"1\"]\nhier2 [shape=plain label=\"2\"]\nhier3 [shape=plain label=\"3\"]\nhier4 [shape=plain label=\"4\"]\n}\n" | ||
digraph { | ||
0 [shape=plain label=<<table border="1"><tr><td align="text" border="0" colspan="1">(0) DFG</td></tr></table>>] | ||
1 [shape=plain label=<<table border="1"><tr><td align="text" border="0" colspan="2">(1) Input</td></tr><tr><td port="out0" align="text" colspan="1" cellpadding="1" >0: qubit</td><td port="out1" align="text" colspan="1" cellpadding="1" >1: qubit</td></tr></table>>] | ||
1:out0 -> 3:in0 [style=""] | ||
1:out1 -> 3:in1 [style=""] | ||
2 [shape=plain label=<<table border="1"><tr><td port="in0" align="text" colspan="1" cellpadding="1" >0: qubit</td><td port="in1" align="text" colspan="1" cellpadding="1" >1: qubit</td></tr><tr><td align="text" border="0" colspan="2">(2) Output</td></tr></table>>] | ||
3 [shape=plain label=<<table border="1"><tr><td port="in0" align="text" colspan="3" cellpadding="1" >0: qubit</td><td port="in1" align="text" colspan="3" cellpadding="1" >1: qubit</td></tr><tr><td align="text" border="0" colspan="6">(3) test.quantum.CX</td></tr><tr><td port="out0" align="text" colspan="2" cellpadding="1" >0: qubit</td><td port="out1" align="text" colspan="2" cellpadding="1" >1: qubit</td><td port="out2" align="text" colspan="2" cellpadding="1" border="0"></td></tr></table>>] | ||
3:out0 -> 4:in1 [style=""] | ||
3:out1 -> 4:in0 [style=""] | ||
3:out2 -> 4:in2 [style="dotted"] | ||
4 [shape=plain label=<<table border="1"><tr><td port="in0" align="text" colspan="2" cellpadding="1" >0: qubit</td><td port="in1" align="text" colspan="2" cellpadding="1" >1: qubit</td><td port="in2" align="text" colspan="2" cellpadding="1" border="0"></td></tr><tr><td align="text" border="0" colspan="6">(4) test.quantum.CX</td></tr><tr><td port="out0" align="text" colspan="3" cellpadding="1" >0: qubit</td><td port="out1" align="text" colspan="3" cellpadding="1" >1: qubit</td></tr></table>>] | ||
4:out0 -> 2:in0 [style=""] | ||
4:out1 -> 2:in1 [style=""] | ||
hier0 [shape=plain label="0"] | ||
hier0 -> hier1 [style = "dashed"] | ||
hier0 -> hier2 [style = "dashed"] | ||
hier0 -> hier3 [style = "dashed"] | ||
hier0 -> hier4 [style = "dashed"] | ||
hier1 [shape=plain label="1"] | ||
hier2 [shape=plain label="2"] | ||
hier3 [shape=plain label="3"] | ||
hier4 [shape=plain label="4"] | ||
} |
14 changes: 12 additions & 2 deletions
14
quantinuum-hugr/src/hugr/views/snapshots/hugr__hugr__views__tests__dot_empty_dfg.snap
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,5 +1,15 @@ | ||
--- | ||
source: src/hugr/views/tests.rs | ||
source: quantinuum-hugr/src/hugr/views/tests.rs | ||
expression: h.dot_string() | ||
--- | ||
"digraph {\n0 [shape=plain label=<<table border=\"1\"><tr><td align=\"text\" border=\"0\" colspan=\"1\">(0) DFG</td></tr></table>>]\n1 [shape=plain label=<<table border=\"1\"><tr><td align=\"text\" border=\"0\" colspan=\"1\">(1) Input</td></tr><tr><td port=\"out0\" align=\"text\" colspan=\"1\" cellpadding=\"1\" >0: Sum(UnitSum(2))</td></tr></table>>]\n1:out0 -> 2:in0 [style=\"\"]\n2 [shape=plain label=<<table border=\"1\"><tr><td port=\"in0\" align=\"text\" colspan=\"1\" cellpadding=\"1\" >0: Sum(UnitSum(2))</td></tr><tr><td align=\"text\" border=\"0\" colspan=\"1\">(2) Output</td></tr></table>>]\nhier0 [shape=plain label=\"0\"]\nhier0 -> hier1 [style = \"dashed\"] \nhier0 -> hier2 [style = \"dashed\"] \nhier1 [shape=plain label=\"1\"]\nhier2 [shape=plain label=\"2\"]\n}\n" | ||
digraph { | ||
0 [shape=plain label=<<table border="1"><tr><td align="text" border="0" colspan="1">(0) DFG</td></tr></table>>] | ||
1 [shape=plain label=<<table border="1"><tr><td align="text" border="0" colspan="1">(1) Input</td></tr><tr><td port="out0" align="text" colspan="1" cellpadding="1" >0: []+[]</td></tr></table>>] | ||
1:out0 -> 2:in0 [style=""] | ||
2 [shape=plain label=<<table border="1"><tr><td port="in0" align="text" colspan="1" cellpadding="1" >0: []+[]</td></tr><tr><td align="text" border="0" colspan="1">(2) Output</td></tr></table>>] | ||
hier0 [shape=plain label="0"] | ||
hier0 -> hier1 [style = "dashed"] | ||
hier0 -> hier2 [style = "dashed"] | ||
hier1 [shape=plain label="1"] | ||
hier2 [shape=plain label="2"] | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
4 changes: 2 additions & 2 deletions
4
quantinuum-hugr/src/hugr/views/snapshots/hugr__hugr__views__tests__mmd_empty_dfg.snap
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,11 +1,11 @@ | ||
--- | ||
source: src/hugr/views/tests.rs | ||
source: quantinuum-hugr/src/hugr/views/tests.rs | ||
expression: h.mermaid_string() | ||
--- | ||
graph LR | ||
subgraph 0 ["(0) DFG"] | ||
direction LR | ||
1["(1) Input"] | ||
1--"0:0<br>Sum(UnitSum(2))"-->2 | ||
1--"0:0<br>[]+[]"-->2 | ||
2["(2) Output"] | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.