GoogleFoobar
1.0.0
Google Foobar の課題に対する私の個人的な見解。
簡単な問題。
文字列に各素数を生成して保存し、文字列にn+5
桁を保存したら部分文字列 ( n
~ 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]
これも簡単な問題で、これを最小限の行数で解くのはとても楽しかったです。だって…どうして?
文字列を char <
で分割し、リストの各要素に char >
出現する回数をカウントすることで解決します。次に、リストのインデックスを降順で含むリストを作成します。これは、リストの各セクションの各従業員が、反対方向に歩いている従業員と向き合う回数になるためです。
解決策の最後の部分は、リストの各要素とインデックス リストの対応する要素を乗算し (これにより、各従業員の遭遇数が得られます)、各遭遇で 2 つの敬礼が生成されるため、この数値を 2 で乗算します。
そして、このすべての数値の合計 (全従業員の敬礼の合計数) を返します。
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