ความเห็นส่วนตัวของฉันเกี่ยวกับความท้าทายของ 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]
ปัญหาง่ายๆ อีกปัญหาหนึ่ง และฉันสนุกมากกับการแก้ปัญหานี้โดยใช้จำนวนบรรทัดน้อยที่สุด เพราะ...ทำไมจะไม่ได้ล่ะ?.
แก้ไขได้โดยการแยกสตริงด้วย char <
และนับจำนวนครั้งที่ char >
ปรากฏบนแต่ละองค์ประกอบของรายการ จากนั้น ให้สร้างรายการที่มีดัชนีของรายการโดยเรียงลำดับจากมากไปน้อย เนื่องจากนั่นคือจำนวนครั้งที่พนักงานแต่ละคนในแต่ละส่วนของรายการจะหันหน้าไปทางพนักงานที่เดินไปในทิศทางอื่น
ขั้นตอนสุดท้ายของการแก้ปัญหาคือการคูณแต่ละองค์ประกอบในรายการด้วยองค์ประกอบที่สอดคล้องกันในรายการดัชนี (ซึ่งเป็นจำนวนการเผชิญหน้าของพนักงานแต่ละคน) และคูณจำนวนนี้ด้วยสอง เนื่องจากการเผชิญหน้าแต่ละครั้งทำให้เกิดคำทักทายสองครั้ง
และเราจะคืนผลรวมของตัวเลขทั้งหมดนี้ (จำนวนคำทักทายรวมของพนักงานทั้งหมด)
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