Mon point de vue personnel sur les défis de Google Foobar.
Problème facile.
Résolu en générant et en stockant chaque nombre premier sur une chaîne, en renvoyant la sous-chaîne ( n
à n+5
) une fois que nous avons stocké n+5
chiffres sur la chaîne, puisque c'est le nombre que nous recherchons.
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]
Encore un problème facile, et j'ai eu beaucoup de plaisir à le résoudre en un minimum de lignes. Parce que... pourquoi pas ?.
Résolu en divisant la chaîne par le char <
et en comptant le nombre de fois que le char >
apparaît sur chaque élément de la liste. Ensuite, créez une liste avec les index de la liste mais par ordre décroissant, puisque c'est le nombre de fois où chaque employé de chaque section de la liste fera face à un employé marchant dans l'autre sens.
La dernière étape de la solution consiste à multiplier chaque élément de la liste par son élément correspondant sur la liste des index (cela donne le nombre de rencontres de chaque employé) et à multiplier ce nombre par deux, puisque chaque rencontre génère deux saluts.
Et nous renvoyons la somme de tous ces chiffres (le nombre total de salutations de tous les employés).
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