Skip to content

Commit 6c905ec

Browse files
stormoficeleios
andauthored
Euclidean algorithm: Output standardization (#877)
Co-authored-by: James Schloss <[email protected]>
1 parent 8693a37 commit 6c905ec

29 files changed

+96
-51
lines changed

Diff for: contents/euclidean_algorithm/code/asm-x64/euclidean_example.s

+4-3
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
.intel_syntax noprefix
22

33
.section .rodata
4-
fmt: .string "%d\n"
4+
euclid_mod_fmt: .string "[#]\nModulus-based euclidean algorithm result:\n%d\n"
5+
euclid_sub_fmt: .string "[#]\nSubtraction-based euclidean algorithm result:\n%d\n"
56

67
.section .text
78
.global main
@@ -59,14 +60,14 @@ main:
5960
mov rdi, 4288 # Call euclid_mod
6061
mov rsi, 5184
6162
call euclid_mod
62-
mov rdi, OFFSET fmt # Print output
63+
mov rdi, OFFSET euclid_mod_fmt # Print output
6364
mov rsi, rax
6465
xor rax, rax
6566
call printf
6667
mov rdi, 1536 # Call euclid_sub
6768
mov rsi, 9856
6869
call euclid_sub
69-
mov rdi, OFFSET fmt # Print output
70+
mov rdi, OFFSET euclid_sub_fmt # Print output
7071
mov rsi, rax
7172
xor rax, rax
7273
call printf

Diff for: contents/euclidean_algorithm/code/bash/euclid.bash

+2-2
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,6 @@ euclid_sub() {
3838
}
3939

4040
result=$(euclid_mod $((64 * 67)) $((64 * 81)))
41-
echo "$result"
41+
echo -e "[#]\nModulus-based euclidean algorithm result:\n$result"
4242
result=$(euclid_sub $((128 * 12)) $((128 * 77)))
43-
echo "$result"
43+
echo -e "[#]\nSubtraction-based euclidean algorithm result:\n$result"

Diff for: contents/euclidean_algorithm/code/c/euclidean_example.c

+2-2
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,8 @@ int main() {
3333
int check1 = euclid_mod(64 * 67, 64 * 81);
3434
int check2 = euclid_sub(128 * 12, 128 * 77);
3535

36-
printf("%d\n", check1);
37-
printf("%d\n", check2);
36+
printf("[#]\nModulus-based euclidean algorithm result:\n%d\n", check1);
37+
printf("[#]\nSubtraction-based euclidean algorithm result:\n%d\n", check2);
3838

3939
return 0;
4040
}

Diff for: contents/euclidean_algorithm/code/clisp/euclidean.lisp

+4-2
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,10 @@
1717
(abs a)
1818
(euclid-mod b (mod a b))))
1919

20-
(print (euclid-sub (* 64 67) (* 64 81)))
21-
(print (euclid-mod (* 128 12) (* 128 77)))
20+
(format T "[#]~%Modulus-based euclidean algorithm result:~%")
21+
(format T "~d~%" (euclid-sub (* 64 67) (* 64 81)))
22+
(format T "[#]~%Subtraction-based euclidean algorithm result:~%")
23+
(format T "~d~%" (euclid-mod (* 128 12) (* 128 77)))
2224

