Pandangan pribadi saya tentang tantangan Google Foobar.
Masalah mudah.
Diselesaikan dengan menghasilkan dan menyimpan setiap bilangan prima pada sebuah string, mengembalikan substring ( n
ke n+5
) setelah kita menyimpan n+5
digit pada string, karena itulah angka yang kita cari.
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]
Masalah mudah lainnya, dan saya cukup senang menyelesaikannya dalam jumlah baris paling sedikit. Karena...kenapa tidak?.
Diselesaikan dengan memisahkan string dengan char <
dan menghitung berapa kali char >
muncul di setiap elemen daftar. Kemudian, buatlah sebuah daftar dengan indeks-indeks dari daftar tersebut tetapi dalam urutan menurun, karena itulah berapa kali setiap karyawan di setiap bagian daftar akan menghadapi seorang karyawan yang berjalan ke arah lain.
Bagian terakhir dari solusinya adalah, mengalikan setiap elemen dalam daftar dengan elemen yang sesuai pada daftar indeks (ini menghasilkan jumlah pertemuan setiap karyawan) dan mengalikan angka ini dengan dua, karena setiap pertemuan menghasilkan dua penghormatan.
Dan kami mengembalikan jumlah semua angka ini (jumlah total penghormatan seluruh karyawan).
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