aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammad Sajid Anwar <Mohammad.Anwar@yahoo.com>2025-05-18 23:24:24 +0100
committerGitHub <noreply@github.com>2025-05-18 23:24:24 +0100
commit07168b318d6ba57749192c91021e76f82ff174f4 (patch)
treeccc0cd2e0e0c657f5147074b4429e4c33e8bf37b
parent06aad1823095b3d094fdbe8eed699511be66482c (diff)
parent3adcb0c7af696412d25e4bd77126b606cb762e0d (diff)
downloadperlweeklychallenge-club-07168b318d6ba57749192c91021e76f82ff174f4.tar.gz
perlweeklychallenge-club-07168b318d6ba57749192c91021e76f82ff174f4.tar.bz2
perlweeklychallenge-club-07168b318d6ba57749192c91021e76f82ff174f4.zip
Merge pull request #12040 from adamcrussell/challenge-321
initial commit
-rw-r--r--challenge-321/adam-russell/blog.txt1
-rw-r--r--challenge-321/adam-russell/blog1.txt1
-rw-r--r--challenge-321/adam-russell/perl/ch-1.pl28
-rw-r--r--challenge-321/adam-russell/perl/ch-2.pl30
-rw-r--r--challenge-321/adam-russell/prolog/ch-1.p18
-rw-r--r--challenge-321/adam-russell/prolog/ch-2.p25
6 files changed, 103 insertions, 0 deletions
diff --git a/challenge-321/adam-russell/blog.txt b/challenge-321/adam-russell/blog.txt
new file mode 100644
index 0000000000..5161a27edd
--- /dev/null
+++ b/challenge-321/adam-russell/blog.txt
@@ -0,0 +1 @@
+http://www.rabbitfarm.com/cgi-bin/blosxom/perl/2025/05/18
diff --git a/challenge-321/adam-russell/blog1.txt b/challenge-321/adam-russell/blog1.txt
new file mode 100644
index 0000000000..286d8c1845
--- /dev/null
+++ b/challenge-321/adam-russell/blog1.txt
@@ -0,0 +1 @@
+http://www.rabbitfarm.com/cgi-bin/blosxom/prolog/2025/05/18
diff --git a/challenge-321/adam-russell/perl/ch-1.pl b/challenge-321/adam-russell/perl/ch-1.pl
new file mode 100644
index 0000000000..dd59d22c05
--- /dev/null
+++ b/challenge-321/adam-russell/perl/ch-1.pl
@@ -0,0 +1,28 @@
+
+
+use v5.40;
+
+
+ sub distinct_average{
+ my @numbers =
+ sort {$a <=> $b} @_;
+
+ my %averages;
+
+ for my $i (0 .. (@numbers / 2)){
+ my($x, $y) = ($numbers[$i], $numbers[@numbers - 1 - $i]);
+ $averages{
+ sprintf(q/%0.7f/, (($x + $y)/2))
+} = undef;
+ }
+
+ return 0 + keys %averages;
+ }
+
+
+MAIN:{
+ say distinct_average 1, 2, 4, 3, 5, 6;
+ say distinct_average 0, 2, 4, 8, 3, 5;
+ say distinct_average 7, 3, 1, 0, 5, 9;
+}
+
diff --git a/challenge-321/adam-russell/perl/ch-2.pl b/challenge-321/adam-russell/perl/ch-2.pl
new file mode 100644
index 0000000000..8e1e347f09
--- /dev/null
+++ b/challenge-321/adam-russell/perl/ch-2.pl
@@ -0,0 +1,30 @@
+
+
+use v5.40;
+
+
+ sub backspace_compare{
+ my($s, $t) = @_;
+ my @s = split //, $s;
+ my @t = split //, $t;
+ my @u = ();
+ my @v = ();
+ {
+ my $s_ = shift @s || undef;
+ my $t_ = shift @t || undef;
+ push @u, $s_ if $s_ && $s_ ne q/#/;
+ push @v, $t_ if $t_ && $t_ ne q/#/;
+ pop @u if $s_ && $s_ eq q/#/;
+ pop @v if $t_ && $t_ eq q/#/;
+ redo if @s || @t;
+ }
+ return join(q//, @u) eq join(q//, @v)?q/true/:q/false/;
+ }
+
+
+MAIN:{
+ say backspace_compare q/ab#c/, q/ad#c/;
+ say backspace_compare q/ab##/, q/a#b#/;
+ say backspace_compare q/a#b/, q/c/;
+}
+
diff --git a/challenge-321/adam-russell/prolog/ch-1.p b/challenge-321/adam-russell/prolog/ch-1.p
new file mode 100644
index 0000000000..a1a9de95c0
--- /dev/null
+++ b/challenge-321/adam-russell/prolog/ch-1.p
@@ -0,0 +1,18 @@
+
+
+ first_last([], []).
+ first_last(Numbers, FirstLastPairs):-
+ nth(1, Numbers, First),
+ last(Numbers, Last),
+ append([First|Rest], [Last], Numbers),
+ first_last(Rest, FirstLastPairs0),
+ append([[First, Last]], FirstLastPairs0, FirstLastPairs).
+
+
+ distinct_average(Numbers, DistinctAverage):-
+ sort(Numbers, NumbersSorted),
+ first_last(NumbersSorted, MinimumMaximumPairs),
+ maplist(sum_list, MinimumMaximumPairs, MinimumMaximumSums),
+ sort(MinimumMaximumSums, MinimumMaximumSumsSorted),
+ length(MinimumMaximumSumsSorted, DistinctAverage).
+
diff --git a/challenge-321/adam-russell/prolog/ch-2.p b/challenge-321/adam-russell/prolog/ch-2.p
new file mode 100644
index 0000000000..82ce8c4ed7
--- /dev/null
+++ b/challenge-321/adam-russell/prolog/ch-2.p
@@ -0,0 +1,25 @@
+
+
+ characters(Characters), [Characters] --> [Characters].
+ characters(C, Characters), [Characters] --> [C].
+
+
+ process(String) --> characters(C, Characters),
+ {String = [Code | Codes],
+ last(C, PreviousCharacter),
+ ((Code \== 35, char_code(C0, Code),
+ append(C, [C0], Characters));
+ (append(Characters, [PreviousCharacter], C))), !},
+ process(Codes).
+ process([]) --> [].
+
+
+ backspace_compare(String1, String2):-
+ phrase(process(String1), [['']], [R1]),
+ delete(R1, '', R2),
+ atom_chars(Result1, R2),
+ phrase(process(String2), [['']], [R3]),
+ delete(R3, '', R4),
+ atom_chars(Result2, R4),
+ Result1 == Result2.
+