aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuca Ferrari <fluca1978@gmail.com>2020-07-06 12:21:32 +0200
committerLuca Ferrari <fluca1978@gmail.com>2020-07-06 12:21:32 +0200
commit0b5a96e630033abba50ba625f2a676c3160de0cd (patch)
tree22a656c1eae4e0b369b0521769d15cd9706cf1f5
parent54067ab989c59da0a13e3b8a3fd1ade715ae9496 (diff)
downloadperlweeklychallenge-club-0b5a96e630033abba50ba625f2a676c3160de0cd.tar.gz
perlweeklychallenge-club-0b5a96e630033abba50ba625f2a676c3160de0cd.tar.bz2
perlweeklychallenge-club-0b5a96e630033abba50ba625f2a676c3160de0cd.zip
Task2 done.
-rw-r--r--challenge-068/luca-ferrari/raku/ch-2.p652
1 files changed, 52 insertions, 0 deletions
diff --git a/challenge-068/luca-ferrari/raku/ch-2.p6 b/challenge-068/luca-ferrari/raku/ch-2.p6
new file mode 100644
index 0000000000..c8e92d20a9
--- /dev/null
+++ b/challenge-068/luca-ferrari/raku/ch-2.p6
@@ -0,0 +1,52 @@
+#!raku
+
+class Node {
+ has Str $.value is rw;
+ has Node $.next is rw;
+}
+
+
+sub MAIN() {
+ # build the list
+ my Node $root = Node.new( :value( "L0" ) );
+ my Node $current-node = $root;
+ for 0 ^..^ 10 {
+ $current-node.next = Node.new( :value( "L$_" ) );
+ $current-node = $current-node.next;
+ }
+
+
+
+ # convert into an array
+ my @nodes;
+ $current-node = $root;
+ while ( $current-node ) {
+ @nodes.push: $current-node;
+ $current-node = $current-node.next;
+ }
+
+
+ # sort into another array
+ my @new-nodes;
+ for 0 ..^ @nodes.elems / 2 {
+ "switching elements $_ and { @nodes.elems - $_ - 1 }".say;
+ @new-nodes.push: @nodes[ $_ ];
+ @new-nodes.push: @nodes[ @nodes.elems - $_ -1 ];
+
+ }
+
+ # debug printing
+ # for 0 ..^ @new-nodes.elems {
+ # say @new-nodes[ $_ ].value;
+ # }
+
+ # now adjust linked references
+ for 0 ..^ @new-nodes.elems - 1 {
+ @new-nodes[ $_ ].next = @new-nodes[ $_ + 1 ];
+ }
+
+ @new-nodes[ @new-nodes.elems - 1 ].next = Nil;
+
+ # all done
+ $root.say;
+}