การเขียนโค้ดที่ท้าทายเป็นวิธีที่ยอดเยี่ยมในการพัฒนาทักษะ 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 และการเขียนโปรแกรม)
ขอให้โชคดีและสนุก! 🙂