Мой личный взгляд на проблемы Google Foobar.
Легкая проблема.
Решается путем создания и сохранения каждого простого числа в строке и возврата подстроки ( n
до n+5
), как только мы сохраним в строке n+5
цифр, поскольку это искомое число.
algorithm prime_seq_substring is
input: Index N of first digit on the substring
output: String of 5 digits of prime numbers
for each prime in range[2..30000] do
concat prime to prime_seq
if length of prime_seq >= N+5 do
break
return prime_seq[N..N+5]
Еще одна простая задача, и мне было очень весело решать ее, уложив в минимальное количество строк. Потому что... почему бы и нет?
Решается путем разделения строки по символу <
и подсчета количества раз, когда символ >
появляется в каждом элементе списка. Затем создайте список с индексами списка, но в порядке убывания, поскольку это количество раз, когда каждый сотрудник в каждом разделе списка столкнется с сотрудником, идущим в другом направлении.
Последний этап решения — умножение каждого элемента в списке на соответствующий ему элемент в списке индексов (это дает количество встреч каждого сотрудника) и умножение этого числа на два, поскольку каждая встреча генерирует два приветствия.
И возвращаем сумму всех этих чисел (общее количество приветствий всех сотрудников).
algorithms salutes_solution is
input: String S representing the employees
output: Number of salutes performed by the employees
for each section in (S split by '<') do
concat (number of '>' in section) to sec_list
index_list := (length of sec_list)..0
for I in range[0..(length of sec_list)] do
concat ( (elem I of sec_list) * (elem I of index_list) * 2) to salutes_list
return sum of elements in salutes_list