diff options
| author | deadmarshal <adeadmarshal@gmail.com> | 2022-12-28 10:47:13 +0330 |
|---|---|---|
| committer | deadmarshal <adeadmarshal@gmail.com> | 2022-12-28 10:47:13 +0330 |
| commit | 977802cd25bb919bbc0bad828d014a68fc7bab17 (patch) | |
| tree | f997db1a859bf124b7ab22248a0c4a4974d610a7 | |
| parent | 9720dd7a3a5d6c22d6cc034c363d1d09e309e745 (diff) | |
| download | perlweeklychallenge-club-977802cd25bb919bbc0bad828d014a68fc7bab17.tar.gz perlweeklychallenge-club-977802cd25bb919bbc0bad828d014a68fc7bab17.tar.bz2 perlweeklychallenge-club-977802cd25bb919bbc0bad828d014a68fc7bab17.zip | |
TWC197
| -rw-r--r-- | challenge-197/deadmarshal/d/ch1.d | 23 | ||||
| -rw-r--r-- | challenge-197/deadmarshal/d/ch2.d | 19 | ||||
| -rw-r--r-- | challenge-197/deadmarshal/lua/ch-1.lua | 16 | ||||
| -rw-r--r-- | challenge-197/deadmarshal/lua/ch-2.lua | 14 | ||||
| -rw-r--r-- | challenge-197/deadmarshal/modula-3/ch1/src/Ch1.m3 | 35 | ||||
| -rw-r--r-- | challenge-197/deadmarshal/modula-3/ch1/src/m3makefile | 3 | ||||
| -rw-r--r-- | challenge-197/deadmarshal/modula-3/ch2/src/Ch2.m3 | 37 | ||||
| -rw-r--r-- | challenge-197/deadmarshal/modula-3/ch2/src/m3makefile | 3 | ||||
| -rw-r--r-- | challenge-197/deadmarshal/nim/ch1.nim | 18 | ||||
| -rw-r--r-- | challenge-197/deadmarshal/nim/ch2.nim | 13 | ||||
| -rw-r--r-- | challenge-197/deadmarshal/oberon/Ch1.Mod | 48 | ||||
| -rw-r--r-- | challenge-197/deadmarshal/oberon/Ch2.Mod | 48 | ||||
| -rw-r--r-- | challenge-197/deadmarshal/pascal/ch1.pas | 33 | ||||
| -rw-r--r-- | challenge-197/deadmarshal/pascal/ch2.pas | 38 | ||||
| -rw-r--r-- | challenge-197/deadmarshal/perl/ch-1.pl | 15 | ||||
| -rw-r--r-- | challenge-197/deadmarshal/perl/ch-2.pl | 18 | ||||
| -rw-r--r-- | challenge-197/deadmarshal/raku/ch-1.raku | 12 | ||||
| -rw-r--r-- | challenge-197/deadmarshal/raku/ch-2.raku | 15 |
18 files changed, 408 insertions, 0 deletions
diff --git a/challenge-197/deadmarshal/d/ch1.d b/challenge-197/deadmarshal/d/ch1.d new file mode 100644 index 0000000000..df659a5f1b --- /dev/null +++ b/challenge-197/deadmarshal/d/ch1.d @@ -0,0 +1,23 @@ +import std.stdio:writeln; + +void move_zero(int[] arr) +{ + int count = 0; + for(int i = 0; i < arr.length; ++i) + if(arr[i] != 0) arr[count++] = arr[i]; + while(count < arr.length) arr[count++] = 0; +} + +void main() +{ + int[] a1 = [1,0,3,0,0,5]; + int[] a2 = [1,6,4]; + int[] a3 = [0,1,0,2,0]; + move_zero(a1); + move_zero(a2); + move_zero(a3); + writeln(a1); + writeln(a2); + writeln(a3); +} + diff --git a/challenge-197/deadmarshal/d/ch2.d b/challenge-197/deadmarshal/d/ch2.d new file mode 100644 index 0000000000..455c2b06b0 --- /dev/null +++ b/challenge-197/deadmarshal/d/ch2.d @@ -0,0 +1,19 @@ +import std.stdio:writeln; +import std.algorithm:swap; + +void wiggle_sort(int[] arr) +{ + for(int i = 0; i < arr.length-1; ++i) + if((i % 2 == 0) == (arr[i] > arr[i+1])) swap(arr[i],arr[i+1]); +} + +void main() +{ + int[] a1 = [1,5,1,1,6,4]; + int[] a2 = [1,3,2,2,3,1]; + wiggle_sort(a1); + wiggle_sort(a2); + writeln(a1); + writeln(a2); +} + diff --git a/challenge-197/deadmarshal/lua/ch-1.lua b/challenge-197/deadmarshal/lua/ch-1.lua new file mode 100644 index 0000000000..2fbf3434ff --- /dev/null +++ b/challenge-197/deadmarshal/lua/ch-1.lua @@ -0,0 +1,16 @@ +local function move_zero(t) + local ret,count = {},0 + for i=1,#t do + if t[i] ~= 0 then ret[#ret+1] = t[i] + else count = count + 1 end + end + for i=1,count do + ret[#ret+1] = 0 + end + return ret +end + +print(table.concat(move_zero({1,0,3,0,0,5}),' ')) +print(table.concat(move_zero({1,6,4}),' ')) +print(table.concat(move_zero({0,1,0,2,0}),' ')) + diff --git a/challenge-197/deadmarshal/lua/ch-2.lua b/challenge-197/deadmarshal/lua/ch-2.lua new file mode 100644 index 0000000000..252eb43d07 --- /dev/null +++ b/challenge-197/deadmarshal/lua/ch-2.lua @@ -0,0 +1,14 @@ +local function wiggle_sort(t) + for i=1, #t-1 do + if (i % 2 ~= 0) == (t[i] > t[i+1]) then + t[i],t[i+1] = t[i+1],t[i] + end + end +end + +local t1,t2 = {1,5,1,1,6,4},{1,3,2,2,3,1} +wiggle_sort(t1) +wiggle_sort(t2) +print(table.concat(t1,' ')) +print(table.concat(t2,' ')) + diff --git a/challenge-197/deadmarshal/modula-3/ch1/src/Ch1.m3 b/challenge-197/deadmarshal/modula-3/ch1/src/Ch1.m3 new file mode 100644 index 0000000000..742f0d18b9 --- /dev/null +++ b/challenge-197/deadmarshal/modula-3/ch1/src/Ch1.m3 @@ -0,0 +1,35 @@ +MODULE Ch1 EXPORTS Main; + +IMPORT IO; + +VAR + A1:ARRAY[0..5] OF INTEGER := ARRAY OF INTEGER{1,0,3,0,0,5}; + A2:ARRAY[0..2] OF INTEGER := ARRAY OF INTEGER{1,6,4}; + A3:ARRAY[0..4] OF INTEGER := ARRAY OF INTEGER{0,1,0,2,0}; + +PROCEDURE PrintArray(VAR Arr:ARRAY OF INTEGER) = + BEGIN + FOR I := FIRST(Arr) TO LAST(Arr) DO + IO.PutInt(Arr[I]); IO.PutChar(' '); + END; + IO.Put("\n"); + END PrintArray; + +PROCEDURE MoveZeros(VAR Arr:ARRAY OF INTEGER) = + VAR Count:INTEGER := 0; + BEGIN + FOR I := FIRST(Arr) TO LAST(Arr) DO + IF Arr[I] # 0 THEN Arr[Count] := Arr[I]; INC(Count) END; + END; + WHILE Count < NUMBER(Arr) DO Arr[Count] := 0; INC(Count) END; + END MoveZeros; + +BEGIN + MoveZeros(A1); + MoveZeros(A2); + MoveZeros(A3); + PrintArray(A1); + PrintArray(A2); + PrintArray(A3); +END Ch1. + diff --git a/challenge-197/deadmarshal/modula-3/ch1/src/m3makefile b/challenge-197/deadmarshal/modula-3/ch1/src/m3makefile new file mode 100644 index 0000000000..8a6bc1e4f8 --- /dev/null +++ b/challenge-197/deadmarshal/modula-3/ch1/src/m3makefile @@ -0,0 +1,3 @@ +import("libm3") +implementation("Ch1") +program("ch1") diff --git a/challenge-197/deadmarshal/modula-3/ch2/src/Ch2.m3 b/challenge-197/deadmarshal/modula-3/ch2/src/Ch2.m3 new file mode 100644 index 0000000000..3e6c775055 --- /dev/null +++ b/challenge-197/deadmarshal/modula-3/ch2/src/Ch2.m3 @@ -0,0 +1,37 @@ +MODULE Ch2 EXPORTS Main; + +IMPORT IO; + +VAR + A1:ARRAY[0..5] OF INTEGER := ARRAY OF INTEGER{1,5,1,1,6,4}; + A2:ARRAY[0..5] OF INTEGER := ARRAY OF INTEGER{1,3,2,2,3,1}; + +PROCEDURE Swap(VAR A,B:INTEGER) = + VAR Temp:INTEGER := A; + BEGIN + A := B; + B := Temp; + END Swap; + +PROCEDURE PrintArray(VAR Arr:ARRAY OF INTEGER) = + BEGIN + FOR I := FIRST(Arr) TO LAST(Arr) DO + IO.PutInt(Arr[I]); IO.PutChar(' '); + END; + IO.Put("\n"); + END PrintArray; + +PROCEDURE WiggleSort(VAR Arr:ARRAY OF INTEGER) = + BEGIN + FOR I := FIRST(Arr) TO LAST(Arr)-1 DO + IF((I MOD 2 = 0) = (Arr[I] > Arr[I+1])) THEN Swap(Arr[I],Arr[I+1]); END; + END; + END WiggleSort; + +BEGIN + WiggleSort(A1); + WiggleSort(A2); + PrintArray(A1); + PrintArray(A2); +END Ch2. + diff --git a/challenge-197/deadmarshal/modula-3/ch2/src/m3makefile b/challenge-197/deadmarshal/modula-3/ch2/src/m3makefile new file mode 100644 index 0000000000..4bfbb7373d --- /dev/null +++ b/challenge-197/deadmarshal/modula-3/ch2/src/m3makefile @@ -0,0 +1,3 @@ +import("libm3") +implementation("Ch2") +program("ch2") diff --git a/challenge-197/deadmarshal/nim/ch1.nim b/challenge-197/deadmarshal/nim/ch1.nim new file mode 100644 index 0000000000..632b87f012 --- /dev/null +++ b/challenge-197/deadmarshal/nim/ch1.nim @@ -0,0 +1,18 @@ +import std/[sequtils] + +proc moveZero(s:var seq[int]):seq[int] = + var count:int + for e in s: + if e == 0: count += 1 + else: result.add(e) + result.add(repeat(0,count)) + +var + s1:seq[int] = @[1,0,3,0,0,5] + s2:seq[int] = @[1,6,4] + s3:seq[int] = @[0,1,0,2,0] + +echo moveZero(s1) +echo moveZero(s2) +echo moveZero(s3) + diff --git a/challenge-197/deadmarshal/nim/ch2.nim b/challenge-197/deadmarshal/nim/ch2.nim new file mode 100644 index 0000000000..67871a1c38 --- /dev/null +++ b/challenge-197/deadmarshal/nim/ch2.nim @@ -0,0 +1,13 @@ +proc wiggleSort(s:var seq[int]) = + for i in 0..s.len-2: + if (i mod 2 == 0) == (s[i] > s[i+1]): swap(s[i], s[i+1]) + +var + s1:seq[int] = @[1,5,1,1,6,4] + s2:seq[int] = @[1,3,2,2,3,1] + +wiggleSort(s1) +wiggleSort(s2) +echo s1 +echo s2 + diff --git a/challenge-197/deadmarshal/oberon/Ch1.Mod b/challenge-197/deadmarshal/oberon/Ch1.Mod new file mode 100644 index 0000000000..2011a74d07 --- /dev/null +++ b/challenge-197/deadmarshal/oberon/Ch1.Mod @@ -0,0 +1,48 @@ +MODULE Ch1; + + IMPORT Out; + + VAR + A1:ARRAY 6 OF INTEGER; + A2:ARRAY 3 OF INTEGER; + A3:ARRAY 5 OF INTEGER; + + PROCEDURE Init; + BEGIN + A1[0] := 1; A1[1] := 0; A1[2] := 3; + A1[3] := 0; A1[4] := 0; A1[5] := 5; + A2[0] := 1; A2[1] := 6; A2[2] := 4; + A3[0] := 0; A3[1] := 1; A3[2] := 0; + A3[3] := 2; A3[4] := 0; + END Init; + + PROCEDURE PrintArray(VAR Arr:ARRAY OF INTEGER); + VAR I:LONGINT; + BEGIN + FOR I := 0 TO LEN(Arr)-1 DO + Out.Int(Arr[I],0); + Out.Char(' '); + END; + Out.Ln; + END PrintArray; + + PROCEDURE MoveZero(VAR Arr:ARRAY OF INTEGER); + VAR I,Count:LONGINT; + BEGIN + Count := 0; + FOR I := 0 TO LEN(Arr)-1 DO + IF Arr[I] # 0 THEN Arr[Count] := Arr[I]; INC(Count) END; + END; + WHILE Count < LEN(Arr) DO Arr[Count] := 0; INC(Count) END; + END MoveZero; + +BEGIN + Init; + MoveZero(A1); + MoveZero(A2); + MoveZero(A3); + PrintArray(A1); + PrintArray(A2); + PrintArray(A3); +END Ch1. + diff --git a/challenge-197/deadmarshal/oberon/Ch2.Mod b/challenge-197/deadmarshal/oberon/Ch2.Mod new file mode 100644 index 0000000000..bb214a0ab2 --- /dev/null +++ b/challenge-197/deadmarshal/oberon/Ch2.Mod @@ -0,0 +1,48 @@ +MODULE Ch2; + + IMPORT Out; + + VAR + I:LONGINT; + A1,A2,A3:ARRAY 6 OF INTEGER; + + PROCEDURE Swap(VAR A,B:INTEGER); + VAR Temp:INTEGER; + BEGIN + Temp := A; + A := B; + B := Temp; + END Swap; + + PROCEDURE Init; + BEGIN + A1[0] := 1; A1[1] := 5; A1[2] := 1; A1[3] := 1; A1[4] := 6; A1[5] := 4; + A2[0] := 1; A2[1] := 3; A2[2] := 2; A2[3] := 2; A2[4] := 3; A2[5] := 1; + END Init; + + PROCEDURE WiggleSort(VAR Arr:ARRAY OF INTEGER); + VAR I:LONGINT; + BEGIN + FOR I := 0 TO LEN(Arr)-2 DO + IF(~(ODD(I)) = (Arr[I] > Arr[I+1])) THEN + Swap(Arr[I],Arr[I+1]); + END; + END; + END WiggleSort; + +BEGIN + Init; + WiggleSort(A1); + WiggleSort(A2); + FOR I := 0 TO LEN(A1)-1 DO + Out.Int(A1[I],0); + Out.Char(' '); + END; + Out.Ln; + FOR I := 0 TO LEN(A2)-1 DO + Out.Int(A2[I],0); + Out.Char(' '); + END; + Out.Ln; +END Ch2. + diff --git a/challenge-197/deadmarshal/pascal/ch1.pas b/challenge-197/deadmarshal/pascal/ch1.pas new file mode 100644 index 0000000000..f9187929d9 --- /dev/null +++ b/challenge-197/deadmarshal/pascal/ch1.pas @@ -0,0 +1,33 @@ +program Ch1; + +{$mode objfpc} + +uses + SysUtils,Types; + +var + I:Integer; + A1,A2,A3:TIntegerDynArray; + +procedure MoveZero(var Arr:TIntegerDynArray); +var + I,Count:Integer; +begin + Count := 0; + for I := Low(Arr) to High(Arr) do + if Arr[I] <> 0 then begin Arr[Count] := Arr[I]; Inc(Count) end; + while Count <= High(Arr) do begin Arr[Count] := 0; Inc(Count) end; +end; + +begin + A1 := [1,0,3,0,0,5]; + A2 := [1,6,4]; + A3 := [0,1,0,2,0]; + MoveZero(A1); + MoveZero(A2); + MoveZero(A3); + for I := Low(A1) to High(A1) do Write(A1[I], ' '); WriteLn; + for I := Low(A2) to High(A2) do Write(A2[I], ' '); WriteLn; + for I := Low(A3) to High(A3) do Write(A3[I], ' '); WriteLn; +end. + diff --git a/challenge-197/deadmarshal/pascal/ch2.pas b/challenge-197/deadmarshal/pascal/ch2.pas new file mode 100644 index 0000000000..b56c4dfae4 --- /dev/null +++ b/challenge-197/deadmarshal/pascal/ch2.pas @@ -0,0 +1,38 @@ +program Ch2; + +{$mode objfpc} + +uses + SysUtils,Types; + +var + I:Integer; + A1,A2:TIntegerDynArray; + +procedure SwapInts(var A,B:Integer); +var + Temp:Integer; +begin + Temp := A; + A := B; + B := Temp; +end; + +procedure WiggleSort(var Arr:TIntegerDynArray); +var + I:Integer; +begin + for I := Low(Arr) to High(Arr)-1 do + if((not Odd(I)) = (Arr[I] > Arr[I+1])) then + SwapInts(Arr[I],Arr[I+1]); +end; + +begin + A1 := [1,5,1,1,6,4]; + A2 := [1,3,2,2,3,1]; + WiggleSort(A1); + WiggleSort(A2); + for I := Low(A1) to High(A1) do Write(A1[I], ' '); WriteLn; + for I := Low(A2) to High(A2) do Write(A2[I], ' '); WriteLn; +end. + diff --git a/challenge-197/deadmarshal/perl/ch-1.pl b/challenge-197/deadmarshal/perl/ch-1.pl new file mode 100644 index 0000000000..1ff8f201c2 --- /dev/null +++ b/challenge-197/deadmarshal/perl/ch-1.pl @@ -0,0 +1,15 @@ +#!/usr/bin/env perl +use strict; +use warnings; + +sub move_zero{ + my $count = 0; + my @ret = grep {$_ == 0 ? $count++ && () : $_} @{$_[0]}; + push @ret, (0) x $count; + sprintf "(%s)\n" => join ',' => @ret; +} + +print move_zero([1,0,3,0,0,5]); +print move_zero([1,6,4]); +print move_zero([0,1,0,2,0]); + diff --git a/challenge-197/deadmarshal/perl/ch-2.pl b/challenge-197/deadmarshal/perl/ch-2.pl new file mode 100644 index 0000000000..dfd14539d3 --- /dev/null +++ b/challenge-197/deadmarshal/perl/ch-2.pl @@ -0,0 +1,18 @@ +#!/usr/bin/env perl +use strict; +use warnings; +use Data::Show; + +sub wiggle_sort{ + my ($A) = @_; + for(my $i = 0; $i < @$A-2; ++$i){ + if(($i % 2 == 0) == ($A->[$i] > $A->[$i+1])){ + ($A->[$i],$A->[$i+1]) = ($A->[$i+1],$A->[$i]); + } + } + sprintf "(%s)\n" => join ',' => @$A; +} + +print wiggle_sort([1,5,1,1,6,4]); +print wiggle_sort([1,3,2,2,3,1]); + diff --git a/challenge-197/deadmarshal/raku/ch-1.raku b/challenge-197/deadmarshal/raku/ch-1.raku new file mode 100644 index 0000000000..9b41319119 --- /dev/null +++ b/challenge-197/deadmarshal/raku/ch-1.raku @@ -0,0 +1,12 @@ +sub move-zero(@arr) +{ + return @arr unless @arr.none != 0; + my $count = 0; + my @ret = @arr.grep({$_ == 0 ?? $count++ && () !! $_}); + @ret.push: 0 xx $count; +} + +say move-zero([1,0,3,0,0,5]).join(' '); +say move-zero([1,6,4]).join(' '); +say move-zero([0,1,0,2,0]).join(' '); + diff --git a/challenge-197/deadmarshal/raku/ch-2.raku b/challenge-197/deadmarshal/raku/ch-2.raku new file mode 100644 index 0000000000..df8c2d6ab8 --- /dev/null +++ b/challenge-197/deadmarshal/raku/ch-2.raku @@ -0,0 +1,15 @@ +sub wiggle-sort(@A) +{ + for 0..@A.elems-2 -> $i + { + if ($i %% 2) == (@A[$i] > @A[$i+1]) + { + (@A[$i],@A[$i+1]) = (@A[$i+1],@A[$i]); + } + } + @A; +} + +say wiggle-sort([1,5,1,1,6,4]); +say wiggle-sort([1,3,2,2,3,1]); + |
