From 51577219a07ba3e9f49aaa4e0ec88ae77961702c Mon Sep 17 00:00:00 2001 From: deadmarshal Date: Tue, 11 Feb 2025 10:20:14 +0330 Subject: TWC304 --- challenge-304/deadmarshal/blog.txt | 1 + challenge-304/deadmarshal/java/Ch1.java | 14 +++++++++++ challenge-304/deadmarshal/java/Ch2.java | 17 +++++++++++++ challenge-304/deadmarshal/modula-3/ch1/src/Ch1.m3 | 22 ++++++++++++++++ .../deadmarshal/modula-3/ch1/src/m3makefile | 5 ++++ challenge-304/deadmarshal/modula-3/ch2/src/Ch2.m3 | 29 ++++++++++++++++++++++ .../deadmarshal/modula-3/ch2/src/m3makefile | 5 ++++ challenge-304/deadmarshal/perl/ch-1.pl | 13 ++++++++++ challenge-304/deadmarshal/perl/ch-2.pl | 20 +++++++++++++++ 9 files changed, 126 insertions(+) create mode 100644 challenge-304/deadmarshal/blog.txt create mode 100644 challenge-304/deadmarshal/java/Ch1.java create mode 100644 challenge-304/deadmarshal/java/Ch2.java create mode 100644 challenge-304/deadmarshal/modula-3/ch1/src/Ch1.m3 create mode 100644 challenge-304/deadmarshal/modula-3/ch1/src/m3makefile create mode 100644 challenge-304/deadmarshal/modula-3/ch2/src/Ch2.m3 create mode 100644 challenge-304/deadmarshal/modula-3/ch2/src/m3makefile create mode 100644 challenge-304/deadmarshal/perl/ch-1.pl create mode 100644 challenge-304/deadmarshal/perl/ch-2.pl diff --git a/challenge-304/deadmarshal/blog.txt b/challenge-304/deadmarshal/blog.txt new file mode 100644 index 0000000000..f09eac24a6 --- /dev/null +++ b/challenge-304/deadmarshal/blog.txt @@ -0,0 +1 @@ +https://deadmarshal.blogspot.com/2025/02/twc304.html diff --git a/challenge-304/deadmarshal/java/Ch1.java b/challenge-304/deadmarshal/java/Ch1.java new file mode 100644 index 0000000000..2dc974388d --- /dev/null +++ b/challenge-304/deadmarshal/java/Ch1.java @@ -0,0 +1,14 @@ +public class Ch1 { + public static void main(String[] args) { + System.out.println(arrange_binary(new int[]{1, 0, 0, 0, 1}, 1)); + System.out.println(arrange_binary(new int[]{1, 0, 0, 0, 1}, 2)); + } + + private static boolean arrange_binary(int[] nums, int n) { + int c = 0; + for (int i = 0; i < nums.length - 1; ++i) + if (nums[i] == 0 && nums[i + 1] == 0) c++; + return c > n; + } +} + diff --git a/challenge-304/deadmarshal/java/Ch2.java b/challenge-304/deadmarshal/java/Ch2.java new file mode 100644 index 0000000000..4e28cacb96 --- /dev/null +++ b/challenge-304/deadmarshal/java/Ch2.java @@ -0,0 +1,17 @@ +public class Ch2 { + public static void main(String[] args) { + System.out.println(maximum_average(new int[]{1, 12, -5, -6, 50, 3}, 4)); + System.out.println(maximum_average(new int[]{5}, 1)); + } + + private static double maximum_average(int[] nums, int n) { + double max = 0, avg; + for (int start = 0; start <= nums.length - n; ++start) { + double subsum = 0; + for (int i = start; i < start + n; ++i) subsum += nums[i]; + avg = subsum / n; + if (avg > max) max = avg; + } + return max; + } +} diff --git a/challenge-304/deadmarshal/modula-3/ch1/src/Ch1.m3 b/challenge-304/deadmarshal/modula-3/ch1/src/Ch1.m3 new file mode 100644 index 0000000000..666683ecee --- /dev/null +++ b/challenge-304/deadmarshal/modula-3/ch1/src/Ch1.m3 @@ -0,0 +1,22 @@ +MODULE Ch1 EXPORTS Main; + +IMPORT SIO; + +VAR + A := ARRAY[0..4] OF INTEGER{1,0,0,0,1}; + +PROCEDURE ArrangeBinary(VAR A:ARRAY OF INTEGER; + READONLY N:INTEGER):BOOLEAN = + VAR Count:INTEGER; + BEGIN + FOR I := FIRST(A) TO LAST(A)-1 DO + IF A[I] = 0 AND A[I+1] = 0 THEN INC(Count) END + END; + RETURN Count > N + END ArrangeBinary; + +BEGIN + SIO.PutBool(ArrangeBinary(A,1)); SIO.Nl(); + SIO.PutBool(ArrangeBinary(A,2)); SIO.Nl() +END Ch1. + diff --git a/challenge-304/deadmarshal/modula-3/ch1/src/m3makefile b/challenge-304/deadmarshal/modula-3/ch1/src/m3makefile new file mode 100644 index 0000000000..9f66e4a51f --- /dev/null +++ b/challenge-304/deadmarshal/modula-3/ch1/src/m3makefile @@ -0,0 +1,5 @@ +import("libm3") +import("libsio") +implementation("Ch1") +program("ch1") + diff --git a/challenge-304/deadmarshal/modula-3/ch2/src/Ch2.m3 b/challenge-304/deadmarshal/modula-3/ch2/src/Ch2.m3 new file mode 100644 index 0000000000..61283fa8ff --- /dev/null +++ b/challenge-304/deadmarshal/modula-3/ch2/src/Ch2.m3 @@ -0,0 +1,29 @@ +MODULE Ch2 EXPORTS Main; + +IMPORT SIO; + +VAR + A1 := ARRAY[0..5] OF INTEGER{1,12,-5,-6,50,3}; + A2 := ARRAY[0..0] OF INTEGER{5}; + +PROCEDURE MaximumAverage(VAR A:ARRAY OF INTEGER; + READONLY N:INTEGER):LONGREAL = + VAR + Max,SubSum,Avg:LONGREAL; + BEGIN + FOR Start := FIRST(A) TO NUMBER(A) - N DO + FOR I := Start TO Start+N-1 DO + SubSum := SubSum + FLOAT(A[I],LONGREAL) + END; + Avg := SubSum / FLOAT(N,LONGREAL); + IF Avg > Max THEN Max := Avg END; + SubSum := 0.0D0; + END; + RETURN Max + END MaximumAverage; + +BEGIN + SIO.PutLongReal(MaximumAverage(A1,4)); SIO.Nl(); + SIO.PutLongReal(MaximumAverage(A2,1)); SIO.Nl() +END Ch2. + diff --git a/challenge-304/deadmarshal/modula-3/ch2/src/m3makefile b/challenge-304/deadmarshal/modula-3/ch2/src/m3makefile new file mode 100644 index 0000000000..798c627ef3 --- /dev/null +++ b/challenge-304/deadmarshal/modula-3/ch2/src/m3makefile @@ -0,0 +1,5 @@ +import("libm3") +import("libsio") +implementation("Ch2") +program("ch2") + diff --git a/challenge-304/deadmarshal/perl/ch-1.pl b/challenge-304/deadmarshal/perl/ch-1.pl new file mode 100644 index 0000000000..a2ab4bb138 --- /dev/null +++ b/challenge-304/deadmarshal/perl/ch-1.pl @@ -0,0 +1,13 @@ +#!/usr/bin/env perl +use strict; +use warnings; + +sub arrange_binary{ + my $c = 0; + map{$c++ if $_[0]->[$_] == 0 && $_[0]->[$_+1] == 0} 0..$#{$_[0]}-1; + $c > $_[1] +} + +printf "%d\n",arrange_binary([1,0,0,0,1],1); +printf "%d\n",arrange_binary([1,0,0,0,1],2); + diff --git a/challenge-304/deadmarshal/perl/ch-2.pl b/challenge-304/deadmarshal/perl/ch-2.pl new file mode 100644 index 0000000000..4860fe580d --- /dev/null +++ b/challenge-304/deadmarshal/perl/ch-2.pl @@ -0,0 +1,20 @@ +#!/usr/bin/env perl +use strict; +use warnings; +use List::Util qw(sum0 min); +use feature qw(say); + +sub maximum_average{ + my ($arr,$n) = @_; + my $max = min @$arr; + foreach my $start(0..@$arr-$n){ + my $subsum = sum0(@{$arr}[$start..$start+$n-1]); + my $avg = $subsum / $n; + $max = $avg if $avg > $max + } + $max +} + +say maximum_average([1,12,-5,-6,50,3],4); +say maximum_average([5],1); + -- cgit