Sha256: 71871f43d59b8f92af33c7685fc3cdd393e3f55144ac71231c4d3e51bf84e690

Contents?: true

Size: 1.01 KB

Versions: 393

Compression:

Stored size: 1.01 KB

Contents

#include <string.h>
#include <stdbool.h>
#include "largest_series_product.h"

#define MAX(x, y) (x) > (y) ? (x) : (y)

static int to_int(char c)
{
   return c - '0';
}

static bool is_digit(char c)
{
   return (c >= '0') && (c <= '9');
}

int64_t largest_series_product(char *digits, size_t span)
{
   size_t digit_count = strlen(digits);
   size_t zeros = 0;
   long product = 1;
   long largest_product = 0;

   if (span > digit_count)
      return -1;

   if (!span && !digit_count)
      return 1;

   for (size_t i = 0; i < digit_count; i++) {
      if (!is_digit(digits[i]))
         return -1;

      int to_add = to_int(digits[i]);

      if (i >= span) {
         int to_remove = to_int(digits[i - span]);
         if (to_remove == 0)
            zeros--;
         else
            product /= to_remove;
      }

      if (to_add > 0)
         product *= to_add;
      else
         zeros++;

      if ((i + 1 >= span) && (zeros == 0))
         largest_product = MAX(largest_product, product);
   }

   return largest_product;
}

Version data entries

393 entries across 393 versions & 1 rubygems

Version Path
trackler-2.2.1.180 tracks/c/exercises/largest-series-product/src/example.c
trackler-2.2.1.179 tracks/c/exercises/largest-series-product/src/example.c
trackler-2.2.1.178 tracks/c/exercises/largest-series-product/src/example.c
trackler-2.2.1.177 tracks/c/exercises/largest-series-product/src/example.c
trackler-2.2.1.176 tracks/c/exercises/largest-series-product/src/example.c
trackler-2.2.1.175 tracks/c/exercises/largest-series-product/src/example.c
trackler-2.2.1.174 tracks/c/exercises/largest-series-product/src/example.c
trackler-2.2.1.173 tracks/c/exercises/largest-series-product/src/example.c
trackler-2.2.1.172 tracks/c/exercises/largest-series-product/src/example.c
trackler-2.2.1.171 tracks/c/exercises/largest-series-product/src/example.c
trackler-2.2.1.170 tracks/c/exercises/largest-series-product/src/example.c
trackler-2.2.1.169 tracks/c/exercises/largest-series-product/src/example.c
trackler-2.2.1.167 tracks/c/exercises/largest-series-product/src/example.c
trackler-2.2.1.166 tracks/c/exercises/largest-series-product/src/example.c
trackler-2.2.1.165 tracks/c/exercises/largest-series-product/src/example.c
trackler-2.2.1.164 tracks/c/exercises/largest-series-product/src/example.c
trackler-2.2.1.163 tracks/c/exercises/largest-series-product/src/example.c
trackler-2.2.1.162 tracks/c/exercises/largest-series-product/src/example.c
trackler-2.2.1.161 tracks/c/exercises/largest-series-product/src/example.c
trackler-2.2.1.160 tracks/c/exercises/largest-series-product/src/example.c