Sha256: c9396d89dd9bb4579a8cfb8fdd721f0fa8658fc5dc1ce3affc7a4cf59030366c

Contents?: true

Size: 749 Bytes

Versions: 396

Compression:

Stored size: 749 Bytes

Contents

class Series
  @series : Array(Int64)

  def initialize(series : String)
    raise ArgumentError.new("Series contains non-digit characters") if series =~ /\D/
    @series = series.chars.map(&.to_i).map(&.to_i64)
  end

  def largest_product(span : Int32) : Int64
    raise ArgumentError.new("Invalid span") if span > @series.size || span < 0
    return 1i64 if span == 0

    product_from_sequence(create_sequences(span))
  end

  private def create_sequences(span : Int32) : Array(Array(Int64))
    seq = @series.map_with_index do |n, i|
      @series[i, span]
    end
    seq.select { |s| s.size == span }
  end

  private def product_from_sequence(seq : Array(Array(Int64))) : Int64
    seq.map(&.product).sort { |a, b| b <=> a }.first
  end
end

Version data entries

396 entries across 396 versions & 1 rubygems

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