diff options
| -rw-r--r-- | challenge-323/deadmarshal/blog.txt | 1 | ||||
| -rw-r--r-- | challenge-323/deadmarshal/erlang/ch1.erl | 11 | ||||
| -rw-r--r-- | challenge-323/deadmarshal/erlang/ch2.erl | 12 | ||||
| -rw-r--r-- | challenge-323/deadmarshal/go/ch1.go | 27 | ||||
| -rw-r--r-- | challenge-323/deadmarshal/go/ch2.go | 21 | ||||
| -rw-r--r-- | challenge-323/deadmarshal/java/Ch1.java | 16 | ||||
| -rw-r--r-- | challenge-323/deadmarshal/java/Ch2.java | 17 | ||||
| -rw-r--r-- | challenge-323/deadmarshal/modula-3/Ch1/src/Ch1.m3 | 27 | ||||
| -rw-r--r-- | challenge-323/deadmarshal/modula-3/Ch1/src/m3makefile | 4 | ||||
| -rw-r--r-- | challenge-323/deadmarshal/modula-3/Ch2/src/Ch2.m3 | 35 | ||||
| -rw-r--r-- | challenge-323/deadmarshal/modula-3/Ch2/src/m3makefile | 4 | ||||
| -rw-r--r-- | challenge-323/deadmarshal/perl/ch-1.pl | 14 | ||||
| -rw-r--r-- | challenge-323/deadmarshal/perl/ch-2.pl | 18 |
13 files changed, 207 insertions, 0 deletions
diff --git a/challenge-323/deadmarshal/blog.txt b/challenge-323/deadmarshal/blog.txt new file mode 100644 index 0000000000..c2b8c8da6d --- /dev/null +++ b/challenge-323/deadmarshal/blog.txt @@ -0,0 +1 @@ +https://deadmarshal.blogspot.com/2025/05/twc323.html diff --git a/challenge-323/deadmarshal/erlang/ch1.erl b/challenge-323/deadmarshal/erlang/ch1.erl new file mode 100644 index 0000000000..4c198e46b1 --- /dev/null +++ b/challenge-323/deadmarshal/erlang/ch1.erl @@ -0,0 +1,11 @@ +-module(ch1). +-export([increment_decrement/1]). + +increment_decrement(L) -> + lists:foldl(fun(E,Acc) -> + case string:find(E,"++",leading) of + nomatch -> Acc-1; + _ -> Acc+1 + end + end,0,L). + diff --git a/challenge-323/deadmarshal/erlang/ch2.erl b/challenge-323/deadmarshal/erlang/ch2.erl new file mode 100644 index 0000000000..572cc753ff --- /dev/null +++ b/challenge-323/deadmarshal/erlang/ch2.erl @@ -0,0 +1,12 @@ +-module(ch2). +-export([tax_amount/2]). + +tax_amount(Income,Taxes) -> + tax_amount(Income,Taxes,0,0). + +tax_amount(Income,[[Upper,Percent]|T],Prev,Tax) when Income > 0 -> + Curr = Upper - Prev, + Tax2 = Tax + min(Income,Curr) * Percent / 100, + tax_amount(Income - Curr, T, Upper, Tax2); +tax_amount(_,_,_,Tax) -> Tax. + diff --git a/challenge-323/deadmarshal/go/ch1.go b/challenge-323/deadmarshal/go/ch1.go new file mode 100644 index 0000000000..afb0c3effc --- /dev/null +++ b/challenge-323/deadmarshal/go/ch1.go @@ -0,0 +1,27 @@ +package main + +import ( + "fmt" + "strings" +) + +func incrementDecrement(arr []string) int { + x := 0 + for _, v := range arr { + if strings.Contains(v, "++") { + x++ + } else { + x-- + } + } + return x +} + +func main() { + arr1 := []string{"--x", "x++", "x++"} + arr2 := []string{"x++", "++x", "x++"} + arr3 := []string{"x++", "++x", "--x", "x--"} + fmt.Println(incrementDecrement(arr1)) + fmt.Println(incrementDecrement(arr2)) + fmt.Println(incrementDecrement(arr3)) +} diff --git a/challenge-323/deadmarshal/go/ch2.go b/challenge-323/deadmarshal/go/ch2.go new file mode 100644 index 0000000000..be4b581469 --- /dev/null +++ b/challenge-323/deadmarshal/go/ch2.go @@ -0,0 +1,21 @@ +package main + +import ( + "fmt" +) + +func tax_amount(income int, taxes [][]int) float64 { + res := 0 + prev := 0 + for _, e := range taxes { + res += max(0, min(income, e[0])-prev) * e[1] + prev = e[0] + } + return float64(res) / 100.0 +} + +func main() { + fmt.Println(tax_amount(10, [][]int{{3, 50}, {7, 10}, {12, 25}})) + fmt.Println(tax_amount(2, [][]int{{1, 0}, {4, 25}, {5, 50}})) + fmt.Println(tax_amount(0, [][]int{{2, 50}})) +} diff --git a/challenge-323/deadmarshal/java/Ch1.java b/challenge-323/deadmarshal/java/Ch1.java new file mode 100644 index 0000000000..d83355c039 --- /dev/null +++ b/challenge-323/deadmarshal/java/Ch1.java @@ -0,0 +1,16 @@ +public class Ch1 { + public static void main(String[] args) { + System.out.println(increment_decrement(new String[]{"--x", "x++", "x++"})); + System.out.println(increment_decrement(new String[]{"x++", "++x", "x++"})); + System.out.println(increment_decrement(new String[]{"x++", "++x", "--x", "x--"})); + } + + private static int increment_decrement(String[] arr) { + int x = 0; + for (String s : arr) { + if (s.contains("++")) x++; + else x--; + } + return x; + } +} diff --git a/challenge-323/deadmarshal/java/Ch2.java b/challenge-323/deadmarshal/java/Ch2.java new file mode 100644 index 0000000000..b2208c1d23 --- /dev/null +++ b/challenge-323/deadmarshal/java/Ch2.java @@ -0,0 +1,17 @@ +public class Ch2 { + public static void main(String[] args) { + System.out.println(tax_amount(10, new int[][]{{3, 50}, {7, 10}, {12, 25}})); + System.out.println(tax_amount(2, new int[][]{{1, 0}, {4, 25}, {5, 50}})); + System.out.println(tax_amount(0, new int[][]{{2, 50}})); + } + + private static double tax_amount(int income, int[][] taxes) { + int res = 0, prev = 0; + for (var e : taxes) { + res += Math.max(0, Math.min(income, e[0]) - prev) * e[1]; + prev = e[0]; + } + return res / 100.0; + } +} + diff --git a/challenge-323/deadmarshal/modula-3/Ch1/src/Ch1.m3 b/challenge-323/deadmarshal/modula-3/Ch1/src/Ch1.m3 new file mode 100644 index 0000000000..68a9099534 --- /dev/null +++ b/challenge-323/deadmarshal/modula-3/Ch1/src/Ch1.m3 @@ -0,0 +1,27 @@ +MODULE Ch1 EXPORTS Main; + +IMPORT SIO,Text; + +VAR + A1 := ARRAY[0..2] OF TEXT{"--x","x++","x++"}; + A2 := ARRAY[0..2] OF TEXT{"x++","++x","x++"}; + A3 := ARRAY[0..3] OF TEXT{"x++","++x","--x","x--"}; + +PROCEDURE IncrementDecrement(VAR A:ARRAY OF TEXT):INTEGER = + VAR X:INTEGER; + BEGIN + FOR I := FIRST(A) TO LAST(A) DO + IF Text.FindChar(A[I],'+',0) # -1 THEN + INC(X) + ELSE DEC(X) + END; + END; + RETURN X + END IncrementDecrement; + +BEGIN + SIO.PutInt(IncrementDecrement(A1)); SIO.Nl(); + SIO.PutInt(IncrementDecrement(A2)); SIO.Nl(); + SIO.PutInt(IncrementDecrement(A3)); SIO.Nl() +END Ch1. + diff --git a/challenge-323/deadmarshal/modula-3/Ch1/src/m3makefile b/challenge-323/deadmarshal/modula-3/Ch1/src/m3makefile new file mode 100644 index 0000000000..643b33d043 --- /dev/null +++ b/challenge-323/deadmarshal/modula-3/Ch1/src/m3makefile @@ -0,0 +1,4 @@ +import("libm3") +import("libsio") +implementation("Ch1") +program("Ch1") diff --git a/challenge-323/deadmarshal/modula-3/Ch2/src/Ch2.m3 b/challenge-323/deadmarshal/modula-3/Ch2/src/Ch2.m3 new file mode 100644 index 0000000000..e92fd964cd --- /dev/null +++ b/challenge-323/deadmarshal/modula-3/Ch2/src/Ch2.m3 @@ -0,0 +1,35 @@ +MODULE Ch2 EXPORTS Main; + +IMPORT SIO; + +VAR + A1 := ARRAY[0..2],[0..1] OF INTEGER{ + ARRAY[0..1] OF INTEGER{3,50}, + ARRAY[0..1] OF INTEGER{7,10}, + ARRAY[0..1] OF INTEGER{12,25}}; + + A2 := ARRAY[0..2],[0..1] OF INTEGER{ + ARRAY[0..1] OF INTEGER{1,0}, + ARRAY[0..1] OF INTEGER{4,25}, + ARRAY[0..1] OF INTEGER{5,50}}; + + A3 := ARRAY[0..0],[0..1] OF INTEGER{ + ARRAY[0..1] OF INTEGER{2,50}}; + +PROCEDURE TaxAmount(READONLY Income:INTEGER; + VAR A:ARRAY OF ARRAY OF INTEGER):LONGREAL = + VAR Res,Prev:INTEGER; + BEGIN + FOR I := FIRST(A) TO LAST(A) DO + INC(Res,MAX(0,MIN(Income,A[I][0]) - Prev) * A[I][1]); + Prev := A[I][0] + END; + RETURN FLOAT(Res,LONGREAL) / 100.0D0; + END TaxAmount; + +BEGIN + SIO.PutLongReal(TaxAmount(10,A1)); SIO.Nl(); + SIO.PutLongReal(TaxAmount(2,A2)); SIO.Nl(); + SIO.PutLongReal(TaxAmount(0,A3)); SIO.Nl() +END Ch2. + diff --git a/challenge-323/deadmarshal/modula-3/Ch2/src/m3makefile b/challenge-323/deadmarshal/modula-3/Ch2/src/m3makefile new file mode 100644 index 0000000000..78802242fe --- /dev/null +++ b/challenge-323/deadmarshal/modula-3/Ch2/src/m3makefile @@ -0,0 +1,4 @@ +import("libm3") +import("libsio") +implementation("Ch2") +program("Ch2") diff --git a/challenge-323/deadmarshal/perl/ch-1.pl b/challenge-323/deadmarshal/perl/ch-1.pl new file mode 100644 index 0000000000..d4813d8a61 --- /dev/null +++ b/challenge-323/deadmarshal/perl/ch-1.pl @@ -0,0 +1,14 @@ +#!/usr/bin/env perl +use strict; +use warnings; + +sub increment_decrement{ + my $x = 0; + map{/\+\+/ ? $x++ : $x--} @{$_[0]}; + $x +} + +printf "%d\n",increment_decrement(["--x","x++","x++"]); +printf "%d\n",increment_decrement(["x++","++x","x++"]); +printf "%d\n",increment_decrement(["x++","++x","--x","x--"]); + diff --git a/challenge-323/deadmarshal/perl/ch-2.pl b/challenge-323/deadmarshal/perl/ch-2.pl new file mode 100644 index 0000000000..3831303b06 --- /dev/null +++ b/challenge-323/deadmarshal/perl/ch-2.pl @@ -0,0 +1,18 @@ +#!/usr/bin/env perl +use strict; +use warnings; +use List::Util qw(min max); + +sub tax_amount{ + my ($res,$prev) = (0,0); + foreach(@{$_[1]}){ + $res += max(0,min($_[0],$_->[0]) - $prev) * $_->[1]; + $prev = $_->[0] + } + $res / 100.0 +} + +printf "%.2f\n",tax_amount(10,[[3,50],[7,10],[12,25]]); +printf "%.2f\n",tax_amount(2,[[1,0],[4,25],[5,50]]); +printf "%.2f\n",tax_amount(0,[[2,50]]); + |
