From dab339db0c51221de8c50718e1c3459b916e5d73 Mon Sep 17 00:00:00 2001 From: Luca Ferrari Date: Mon, 17 Aug 2020 11:25:15 +0200 Subject: Task 1 done --- challenge-074/luca-ferrari/raku/ch-1.p6 | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 challenge-074/luca-ferrari/raku/ch-1.p6 diff --git a/challenge-074/luca-ferrari/raku/ch-1.p6 b/challenge-074/luca-ferrari/raku/ch-1.p6 new file mode 100644 index 0000000000..64bf58939d --- /dev/null +++ b/challenge-074/luca-ferrari/raku/ch-1.p6 @@ -0,0 +1,20 @@ +#!raku + +# % raku ch-1.p6 1 2 2 3 2 4 2 +# 2 +# +# % raku ch-1.p6 1 3 1 2 4 5 +# -1 + +sub MAIN( *@array where { @array.grep( * ~~ Int ).elems == @array.elems } ) { + my $N = @array.elems; + my $majority = floor( $N / 2 ); + + my %counting; + %counting{ $_ }++ for @array; + + given %counting.pairs.map( { .value >= $majority ?? $_ !! Nil } ).grep( * ~~ Pair ).unique.head { + when .so { .key.say; } + default { '-1'.say; } + } +} -- cgit From 7a0333597b5f54b5601489b8436a8b1194811a5b Mon Sep 17 00:00:00 2001 From: Luca Ferrari Date: Mon, 17 Aug 2020 12:46:26 +0200 Subject: First attempt at task 2. --- challenge-074/luca-ferrari/raku/ch-2.p6 | 35 +++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 challenge-074/luca-ferrari/raku/ch-2.p6 diff --git a/challenge-074/luca-ferrari/raku/ch-2.p6 b/challenge-074/luca-ferrari/raku/ch-2.p6 new file mode 100644 index 0000000000..78559cd9b0 --- /dev/null +++ b/challenge-074/luca-ferrari/raku/ch-2.p6 @@ -0,0 +1,35 @@ +#!raku + +sub MAIN( Str $S where { $S.chars > 2 } ) { + + my $fnr = Nil; + my @result; + my %counting; + my @chars = $S.comb( '', :skip-empty ); + for 0 ..^ @chars.elems { + my $current-char = @chars[ $_ ]; + + if ! $fnr { + $fnr = $current-char; + } + elsif $current-char ~~ $fnr { + my %counting; + %counting{ $_ }++ for @chars[ 0 .. $_ ]; + $fnr = %counting.pairs.grep( { .value == 1 && .key !~~ $current-char } ).first.key // '#'; + "selezionato $fnr".say; + } + elsif $_ !~~ $fnr { + say "$fnr $current-char"; + $fnr = $current-char; + } + else { + $fnr = '#'; + } + + + @result.push: $fnr; + + } + + @result.join.say; +} -- cgit From 837cc22c0835cb7788e06c05bb8667e15ffc01db Mon Sep 17 00:00:00 2001 From: Luca Ferrari Date: Mon, 17 Aug 2020 13:58:20 +0200 Subject: Task 2 done --- challenge-074/luca-ferrari/raku/ch-2.p6 | 41 ++++++++++++++++----------------- 1 file changed, 20 insertions(+), 21 deletions(-) diff --git a/challenge-074/luca-ferrari/raku/ch-2.p6 b/challenge-074/luca-ferrari/raku/ch-2.p6 index 78559cd9b0..2c0da8f0ea 100644 --- a/challenge-074/luca-ferrari/raku/ch-2.p6 +++ b/challenge-074/luca-ferrari/raku/ch-2.p6 @@ -2,33 +2,32 @@ sub MAIN( Str $S where { $S.chars > 2 } ) { - my $fnr = Nil; my @result; my %counting; my @chars = $S.comb( '', :skip-empty ); - for 0 ..^ @chars.elems { - my $current-char = @chars[ $_ ]; - - if ! $fnr { - $fnr = $current-char; - } - elsif $current-char ~~ $fnr { - my %counting; - %counting{ $_ }++ for @chars[ 0 .. $_ ]; - $fnr = %counting.pairs.grep( { .value == 1 && .key !~~ $current-char } ).first.key // '#'; - "selezionato $fnr".say; - } - elsif $_ !~~ $fnr { - say "$fnr $current-char"; - $fnr = $current-char; - } - else { - $fnr = '#'; - } + for 0 ..^ @chars.elems -> $index { + my $current-char = @chars[ $index ]; - @result.push: $fnr; + + # if the result array is empty + # or the char is not in the array, it is + # ok to push + @result.push( $current-char ) && next if ! @result || ! @result.grep( * ~~ $current-char ); + + + # if here I need to search for the first rightmost + # not repeating char so far + %counting = %(); + %counting{ $_ }++ for $S.substr( 0 .. $index ).comb( '', :skip-empty ); + my $fnr = $S.substr( 0 .. $index ) + .comb( '', :skip-empty ) + .reverse + .grep( { %counting{ $_ }:exists && %counting{ $_ } == 1 } ) + .first // '#'; + + @result.push: $fnr; } @result.join.say; -- cgit From 0acf598932203f380b81e64668fab70fdba60deb Mon Sep 17 00:00:00 2001 From: Luca Ferrari Date: Mon, 17 Aug 2020 14:48:05 +0200 Subject: Remove the grep --- challenge-074/luca-ferrari/raku/ch-2.p6 | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/challenge-074/luca-ferrari/raku/ch-2.p6 b/challenge-074/luca-ferrari/raku/ch-2.p6 index 2c0da8f0ea..0ce2abe239 100644 --- a/challenge-074/luca-ferrari/raku/ch-2.p6 +++ b/challenge-074/luca-ferrari/raku/ch-2.p6 @@ -23,9 +23,8 @@ sub MAIN( Str $S where { $S.chars > 2 } ) { %counting{ $_ }++ for $S.substr( 0 .. $index ).comb( '', :skip-empty ); my $fnr = $S.substr( 0 .. $index ) .comb( '', :skip-empty ) - .reverse - .grep( { %counting{ $_ }:exists && %counting{ $_ } == 1 } ) - .first // '#'; + .first( { %counting{ $_ }:exists && %counting{ $_ } == 1 } ) + // '#'; @result.push: $fnr; } -- cgit From ec6a2b9cf566b1cd53c18cbbf85b171b4656e861 Mon Sep 17 00:00:00 2001 From: Luca Ferrari Date: Mon, 17 Aug 2020 14:55:52 +0200 Subject: Blog references. --- challenge-074/luca-ferrari/blog-1.txt | 1 + challenge-074/luca-ferrari/blog-2.txt | 1 + 2 files changed, 2 insertions(+) create mode 100644 challenge-074/luca-ferrari/blog-1.txt create mode 100644 challenge-074/luca-ferrari/blog-2.txt diff --git a/challenge-074/luca-ferrari/blog-1.txt b/challenge-074/luca-ferrari/blog-1.txt new file mode 100644 index 0000000000..babe89e945 --- /dev/null +++ b/challenge-074/luca-ferrari/blog-1.txt @@ -0,0 +1 @@ +https://fluca1978.github.io/2020/08/17/PerlWeeklyChallenge74.html#task1 diff --git a/challenge-074/luca-ferrari/blog-2.txt b/challenge-074/luca-ferrari/blog-2.txt new file mode 100644 index 0000000000..d1a50f274b --- /dev/null +++ b/challenge-074/luca-ferrari/blog-2.txt @@ -0,0 +1 @@ +https://fluca1978.github.io/2020/08/17/PerlWeeklyChallenge74.html#task2 -- cgit From d4ae043c3471d42a48b0e5f680ec36824c2e6dfb Mon Sep 17 00:00:00 2001 From: Luca Ferrari Date: Mon, 17 Aug 2020 15:15:21 +0200 Subject: Fixed missing parameter. --- challenge-074/luca-ferrari/raku/ch-2.p6 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/challenge-074/luca-ferrari/raku/ch-2.p6 b/challenge-074/luca-ferrari/raku/ch-2.p6 index 0ce2abe239..e8ea2d376f 100644 --- a/challenge-074/luca-ferrari/raku/ch-2.p6 +++ b/challenge-074/luca-ferrari/raku/ch-2.p6 @@ -23,7 +23,7 @@ sub MAIN( Str $S where { $S.chars > 2 } ) { %counting{ $_ }++ for $S.substr( 0 .. $index ).comb( '', :skip-empty ); my $fnr = $S.substr( 0 .. $index ) .comb( '', :skip-empty ) - .first( { %counting{ $_ }:exists && %counting{ $_ } == 1 } ) + .first( { %counting{ $_ }:exists && %counting{ $_ } == 1 }, :end ) // '#'; @result.push: $fnr; -- cgit