Minha opinião pessoal sobre os desafios do Google Foobar.
Problema fácil.
Resolvido gerando e armazenando cada primo em uma string, retornando a substring ( n
para n+5
) depois de armazenarmos n+5
dígitos na string, já que esse é o número que procuramos.
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]
Outro problema fácil, e me diverti muito resolvendo isso com o menor número de linhas. Porque... por que não?
Resolvido dividindo a string pelo char <
e contando o número de vezes que o char >
aparece em cada elemento da lista. Em seguida, crie uma lista com os índices da lista, mas em ordem decrescente, pois esse é o número de vezes que cada funcionário de cada seção da lista enfrentará um funcionário caminhando na outra direção.
A última etapa da solução é multiplicar cada elemento da lista pelo seu elemento correspondente na lista de índices (isso dá o número de encontros de cada funcionário) e multiplicar esse número por dois, pois cada encontro gera duas saudações.
E retornamos a soma de todos esses números (o número total de saudações de todos os funcionários).
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