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.2.1.180 tracks/crystal/exercises/bracket-push/src/example.cr
trackler-2.2.1.179 tracks/crystal/exercises/bracket-push/src/example.cr
trackler-2.2.1.178 tracks/crystal/exercises/bracket-push/src/example.cr
trackler-2.2.1.177 tracks/crystal/exercises/bracket-push/src/example.cr
trackler-2.2.1.176 tracks/crystal/exercises/bracket-push/src/example.cr
trackler-2.2.1.175 tracks/crystal/exercises/bracket-push/src/example.cr
trackler-2.2.1.174 tracks/crystal/exercises/bracket-push/src/example.cr
trackler-2.2.1.173 tracks/crystal/exercises/bracket-push/src/example.cr
trackler-2.2.1.172 tracks/crystal/exercises/bracket-push/src/example.cr
trackler-2.2.1.171 tracks/crystal/exercises/bracket-push/src/example.cr
trackler-2.2.1.170 tracks/crystal/exercises/bracket-push/src/example.cr
trackler-2.2.1.169 tracks/crystal/exercises/bracket-push/src/example.cr
trackler-2.2.1.167 tracks/crystal/exercises/bracket-push/src/example.cr
trackler-2.2.1.166 tracks/crystal/exercises/bracket-push/src/example.cr
trackler-2.2.1.165 tracks/crystal/exercises/bracket-push/src/example.cr
trackler-2.2.1.164 tracks/crystal/exercises/bracket-push/src/example.cr
trackler-2.2.1.163 tracks/crystal/exercises/bracket-push/src/example.cr
trackler-2.2.1.162 tracks/crystal/exercises/bracket-push/src/example.cr
trackler-2.2.1.161 tracks/crystal/exercises/bracket-push/src/example.cr
trackler-2.2.1.160 tracks/crystal/exercises/bracket-push/src/example.cr