2325
;; Quick test
2426
(assert

Diff for: contents/euclidean_algorithm/code/coconut/euclidean.coco

+4-2
Original file line numberDiff line numberDiff line change
@@ -15,5 +15,7 @@ addpattern def euclid_mod(0, b is int) = b
1515
addpattern def euclid_mod(a is int, b is int) = euclid_mod(b, a % b)
1616

1717
if __name__ == '__main__':
18-
print('Euclidean mod:', euclid_mod(64 * 67, 64 * 81))
19-
print('Euclidean sub:', euclid_sub(128 * 12, 128 * 77))
18+
print('[#]\nModulus-based euclidean algorithm result:')
19+
print(euclid_mod(64 * 67, 64 * 81))
20+
print('[#]\nSubtraction-based euclidean algorithm result:')
21+
print(euclid_sub(128 * 12, 128 * 77))

Diff for: contents/euclidean_algorithm/code/cpp/euclidean.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,6 @@ int main() {
3434
auto check1 = euclid_mod(64 * 67, 64 * 81);
3535
auto check2 = euclid_sub(128 * 12, 128 * 77);
3636

37-
std::cout << check1 << '\n';
38-
std::cout << check2 << '\n';
37+
std::cout << "[#]\nModulus-based euclidean algorithm result:\n" << check1 << '\n';
38+
std::cout << "[#]\nSubtraction-based euclidean algorithm result:\n" << check2 << '\n';
3939
}

Diff for: contents/euclidean_algorithm/code/csharp/Program.cs

+2-1
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,13 @@ class Program
77
{
88
static void Main(string[] args)
99
{
10-
Console.WriteLine("EuclideanAlgorithm");
1110
var euclideanAlgorithm = new EuclideanAlgorithm();
1211
int check = euclideanAlgorithm.EuclidMod(64 * 67, 64 * 81);
1312
int check2 = euclideanAlgorithm.EuclidSub(128 * 12, 128 * 77);
1413

14+
Console.WriteLine("[#]\nModulus-based euclidean algorithm result:");
1515
Console.WriteLine(check);
16+
Console.WriteLine("[#]\nSubtraction-based euclidean algorithm result:");
1617
Console.WriteLine(check2);
1718
}
1819
}

Diff for: contents/euclidean_algorithm/code/d/euclidean_algorithm.d

+2-2
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,6 @@ void main()
3737
auto check1 = euclid_mod(64 * 67, 64 * 81);
3838
auto check2 = euclid_sub(128 * 12, 128 * 77);
3939

40-
writeln("Modulus-based euclidean algorithm result: ", check1);
41-
writeln("Subtraction-based euclidean algorithm result: ", check2);
40+
writeln("[#]\nModulus-based euclidean algorithm result:\n", check1);
41+
writeln("[#]\nSubtraction-based euclidean algorithm result:\n", check2);
4242
}

Diff for: contents/euclidean_algorithm/code/expected.json

+8
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
{
2+
"Description": "euclidean algorithm",
3+
"Delta" : 0.0,
4+
"OutputValues" : [
5+
"64",
6+
"128"
7+
]
8+
}

Diff for: contents/euclidean_algorithm/code/fortran/euclidean.f90

+12-6
Original file line numberDiff line numberDiff line change
@@ -38,12 +38,18 @@ PROGRAM euclidean
3838
IMPLICIT NONE
3939
INTEGER :: a, b, euclid_sub, euclid_mod
4040

41-
a = 24
42-
b = 27
43-
WRITE(*,*) 'Subtraction method: GCD is: ', euclid_sub(a, b)
41+
a = 64 * 67
42+
b = 64 * 81
4443

45-
a = 24
46-
b = 27
47-
WRITE(*,*) 'Modulus method: GCD is: ', euclid_mod(a, b)
44+
WRITE(*,'(a)') '[#]'
45+
WRITE(*,'(a)') 'Modulus-based euclidean algorithm result:'
46+
WRITE(*, '(g0)') euclid_mod(a, b)
47+
48+
a = 128 * 12
49+
b = 128 * 77
50+
51+
WRITE(*,'(a)') '[#]'
52+
WRITE(*,'(a)') 'Subtraction-based euclidean algorithm result:'
53+
WRITE(*, '(g0)') euclid_sub(a, b)
4854

4955
END PROGRAM euclidean

Diff for: contents/euclidean_algorithm/code/go/euclidean.go

+2
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,8 @@ func main() {
4141
check1 := euclidMod(64*67, 64*81)
4242
check2 := euclidSub(128*12, 128*77)
4343

44+
fmt.Println("[#]\nModulus-based euclidean algorithm result:")
4445
fmt.Println(check1)
46+
fmt.Println("[#]\nSubtraction-based euclidean algorithm result:")
4547
fmt.Println(check2)
4648
}

