Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Ruby

ความท้าทายในการเข้ารหัสบทสัมภาษณ์ของ Ruby &วิธีแก้ไข

การเขียนโค้ดที่ท้าทายเป็นวิธีที่ยอดเยี่ยมในการพัฒนาทักษะ Ruby และการแก้ปัญหาของคุณ และเพื่อเตรียมความพร้อมสำหรับการสัมภาษณ์เขียนโค้ด !

ทำไม?

เพราะในระหว่างความท้าทาย คุณทุ่มเทเต็มที่ในการแก้ปัญหาเฉพาะ 1 ข้อ

คุณไม่ต้องกังวลเรื่องอื่น

การฝึกแบบนี้จะช่วยเพิ่มทักษะการคิดของคุณ ทำให้คุณสามารถสำรวจคุณลักษณะทางภาษาที่น่าสนใจ และกลายเป็นนักพัฒนา Ruby ที่ดีขึ้น

ความท้าทายเหล่านี้บางอย่างต้องการความรู้เฉพาะทางเกี่ยวกับอัลกอริทึมของคอมพิวเตอร์ โครงสร้างข้อมูล หรือแนวคิด เช่น เคล็ดลับทางคณิตศาสตร์บางอย่าง

ไม่เป็นไรถ้าคุณแก้ปัญหาส่วนใหญ่ไม่ได้

ไม่ต้องกังวล!

ตอนนี้ :

ฉันคิดว่าการอ่านวิธีแก้ปัญหา 2-3 ข้อเพื่อให้เข้าใจถึงกระบวนการแก้ปัญหาเหล่านี้อาจเป็นประโยชน์

เริ่มต้นด้วย…

ความท้าทายที่ 1:การค้นหารายการซ้ำ

ความท้าทายแรกนี้คือการกำหนดอาร์เรย์ด้วย Integer ค่าที่คุณต้องใช้ในการค้นหาตัวเลขที่ซ้ำกันทั้งหมด

นี่คือตัวอย่าง :

numbers = [1,2,2,3,4,5]

find_duplicates(numbers)
# [2]

มาเริ่มกันที่คำถาม…

“ฉันจะรู้ได้อย่างไรว่าหมายเลขใดซ้ำกัน”

ฉันไม่ได้พยายามหาวิธีแก้ปัญหาในขั้นตอนเดียว

ในขั้นตอนนี้ ฉันแค่ต้องการถามและตอบคำถามที่จะทำให้ฉันเข้าใกล้วิธีแก้ปัญหามากขึ้น

เขียนแนวคิดสองสามข้อ :

  • ฉันสามารถนับจำนวนตัวเลขที่เรามีในอาร์เรย์ได้ จากนั้น count =2 หมายถึงซ้ำกัน
  • ฉันสามารถข้ามทุกองค์ประกอบและเก็บรายการองค์ประกอบที่ "เห็น" ไว้ได้ หากฉันเห็นองค์ประกอบสองครั้ง เราก็พบองค์ประกอบที่ซ้ำกัน
  • ฉันสามารถรวมตัวเลขเป็นสตริงและลองจับคู่ตัวเลขที่ซ้ำกับนิพจน์ทั่วไปได้

ไม่สำคัญหรอกว่า “อันไหนดีที่สุด” ณ จุดนี้

ไม่ต้องกังวลไป!

ตอนนี้ สิ่งสำคัญคือการได้รับโซลูชันที่ใช้งานได้ เลือกอันที่คิดว่าใช่สำหรับคุณแล้วเขียนโค้ดลงไป

ตัวอย่าง :

seen = []

numbers.each_with_object([]) do |n, dups|
  dups << n if seen.include?(n)

  seen << n
end

# [2]

ดูเหมือนว่าจะเป็นทางออกที่ถูกต้อง

ตอนนี้ :

คุณต้องการลองใช้อินพุตอื่น (อาร์เรย์ที่แตกต่างกัน) เพื่อให้แน่ใจว่าใช้งานได้จริง การเขียนการทดสอบหน่วยนั้นยอดเยี่ยมสำหรับสิ่งนี้

หากวิธีแก้ปัญหาได้ผล 100% คุณสามารถลองใช้วิธีแก้ปัญหาอื่นและใช้วิธีแก้ปัญหาที่เข้าใจง่ายขึ้น

อย่ามองหาความสมบูรณ์แบบ

มองหาการเรียนรู้ ความเข้าใจ และความก้าวหน้าทุกวัน!

ความท้าทาย 2:คำที่ถูกต้อง

กำหนดอาร์เรย์ของอักขระ &หนึ่งคำ ดูว่าคำนั้นสามารถสร้างจากอักขระเหล่านี้ได้หรือไม่

ตัวอย่าง :

word = "orange"
characters = %w(e n g a r o)

valid_word?(characters, word)
# true

เราเริ่มต้นด้วยคำถามเพื่อชี้นำกระบวนการคิดของเรา

“เราจะแน่ใจได้อย่างไรว่าคำนั้นใช้อักขระเหล่านี้ได้”

เกิดไอเดีย

ทิ้งสิ่งรบกวนสมาธิแล้วลองคิดดู

อาจช่วย ทำสิ่งนี้บนกระดาษ .

ความคิดของฉัน:

  • สำหรับทุกตัวอักษรใน word ให้ลบอักขระนั้นออกจาก characters array หากคุณไม่สามารถลบอักขระทั้งหมดได้ ให้คืนค่า false
  • นับอักขระทั้งหมดใน word &characters แล้วลบจำนวน

นี่คือวิธีแก้ปัญหาที่เป็นไปได้ :

word
  .each_char
  .all? { |ch| characters.delete_at(characters.index(ch)) rescue nil }

ทางออกของคุณคืออะไร

แบ่งปันในส่วนความคิดเห็น

สรุป

คุณได้เรียนรู้เกี่ยวกับความท้าทายในการเขียนโค้ดและวิธีใช้งานเพื่อพัฒนาทักษะ Ruby ของคุณแล้ว!

จำไว้ :

เป็นเรื่องปกติที่ไม่สามารถแก้ปัญหาเฉพาะได้ ให้คิดว่าเป็นหัวหน้าวิดีโอเกม ถ้าบอสมีเลเวล 100 และคุณเลเวล 70 ก็ยากที่จะเอาชนะบอสตัวนี้ได้

คุณจะทำอย่างไรในกรณีนั้น?

คุณเลื่อนระดับและรับประสบการณ์กับความท้าทายที่ง่ายขึ้น (บอสระดับล่าง) และคุณ ได้อุปกรณ์ที่ดีขึ้น (เรียนรู้เพิ่มเติมเกี่ยวกับ Ruby และการเขียนโปรแกรม)

ขอให้โชคดีและสนุก! 🙂