Rosetta Code
Brazilian numbers
Find the first Brazilian numbers by searching for bases whose representation uses one repeated digit.
Source
rosettacode/popular/brazilian_numbers.vibe
# title: Brazilian numbers
# source: https://rosettacode.org/wiki/Brazilian_numbers
# category: Rosetta Code
# difficulty: Medium
# summary: Find the first Brazilian numbers by searching for bases whose representation uses one repeated digit.
# tags: popular, numbers, base-conversion, search
# vibe: 0.2
def base_digits(number, base)
if number == 0
return "0"
end
digits = ""
current = number
while current > 0
digits = ("" + (current % base)) + digits
current = current / base
end
digits
end
def same_digits?(text)
index = 1
while index < text.length
if text.slice(index) != text.slice(0)
return false
end
index = index + 1
end
true
end
def brazilian?(number)
base = 2
while base <= number - 2
digits = base_digits(number, base)
if digits.length > 1 && same_digits?(digits)
return true
end
base = base + 1
end
false
end
def first_brazilian_numbers(count)
values = []
candidate = 7
while values.length < count
if brazilian?(candidate)
values = values.push(candidate)
end
candidate = candidate + 1
end
values
end
def run
first_brazilian_numbers(10)
end
Output
Press run to execute run from this example.