Diff for: contents/euclidean_algorithm/code/haskell/euclidean_algorithm.hs

+2
Original file line numberDiff line numberDiff line change
@@ -31,5 +31,7 @@ main :: IO ()
3131
main = do
3232
let chk1 = euclidMod (64 * 67) (64 * 81)
3333
chk2 = euclidSub (128 * 12) (128 * 77)
34+
putStrLn "[#]\nModulus-based euclidean algorithm result:"
3435
print chk1
36+
putStrLn "[#]\nSubtraction-based euclidean algorithm result:"
3537
print chk2

Diff for: contents/euclidean_algorithm/code/java/EuclideanAlgo.java

+2
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,9 @@ public static int euclidMod(int a, int b) {
2626
}
2727

2828
public static void main(String[] args) {
29+
System.out.println("[#]\nModulus-based euclidean algorithm result:");
2930
System.out.println(euclidMod(64 * 67, 64 * 81));
31+
System.out.println("[#]\nSubtraction-based euclidean algorithm result:");
3032
System.out.println(euclidSub(128 * 12, 128 * 77));
3133
}
3234
}

Diff for: contents/euclidean_algorithm/code/javascript/euclidean_example.js

+4-2
Original file line numberDiff line numberDiff line change
@@ -18,14 +18,16 @@ function euclidSub(a, b) {
1818

1919
while (a !== b) {
2020
if (a > b) {
21-
a -= a - b;
21+
a -= b;
2222
} else {
23-
b = b - a;
23+
b -= a;
2424
}
2525
}
2626

2727
return a;
2828
}
2929

30+
console.log('[#]\nModulus-based euclidean algorithm result:')
3031
console.log(euclidMod(64 * 67, 64 * 81));
32+
console.log('[#]\nSubtraction-based euclidean algorithm result:')
3133
console.log(euclidSub(128 * 12, 128 * 77));

Diff for: contents/euclidean_algorithm/code/julia/euclidean.jl

+2-2
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,8 @@ function main()
2828
check1 = euclid_mod(64 * 67, 64 * 81);
2929
check2 = euclid_sub(128 * 12, 128 * 77);
3030

31-
println("Modulus-based euclidean algorithm result: $(check1)")
32-
println("subtraction-based euclidean algorithm result: $(check2)")
31+
println("[#]\nModulus-based euclidean algorithm result:\n$(check1)")
32+
println("[#]\nSubtraction-based euclidean algorithm result:\n$(check2)")
3333

3434
end
3535

Diff for: contents/euclidean_algorithm/code/kotlin/Euclidean.kt

+4-2
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@ fun euclidMod(a: Int, b: Int): Int {
2626
}
2727

2828
fun main(args: Array<String>) {
29-
println(euclidSub(128 * 12, 128 * 77))
29+
println("[#]\nModulus-based euclidean algorithm result:")
3030
println(euclidMod(64 * 67, 64 * 81))
31-
}
31+
println("[#]\nSubtraction-based euclidean algorithm result:")
32+
println(euclidSub(128 * 12, 128 * 77))
33+
}

Diff for: contents/euclidean_algorithm/code/lua/euclidean.lua

+3-1
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,10 @@ local function euclid_mod(a, b)
2525
end
2626

2727
local function main()
28-
print(euclid_sub(128 * 12, 128 * 77))
28+
print("[#]\nModulus-based euclidean algorithm result:")
2929
print(euclid_mod(64 * 67, 64 * 81))
30+
print("[#]\nSubtraction-based euclidean algorithm result:")
31+
print(euclid_sub(128 * 12, 128 * 77))
3032
end
3133

3234
main()

Diff for: contents/euclidean_algorithm/code/matlab/euclidean.m

+3-2
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
end
3232

3333
function euclid()
34-
['gcd(520,420) via euclidSub: ',num2str(euclidSub(520,420))]
35-
['gcd(183,244) via euclidMod: ',num2str(euclidMod(183,244))]
34+
['[#] Modulus-based euclidean algorithm result: ',num2str(euclidMod(64 * 67, 64 * 81))]
35+
36+
['[#] Subtraction-based euclidean algorithm result: ',num2str(euclidSub(128 * 12, 128 * 77))]
3637
end

