Sha256: 0b1db3e0363f3b031d42cd4e0f5b7635cea7e5ce11b6e5be53c6d6e41c558a6d

Contents?: true

Size: 501 Bytes

Versions: 396

Compression:

Stored size: 501 Bytes

Contents

module Brackets
  extend self
  MAP = {'}' => '{', ']' => '[', ')' => '('}

  def are_valid?(str : String)
    create_stack(filter_brackets(str)).size == 0
  end

  private def filter_brackets(brackets : String) : Array(Char)
    brackets.chars.select { |c| (MAP.keys + MAP.values).includes?(c) }
  end

  private def create_stack(brackets : Array(Char)) : Array(Char)
    brackets.reduce([] of Char) do |stack, b|
      MAP[b]? && MAP[b]? == stack.last? ? stack[0..-2] : stack << b
    end
  end
end

Version data entries

396 entries across 396 versions & 1 rubygems

Version Path
trackler-2.0.4.0 tracks/crystal/exercises/bracket-push/src/example.cr
trackler-2.0.3.9 tracks/crystal/exercises/bracket-push/src/example.cr
trackler-2.0.3.8 tracks/crystal/exercises/bracket-push/src/example.cr
trackler-2.0.3.7 tracks/crystal/exercises/bracket-push/src/example.cr
trackler-2.0.3.6 tracks/crystal/exercises/bracket-push/src/example.cr
trackler-2.0.3.5 tracks/crystal/exercises/bracket-push/src/example.cr
trackler-2.0.3.4 tracks/crystal/exercises/bracket-push/src/example.cr
trackler-2.0.3.3 tracks/crystal/exercises/bracket-push/src/example.cr
trackler-2.0.3.2 tracks/crystal/exercises/bracket-push/src/example.cr
trackler-2.0.3.1 tracks/crystal/exercises/bracket-push/src/example.cr
trackler-2.0.3.0 tracks/crystal/exercises/bracket-push/src/example.cr
trackler-2.0.2.0 tracks/crystal/exercises/bracket-push/src/example.cr
trackler-2.0.1.2 tracks/crystal/exercises/bracket-push/src/example.cr
trackler-2.0.1.1 tracks/crystal/exercises/bracket-push/src/example.cr
trackler-2.0.1.0 tracks/crystal/exercises/bracket-push/src/example.cr
trackler-2.0.0.10 tracks/crystal/exercises/bracket-push/src/example.cr
trackler-2.0.0.9 tracks/crystal/exercises/bracket-push/src/example.cr
trackler-2.0.0.8 tracks/crystal/exercises/bracket-push/src/example.cr
trackler-2.0.0.7 tracks/crystal/exercises/bracket-push/src/example.cr
trackler-2.0.0.6 tracks/crystal/exercises/bracket-push/src/example.cr