diff options
| author | Mohammad Sajid Anwar <Mohammad.Anwar@yahoo.com> | 2025-05-18 23:24:24 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-05-18 23:24:24 +0100 |
| commit | 07168b318d6ba57749192c91021e76f82ff174f4 (patch) | |
| tree | ccc0cd2e0e0c657f5147074b4429e4c33e8bf37b | |
| parent | 06aad1823095b3d094fdbe8eed699511be66482c (diff) | |
| parent | 3adcb0c7af696412d25e4bd77126b606cb762e0d (diff) | |
| download | perlweeklychallenge-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.txt | 1 | ||||
| -rw-r--r-- | challenge-321/adam-russell/blog1.txt | 1 | ||||
| -rw-r--r-- | challenge-321/adam-russell/perl/ch-1.pl | 28 | ||||
| -rw-r--r-- | challenge-321/adam-russell/perl/ch-2.pl | 30 | ||||
| -rw-r--r-- | challenge-321/adam-russell/prolog/ch-1.p | 18 | ||||
| -rw-r--r-- | challenge-321/adam-russell/prolog/ch-2.p | 25 |
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. + |