Diff for: contents/euclidean_algorithm/code/nim/euclid_algorithm.nim

+2
Original file line numberDiff line numberDiff line change
@@ -24,5 +24,7 @@ func euclid_sub(in1, in2: int): int =
2424
result = a
2525

2626
when isMainModule:
27+
echo "[#]\nModulus-based euclidean algorithm result:"
2728
echo euclid_sub(64 * 67, 64 * 81)
29+
echo "[#]\nSubtraction-based euclidean algorithm result:"
2830
echo euclid_mod(128 * 12, 128 * 77)

Diff for: contents/euclidean_algorithm/code/ocaml/euclidean_example.ml

+3-2
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ let euclid_sub a b =
1919
let chk1 = euclid_mod (64 * 67) (64 * 81)
2020
let chk2 = euclid_sub (128 * 12) (128 * 77)
2121
let () =
22+
Printf.printf "[#]\nModulus-based euclidean algorithm result:\n";
2223
chk1 |> print_int |> print_newline;
23-
chk2 |> print_int |> print_newline
24-
24+
Printf.printf "[#]\nSubtraction-based euclidean algorithm result:\n";
25+
chk2 |> print_int |> print_newline

Diff for: contents/euclidean_algorithm/code/php/euclidean.php

+2-2
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ function euclid_mod(int $a, int $b): int
2929
return $a;
3030
}
3131

32-
printf('Euclidean mod: %s', euclid_mod(64 * 67, 64 * 81));
32+
printf('[#]'.PHP_EOL.'Modulus-based euclidean algorithm result:'.PHP_EOL.'%s', euclid_mod(64 * 67, 64 * 81));
3333
echo PHP_EOL;
34-
printf('Euclidean sub: %s', euclid_sub(128 * 12, 128 * 77));
34+
printf('[#]'.PHP_EOL.'Subtraction-based euclidean algorithm result:'.PHP_EOL.'%s', euclid_sub(128 * 12, 128 * 77));
3535
echo PHP_EOL;

Diff for: contents/euclidean_algorithm/code/powershell/euclidean_algorithm.ps1

+2-2
Original file line numberDiff line numberDiff line change
@@ -26,5 +26,5 @@ function Mod-Euclid($a, $b) {
2626
return $a
2727
}
2828

29-
Write-Host "Subtraction-based euclidean algorithm result: $(Mod-Euclid $(64 * 67) $(64 * 81))"
30-
Write-Host "Modulus-based euclidean algorithm result: $(Sub-Euclid $(128 * 12) $(128 * 77))"
29+
Write-Host "[#]`nSubtraction-based euclidean algorithm result:`n$(Mod-Euclid $(64 * 67) $(64 * 81))"
30+
Write-Host "[#]`nModulus-based euclidean algorithm result:`n$(Sub-Euclid $(128 * 12) $(128 * 77))"

Diff for: contents/euclidean_algorithm/code/python/euclidean_example.py

+4-2
Original file line numberDiff line numberDiff line change
@@ -27,5 +27,7 @@ def euclid_sub(a, b):
2727
return a
2828

2929
if __name__=="__main__":
30-
print('Euclidean mod: ', euclid_mod(64 * 67, 64 * 81))
31-
print('Euclidean sub: ', euclid_sub(128 * 12, 128 * 77))
30+
print('[#]\nModulus-based euclidean algorithm result:'),
31+
print(euclid_mod(64 * 67, 64 * 81))
32+
print('[#]\nSubtraction-based euclidean algorithm result:')
33+
print(euclid_sub(128 * 12, 128 * 77))

Diff for: contents/euclidean_algorithm/code/racket/euclidean_algorithm.rkt

+2
Original file line numberDiff line numberDiff line change
@@ -23,5 +23,7 @@
2323
)
2424
)
2525

