Skip to content

Instantly share code, notes, and snippets.

@jvidalba1
Created November 29, 2023 21:05
Show Gist options
  • Save jvidalba1/a5f001dcfb258fa3a801615f8e3bcf3f to your computer and use it in GitHub Desktop.
Save jvidalba1/a5f001dcfb258fa3a801615f8e3bcf3f to your computer and use it in GitHub Desktop.
Find patterns in strings
# pattern - source: both Strings
# find pattern 0s(vocals) and 1s(consonants)
# in source
# vocals: aeiouy
def calculate(pattern, source)
pattern_arr = pattern.split('')
source_arr = source.split('')
pattern_size = pattern_arr.length
iterations = source_arr.length - pattern_size + 1
match_counter = 0
iterations.times do |i|
digit_counter = 0
for j in (0..pattern_size-1) do
if((vocal_and_zero?(source_arr[i+j], pattern_arr[j])) ||
(consonant_and_one?(source_arr[i+j], pattern_arr[j])))
digit_counter += 1
else
break
end
end
match_counter += 1 if digit_counter == pattern_size
end
match_counter
end
def vocal_and_zero?(vocal, digit)
vocal?(vocal) && zero?(digit)
end
def consonant_and_one?(consonant, digit)
consonant?(consonant) && one?(digit)
end
def vocal?(str)
(/[aeiouy]/ =~ str) == 0
end
def consonant?(str)
!vocal?(str)
end
def zero?(str)
str == "0"
end
def one?(str)
str == "1"
end
p calculate("010", "amazing")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment