diff options
Diffstat (limited to 'challenge-059')
| -rwxr-xr-x | challenge-059/manfredi/perl/ch-2.pl | 38 | ||||
| -rwxr-xr-x | challenge-059/manfredi/python/ch-2.py | 24 |
2 files changed, 62 insertions, 0 deletions
diff --git a/challenge-059/manfredi/perl/ch-2.pl b/challenge-059/manfredi/perl/ch-2.pl new file mode 100755 index 0000000000..f4fc17a63d --- /dev/null +++ b/challenge-059/manfredi/perl/ch-2.pl @@ -0,0 +1,38 @@ +#!/usr/bin/env perl +use strict; +use warnings; + +my @numbers = ( 2, 4, 3 ); + +print("numbers: @numbers\n"); + +my @n = sort @numbers; + +my @pair = (); + +for my $i (0 .. $#n) { + for my $j ($i .. $#n) { + push @pair, [ $n[$i] , $n[$j] ] unless $n[$i] eq $n[$j]; + } +} + +my $bit_sum = 0; + +for my $pair (@pair) { + my $binA = sprintf("%032b", $pair->[0]); + my $binB = sprintf("%032b", $pair->[1]); + + my @binA = split '', $binA; + my @binB = split '', $binB; + my $diff = 0; + + for my $idx (0.. $#binA) { + $diff++ if $binA[$idx] != $binB[$idx]; + } + + printf "%s = %s\n%s = %s\n", $binA, $pair->[0], $binB,$pair->[1]; + printf "f(%s, %s) = %s\n\n", $pair->[0], $pair->[1], $diff; + $bit_sum += $diff; +} + +print "bit sum = $bit_sum\n"; diff --git a/challenge-059/manfredi/python/ch-2.py b/challenge-059/manfredi/python/ch-2.py new file mode 100755 index 0000000000..d758d9889c --- /dev/null +++ b/challenge-059/manfredi/python/ch-2.py @@ -0,0 +1,24 @@ +#!/usr/bin/env python3 + +numbers = [ 2, 4, 3 ] + +print("numbers", numbers) + +n = sorted(numbers) + +pair = [ (n[i], n[j]) for i in range(len(n)) + for j in range(i, len(n)) if n[i] is not n[j] ] + +bit_sum = 0 + +for i, j in pair: + bin_i = "{0:032b}".format(i) + bin_j = "{0:032b}".format(j) + diff = 0 + for k in range(len(bin_i)): + if bin_i[k] is not bin_j[k]: diff += 1 + + bit_sum += diff + print("{1} = {0}\n{3} = {2}\nf({0}, {2}) = {4}\n".format(i, bin_i, j, bin_j, diff)) + +print("bit sum = {}".format(bit_sum)); |