26+
(displayln "[#]\nModulus-based euclidean algorithm result:")
2627
(displayln (euclid_sub (* 64 67) (* 64 81)))
28+
(displayln "[#]\nSubtraction-based euclidean algorithm result:")
2729
(displayln (euclid_mod (* 128 12) (* 128 77)))

Diff for: contents/euclidean_algorithm/code/ruby/euclidean.rb

+4-5
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,8 @@ def gcd_minus(a, b)
1717
end
1818
a
1919
end
20-
21-
p gcd_mod(12 * 6, 12 * 4) #=> 12
22-
p gcd_mod(9 * 667, 9 * 104) #=> 9
2320

24-
p gcd_minus(12 * 6, 12 * 4) #=> 12
25-
p gcd_minus(9 * 667, 9 * 104) #=> 9
21+
print "[#]\nModulus-based euclidean algorithm result:\n"
22+
p gcd_mod(64 * 67, 64 * 81)
23+
print "[#]\nSubtraction-based euclidean algorithm result:\n"
24+
p gcd_minus(128 * 12, 128 * 77)

Diff for: contents/euclidean_algorithm/code/rust/euclidean_example.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,6 @@ fn euclid_rem(mut a: i64, mut b: i64) -> i64 {
2929
fn main() {
3030
let chk1 = euclid_rem(64 * 67, 64 * 81);
3131
let chk2 = euclid_sub(128 * 12, 128 * 77);
32-
println!("{}", chk1);
33-
println!("{}", chk2);
32+
println!("[#]\nModulus-based euclidean algorithm result:\n{}", chk1);
33+
println!("[#]\nSubtraction-based euclidean algorithm result:\n{}", chk2);
3434
}

Diff for: contents/euclidean_algorithm/code/scala/euclidean.scala

+6-4
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@ object Euclid {
33
def euclid_sub(a: Int, b: Int): Int =
44
(Math.abs(a), Math.abs(b)) match {
55
case (0, _) | (_, 0) => 0
6-
case (x, y) if x < y => euclid(x, y - x)
7-
case (x, y) if x > y => euclid(x - y, y)
6+
case (x, y) if x < y => euclid_sub(x, y - x)
7+
case (x, y) if x > y => euclid_sub(x - y, y)
88
case _ => a
99
}
1010

@@ -15,8 +15,10 @@ object Euclid {
1515
}
1616

1717
def main(args: Array[String]): Unit = {
18-
println(euclid_sub(151 * 899, 151 * 182))
19-
println(euclid_mod(151 * 899, 151 * 182))
18+
println("[#]\nModulus-based euclidean algorithm result:")
19+
println(euclid_mod(64 * 67, 64 * 81))
20+
println("[#]\nSubtraction-based euclidean algorithm result:")
21+
println(euclid_sub(128 * 12, 128 * 77))
2022
}
2123

2224
}

Diff for: contents/euclidean_algorithm/code/scheme/euclidalg.ss

+3-1
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@
1111
a
1212
(euclid-mod b (modulo a b))))
1313

14+
(display "[#]\nModulus-based euclidean algorithm result:") (newline)
1415
(display (euclid-mod (* 64 67) (* 64 81))) (newline)
15-
(display (euclid-sub (* 128 12) (* 128 77))) (newline)
1616

17+
(display "[#]\nSubtraction-based euclidean algorithm result:") (newline)
18+
(display (euclid-sub (* 128 12) (* 128 77))) (newline)

Diff for: contents/euclidean_algorithm/code/swift/euclidean_algorithm.swift

+2
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,9 @@ func euclidMod(a: Int, b: Int) -> Int {
2727
}
2828

2929
func main() {
30+
print("[#]\nModulus-based euclidean algorithm result:")
3031
print(euclidMod(a: 64 * 67, b: 64 * 81))
32+
print("[#]\nSubtraction-based euclidean algorithm result:")
3133
print(euclidSub(a: 128 * 12, b: 128 * 77))
3234
}
3335

0 commit comments

Comments
 (0)