From 6012336a8dbad470ad110a67b8e2f8a61b9e95b1 Mon Sep 17 00:00:00 2001 From: Philip Hood Date: Mon, 19 Oct 2020 14:33:52 -0400 Subject: c code for challenge #83. --- challenge-083/pkmnx/c/ch-1.c | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 challenge-083/pkmnx/c/ch-1.c diff --git a/challenge-083/pkmnx/c/ch-1.c b/challenge-083/pkmnx/c/ch-1.c new file mode 100644 index 0000000000..837b5927d7 --- /dev/null +++ b/challenge-083/pkmnx/c/ch-1.c @@ -0,0 +1,37 @@ +#include +#include + +int main() { + + char c; + char state; + + long tot = 0; + long acc = 0; + long c_cnt = 0; + + while ( (c = getchar()) != EOF ) { + + if ( isspace(c) ) { + state = 's'; + } else { + state = state == 's' ?'c' :'w'; + acc++; + } + + if ( c_cnt >= 1 ) { + tot += state == 'c' ?acc : 0; + } + + if ( state == 'c' ) { + c_cnt++; + acc = 0; + } + + } + + printf( "%ld\n", tot ); + + return 0; + +} -- cgit From 0561b1043e69b19fe66d7eba37c2ccd41263ae6f Mon Sep 17 00:00:00 2001 From: Philip Hood Date: Mon, 19 Oct 2020 17:14:55 -0400 Subject: perl5 submission for ch. #83 ... --- challenge-083/pkmnx/perl5/ch-2.pl | 57 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100755 challenge-083/pkmnx/perl5/ch-2.pl diff --git a/challenge-083/pkmnx/perl5/ch-2.pl b/challenge-083/pkmnx/perl5/ch-2.pl new file mode 100755 index 0000000000..34f64948d0 --- /dev/null +++ b/challenge-083/pkmnx/perl5/ch-2.pl @@ -0,0 +1,57 @@ +#!/usr/bin/env perl + +use warnings; +use strict; + +my @A = ( 3, 10, 8, 23, 34, 52, 343, 23, 123, 11, 898, 238, 2, 567, 98 ); +#my @A = (3, 10, 8); +#my @A = (12, 2, 10); + +my $sza = scalar @A; + +die ( "we're not really processing > 32 nums w/ this algorithm." ) if ( $sza > 32 ); +die ( "we're only processing nums here!" ) if ( grep /\D/, @A ); + +my @output = @{ ( + map { $_ } + sort { $a->[0] <=> $b->[0] || $a->[1] <=> $b->[1] } + grep { $_->[0] > -1 } map { + + my @k = split //, $_; + + my $sum = 0; + my $nsum = 0; + my @sum = (); + for (0 .. $#k) { + + my $acc = $A[$_]; + if ( $k[$_] eq "1" ) { + $acc *= -1; + $nsum++; + } + + push @sum, $acc; + $sum += $acc; + } + + [ $sum, $nsum, @sum ]; + + } + map { sprintf "%0".$sza."b", $_ } ( 0 .. (2 ** $sza) -1 ) +)[0] }; + +my $sum = shift @output; +my $nsum = shift @output; + +print "\n"; +print "Input: @A\n"; +print "Output: $nsum\n"; + +print "Flipping the sign of just " . ( $nsum < 2 ?"one element " :($nsum . " elements ") ) . "(" + . ( join ", ", map { $_ * -1} grep { $_ < 0 } @output ) . ") gives the result $sum.\n"; + +print " i.e.: " . join " + ", map {"(" . $_ . ")" } @output; +print "\n"; +print "\n"; + +exit (0); -- cgit