ฉันจะปรับปรุงความสามารถในการแก้ปัญหาได้อย่างไร


50

ทุกคนพูดในสิ่งเดียวกันว่า: "โปรแกรมเมอร์ตัวจริงรู้วิธีจัดการกับปัญหาจริง" แต่พวกเขาลืมว่าพวกเขาเรียนรู้ความสามารถนี้ที่ไหน: มันไม่ได้สอนในโรงเรียน

ฉันจะทำอย่างไรเพื่อปรับปรุงความสามารถในการแก้ปัญหาการเขียนโปรแกรมที่ซับซ้อน กลยุทธ์อะไรที่ใช้ได้ผลสำหรับคุณ มีพื้นที่เฉพาะที่ฉันควรจะเน้นเช่นอัลกอริทึมหรือรูปแบบการออกแบบ?


3
หนังสือสองเล่มที่มีประโยชน์ที่กล่าวถึงในCode Completeได้แก่ : Blockbusting เกี่ยวกับแนวคิดโดย James Adams และการคิดด้านข้างโดย Edward De Bono
mctylr

1
AH! ฉันลืมที่จะโพสต์ที่นี่กลับเมื่อมันมีเพียงไม่กี่คำตอบ
Mark C

คำตอบ:


25

เทคนิคบางอย่างที่อาจใช้หรือไม่ได้:

  • ดูวิธีแก้ไขปัญหาที่มีอยู่สำหรับปัญหาทั่วไปเช่นรูปแบบการออกแบบ บางทีคุณอาจพบสิ่งที่คล้ายกันซึ่งอย่างน้อยก็คล้ายกับปัญหาของคุณ ค้นหาในเว็บ
  • ทำราวกับว่าปัญหาได้รับการแก้ไขแล้วและติดตามสิ่งที่ตามมากลับไปที่วิธีแก้ปัญหา ตัวอย่างเช่นแทนที่จะออกแบบ API สำหรับคลาสเพียงแค่เขียนโค้ดที่ใช้ประโยชน์จากคลาสพร้อมวิธีการเรียกตามที่คุณต้องการแล้วใช้ API นั้น
  • ทำอย่างอื่นเช่นท่องเน็ตหรือเล่นไพ่คนเดียวและรอให้เกิดแรงบันดาลใจ
  • คิดถึงคนที่คุณชอบที่สุดและแกล้งทำเป็นว่าคุณต้องการสร้างความประทับใจให้เธอด้วยทักษะการแก้ปัญหาของคุณ อะไรจะเป็นทางออกที่น่าประทับใจอย่างยิ่ง
  • ตรวจสอบปัญหาเพื่อหาข้อขัดแย้งหรือข้อกำหนดที่ขัดแย้งกันโดยธรรมชาติและระบุสิ่งที่พวกเขาเป็นและสิ่งที่จะทำประนีประนอม บ่อยครั้งที่มีข้อขัดแย้งดังกล่าวอยู่ แต่คุณไม่ได้ตระหนักถึงคุณมักจะละทิ้งแนวทางแก้ไขปัญหาที่เป็นไปได้เนื่องจากคุณไม่สามารถปฏิบัติตามข้อกำหนดทั้งหมดได้อย่างสมบูรณ์แบบ
  • หากคุณมีวิธีแก้ไขที่เป็นไปได้อยู่แล้ว แต่รู้สึกว่า "สกปรก" (คัดลอกวางตัวแปรทั่วโลกรหัสสปาเก็ตตี้ ฯลฯ ) ให้ใช้วิธีนี้แล้วปรับปรุงให้ดีขึ้นหลังจากนั้น

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

4
อย่างไรก็ตามโปรดทราบว่าจำนวนของ "ฉันจะแก้ไขในภายหลัง" ซึ่งเปลี่ยนเป็น "ฉันได้แก้ไขแล้ว" คือ (อย่างน้อยก็ในประสบการณ์ของฉัน) เล็ก ๆ น้อย ๆ
Gareth

3
Gareth: จริง แต่ความคิดไม่ได้ทำให้ดีขึ้นในสัปดาห์หน้าเดือนหน้าหรือทุกครั้ง แต่ทันทีหลังจากที่ได้ทำงาน มันมีความหมายเป็นวิธีการแตกถั่วแข็ง
281377

3
ฉันไม่ได้ท่องเน็ตเพื่อรอให้แรงบันดาลใจเกิดขึ้น คุณต้องใช้รอบสมองที่ไม่ได้ใช้งานเพื่อรับแรงบันดาลใจให้เกิดขึ้นและการท่องเน็ตเป็นวิธีที่จะทำให้วงจรสมองที่ไม่ทำงานเหล่านั้นสูญเปล่า ไปช้อปปิ้งเดินเล่นขี่จักรยานทำความสะอาดอพาร์ทเมนต์ของคุณทำสิ่งที่ไม่ใช้พลังสมองมากนัก แรงบันดาลใจจะมาเร็วขึ้นภายใต้สถานการณ์เหล่านั้น
Ken Bloom

1
Geek: ฉันรู้ว่า # 4 ฟังดูขัดแย้งเล็กน้อย แต่บางครั้งมันใช้งานได้จริงสำหรับฉัน โดยเฉพาะอย่างยิ่งในสถานการณ์ที่ดูเหมือนเป็นไปได้มากกว่าหนึ่งวิธีและปัญหาคือการเลือกหนึ่งในแนวทางเหล่านั้น # 6 หมายถึงไม่ควรถูก จำกัด โดยสิ่งที่ไม่ควรทำในอาชีพของเรา บางครั้งเรามีกฎภายในเช่น "หลีกเลี่ยงตัวแปรทั่วโลก" จนถึงจุดที่เราปฏิเสธการแก้ปัญหาทุกอย่างโดยไม่รู้ตัวซึ่งใช้เทคนิคที่เลิกใช้แล้ว
281377

20

ใช้การคิดโหมด R หรือโหมด L ตามที่ต้องการ

R-mode เป็นวิธีการสร้างสรรค์ที่ไม่ใช้คำพูดที่เรามักเชื่อมโยงกับจิตใต้สำนึก L-mode เป็นวิธีการเชิงเส้นตรรกะและวาจาที่เกี่ยวข้องกับ "เสียงภายใน" ของคุณ

หากดูเหมือนว่าปัญหาจะเกิดขึ้นได้อาจเป็นเพราะคุณกำลังพยายามแก้ไขโดยใช้โหมดการคิดที่ไม่ถูกต้อง สำหรับโปรแกรมเมอร์โหมดคิดเริ่มต้นมีแนวโน้มที่จะเป็นโหมด L ดังนั้นจึงอาจใช้งานได้สำหรับคุณที่จะปิดการทำงานชั่วคราวและเข้าถึงโหมด R

วิธีเข้าถึงการคิดในโหมด R

มีหลายวิธี แต่อาจลองใช้วิธี Poincare (ตั้งชื่อตามนักคณิตศาสตร์ที่มีชื่อเสียง)

จดทุกสิ่งที่คุณรู้เกี่ยวกับปัญหา แก้ไขทุกแง่มุมง่ายๆของมันทันที (ถ้ามี) เลือกรายการเดียวจากรายการ "ปัญหาที่ยาก" ที่เหลืออยู่แล้วออกไปเดินเล่นที่คุณจะไม่ถูกรบกวนหรือฟุ้งซ่าน

อย่าพยายามวิเคราะห์ปัญหาในระหว่างการเดินเพียงปล่อยให้จิตใจของคุณเดินและสังเกตภาพหรือความรู้สึกที่น่าสนใจที่เกิดขึ้นซึ่งอาจเกี่ยวข้องกับปัญหา ปล่อยให้พวกเขารวมตัวกัน หากการนัดหยุดงานเป็นแรงบันดาลใจให้หยุดเดินและกลับไปเขียนความเข้าใจที่คุณได้รับทันที

ล้างและทำซ้ำจนกว่าปัญหาทั้งหมดจะมีข้อมูลเชิงลึก จากนั้นเริ่มสำรวจข้อมูลเชิงลึก

หนังสือแนะนำ

การอ่านการคิดและการเรียนรู้เชิงปฏิบัติอาจช่วยให้คุณแก้ปัญหาได้ดีขึ้น (ฉันดูเหมือนจะอ้างอิงหนังสือเล่มนี้มากเมื่อเร็ว ๆ นี้ ... )


4
การคิดเชิงปฏิบัติและการเรียนรู้ในทางปฏิบัติเป็นสิ่งที่ยอดเยี่ยม
Brad Cupit

Ref: drawright.com/theory.htm (R-mode และ L-mode คืออะไร)
mctylr

17

ถามคนอื่น ...

ไม่จริงจัง ทรัพยากรที่ใหญ่ที่สุดของคุณสามารถเป็นคนที่นั่งถัดจากคุณ อย่าแม้แต่จะถามพวกเขาสำหรับคำตอบของปัญหาขอให้พวกเขานั่งถัดจากคุณและให้คุณอธิบายปัญหา

บ่อยครั้งที่คุณจะทำมันออกมาเป็นคำพูด

บางครั้งบุคคลอื่นจะถามคำถามหรือชี้ให้เห็นรายละเอียดซึ่งจะปลดล็อคประตูระบายน้ำทางจิต

ในที่สุดคุณจะเรียนรู้ที่จะพูดจาในหัวของคุณโดยไม่ต้องใช้หุ่นและสังเกตรายละเอียดที่สำคัญในปัญหาได้เร็วขึ้น

และหากทุกอย่างล้มเหลวอย่างน้อยพวกเขาก็อาจแสดงเทคนิคที่คุณไม่คิดว่าจะใช้


การถามผู้อื่นหรือการจัดตั้งกลุ่มการศึกษาเป็นวิธีที่ดีในการเรียนรู้
Gary Rowe

ฉันทำแบบเดียวกันเพื่อให้ได้แนวคิดจากฉันและนี่คือวิธีที่ดีที่สุดวิธีหนึ่ง
Viswa

เทคนิคนี้เป็นที่รู้จักกันเป็นยางหลบบทความดี ๆ เกี่ยวกับมันในการเข้ารหัสสยองขวัญcodinghorror.com/blog/2012/03/rubber-duck-problem-solving.htmlและวิกิพีเดียยังเป็นประโยชน์en.wikipedia.org/wiki/Rubber_duck_debugging
ทะเลาะวิวาท

9

ที่จริงคำตอบสั้น ๆ ของฉันคือ "การแก้ปัญหามากขึ้น" แต่ประเด็นก็คือ: ให้ความสนใจกับปัญหาและอย่ายอมแพ้ อย่าขอความช่วยเหลือจาก StackOverflow หรืออะไรก็ตาม (การอ่าน StackOverflow ไม่เป็นไร!) ลองอย่างหนักจนกว่าคุณจะได้วิธีแก้ปัญหาที่ใช้งานได้เกือบแล้วคุณเกือบจะบรรลุเป้าหมายแล้ว และดำเนินการต่อไปจนกว่าคุณจะมีทางออกที่น่าพอใจ

สำหรับฉันการแก้ปัญหาคือสองสิ่ง:

  • กลยุทธ์การแก้ปัญหา
  • ความเพียรและความอดทนแห้ว

จุดที่ 2 มีความสำคัญอย่างยิ่งในความคิดของฉันเพราะมันบังคับให้คุณเปลี่ยนความคิดของคุณอีกต่อไปคุณจะติดอยู่กับปัญหา นอกจากนี้ยังช่วยให้คุณใช้เวลามากขึ้นในการแก้ปัญหาช่วยให้คุณพัฒนาทักษะของคุณได้มากขึ้น ;-)

อย่างไรก็ตามฉันขอแนะนำให้คุณอ่าน Edward de Bono แม้ว่าฉันจะได้รับทักษะการแก้ปัญหาของฉันเป็นหลักโดยการศึกษาฟิสิกส์การเขียนของเขาเป็นที่น่าสนใจจริงๆ

ชุดเครื่องมือแก้ปัญหาของฉันคือ:

  • ลองสุ่มอะไรซักอย่าง
  • อ่านบทความ / บล็อก / โพสต์แบบสุ่มเกี่ยวกับหัวข้อที่ฉันเกี่ยวข้อง (หรือหัวข้อที่เชื่อมโยงอย่างใกล้ชิด)
  • ทำให้การวาดภาพที่ดี
  • แบ่งปัญหาออกเป็นหลาย ๆ ปัญหา แต่ง่ายกว่า
  • ทำอย่างอื่น
  • Google เป็นสิ่งที่เกี่ยวข้องกับปัญหา
  • พูดคุยกับคนอื่นเกี่ยวกับปัญหา
  • ทำรายการสิ่งที่ต้องทำ
  • เขียนสิ่งที่คุณรู้เกี่ยวกับผลกระทบของปัญหาเพื่อให้คุณสามารถค้นหารูปแบบได้ง่ายขึ้น

โปรดทราบว่าเครื่องมือเหล่านี้ส่วนใหญ่สามารถใช้ซ้ำได้

และอัลกอริทึมของฉันคือ:

  1. เครื่องมือชุดใดในการแก้ปัญหาของฉันในขณะนี้มีความหมายมากที่สุด?
  2. ปัญหาไม่ได้รับการแก้ไข? ดำเนินการต่อด้วย 1. ;-)

ขั้นตอนที่ 1 คือการตัดสินใจที่ยากลำบาก แต่คุณตัดสินใจได้ดีกว่ายิ่งฝึกฝนมากขึ้น

โอ้และฉันเกือบลืมส่วนผสมที่สำคัญที่สุด:

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


ฉันค้นหาหน้านี้เพื่อหาคำว่า "ฟิสิกส์" เพื่อดูว่ามีคนเขียนถึงมันแล้วหรือยัง คณิตศาสตร์เป็นอีกสิ่งหนึ่ง
Mark C

คุณค่าของการเรียนวิชาฟิสิกส์เกี่ยวกับความสามารถในการแก้ปัญหาของคุณนั้นยากที่จะกล่าวเกินจริง
Mark C

+1 สำหรับการคิดเชิงบวก หากคุณพบว่าตัวเองกำลังทำงานอยู่ความสามารถในการแก้ปัญหาของคุณจะลดลง ดูปัญหาตามที่ให้ความรู้
Gary Rowe

7

เริ่มทำงานกับทักษะในการระบุปัญหาเช่นกัน บางครั้งคุณต้องรับรู้ว่ามีปัญหาก่อนจึงจะสามารถแก้ไขได้ ในโรงเรียนพวกเขาต้องการคำตอบมากเกินไปและคำถามไม่เพียงพอสำหรับนักเรียน

ค้นหาผู้คนรอบตัวคุณที่แก้ปัญหาและถามพวกเขาว่าพวกเขาทำอย่างไร

เตรียมที่จะผิด คุณจะไม่ปรับปรุงถ้าคุณเก็บทุกอย่างไว้ในตัวคุณเองและคุณจะไม่ใช้สิ่งใด


+1 สำหรับ "ในโรงเรียนพวกเขาต้องการคำตอบมากเกินไปและมีคำถามไม่เพียงพอจากนักเรียน" นี่เป็นความจริงและใช้เวลาในการเรียนรู้ที่จะถามคำถามที่ถูกต้อง ... ตรวจสอบทุกที่ที่มีตัวอย่างคำถามที่ไม่ดีมากมาย
Rémi

4

ประโยชน์หลักของการศึกษาวิทยาศาสตร์คอมพิวเตอร์สำหรับวิศวกรซอฟต์แวร์คือความสามารถในการสร้างและทำความเข้าใจกับบทคัดย่อ Abstractions ใช้สำหรับห่อหุ้มฟังก์ชั่นทั่วไปเช่นวิธีการเรียน String เป็นแพคเกจแน่นนำมาใช้ใหม่ที่ช่วยให้เรามุ่งเน้นไปที่ปัญหาที่ใหญ่กว่า

เรียนรู้ที่จะรับรู้และสร้าง Abstractions :

แต่ที่สำคัญที่สุดนามธรรมสอนเราวิธีการทำลายปัญหาลงเป็นขนาดเล็กชิ้นจัดการได้มากขึ้น เมื่อรวมกับพื้นหลังวิทยาศาสตร์การรวมกันของทักษะเหล่านั้นสามารถสร้างวิศวกรที่มีความสามารถในการตัดผ่านเสียงรบกวนและเข้าถึงหัวใจของปัญหา

เรียนรู้การแก้ปัญหาโดยใช้วิธีการทางวิทยาศาสตร์ :

เมื่อแก้ไขปัญหาแอปพลิเคชันที่ใช้งานจริงซึ่งมีปัญหาที่ยากต่อการค้นหาอยู่บางครั้งอาจช่วยให้แอปพลิเคชันแตกสลายได้จริง (ในสภาพแวดล้อมที่ไม่ใช่การผลิต) เพื่อกำจัดตัวแปรหลายตัวเพื่อแยกและกำจัด

โดยสรุปวิธีการทางวิทยาศาสตร์เรียนรู้จากการเลือกวิชาฟิสิกส์ทั้งหมดและวิชาวิทยาศาสตร์อื่น ๆ ที่จำเป็นสำหรับปริญญาวิทยาศาสตร์คอมพิวเตอร์ช่วยแก้ปัญหาเหล่านี้ราวกับว่าเรากำลังทดลองยาหลอกและทดลองยาใหม่ในอาสาสมัครหลายชุด เช่นเดียวกับนักวิทยาศาสตร์ที่บางครั้งต้องทำให้บางสิ่งแย่ลงเพื่อให้ดีขึ้นบางครั้งเราในฐานะวิศวกรต้องทำเช่นเดียวกัน

การคิดเชิงวิทยาศาสตร์ในลักษณะนี้ - โดยทั่วไป - มาจากการมีประสบการณ์ในพื้นหลังทางวิทยาศาสตร์เท่านั้น บางครั้งการแก้ปัญหาไม่สามารถถูกมองว่าเป็นเส้นทางเชิงเส้นจาก A ถึง B

ในระยะสั้นเรียนวิทยาศาสตร์คอมพิวเตอร์ศึกษาสาขาวิทยาศาสตร์อื่น ๆ เรียนรู้การเขียนโปรแกรมการทำงาน สิ่งเหล่านี้จะช่วยให้คุณคิดเหมือนนักวิทยาศาสตร์และคิดนอกกรอบ


เผง แยกปัญหาใหญ่เป็นปัญหาเล็ก ๆ
Bill Michell

3

ทุกอย่างขึ้นอยู่กับประเภทของปัญหาที่คุณต้องการแก้ไข แต่การเรียนรู้ที่จะคิดอย่างมีเหตุผลหากคุณไม่ได้เป็นสิ่งที่ดี

สรุปแล้วคุณจะเกลียดฉันที่จะพูด แต่การฝึกฝนทำให้สมบูรณ์แบบ ฉันไม่ได้ถูกดึงออกจากครรภ์ของแม่ฉันรู้ว่าจะแก้ปัญหาได้ดีอย่างไรและไม่มีใครทำ คุณต้องฝึกฝนและเรียนรู้วิธีการทำสิ่งต่าง ๆ ด้วยตัวคุณเอง หากคุณยังอยู่ในโรงเรียนและไม่มีชั้นเรียนการเขียนโปรแกรม / วิทยาการคอมพิวเตอร์คณิตศาสตร์และวิทยาศาสตร์ก็ค่อนข้างดีสำหรับการพัฒนาทักษะเหล่านี้


3

ฉันคิดว่าสิ่งที่คุณกำลังมองหาคือการวิเคราะห์พฤติกรรมด้วยวิทยาการคอมพิวเตอร์

เมื่อพูดถึงสิ่งที่เรา 99% ทำในสนามเพลาะไม่มีอะไรใหม่ภายใต้ดวงอาทิตย์ ดังนั้นคุณอาจเห็นปัญหาและรับรู้ว่าเป็นปัญหา DP หรืออีกปัญหาหนึ่งที่อาจได้รับประโยชน์จากการบันทึก ฯลฯ

คุณจะได้รับความรู้นี้ได้อย่างไร? การศึกษาระดับปริญญา CS ที่เหมาะสมเป็นจุดเริ่มต้นที่ดี ... ไม่ใช่วิศวกรรมซอฟต์แวร์หรือระบบสารสนเทศ แต่สิ่งที่นักศึกษาระดับปริญญาตรีส่วนใหญ่บ่นเกี่ยวกับ

คุณสามารถทำได้ด้วยตัวเอง แต่มันอาจจะยากขึ้น ฉันจะเริ่มต้นด้วยสองหลักสูตรนี้:

แนะนำอัลกอริทึม

แนวคิดที่ยอดเยี่ยมในเชิงทฤษฎี CS


2

คำตอบของฉันเกี่ยวข้องเฉพาะกับการเข้ารหัส แต่สามารถนำไปใช้กับอะไรก็ได้

  1. ก้าวออกจากคีย์บอร์ด คุยเดินไปวิ่งพูดคุยกับเพื่อนร่วมงานทางกาแฟ
  2. มีอายุมากกว่า 10 ปี! ประสบการณ์ของฉันช่วยฉันอย่างมากมาย
  3. ใช้สับไบนารี แยกปัญหาออกเป็นสองส่วนและทำให้ปัญหาแคบลง: ทำซ้ำ
  4. จำ Sherlock Holmes: เมื่อคุณกำจัดความเป็นไปได้สิ่งที่เหลืออยู่ (ไม่ว่าจะแปลก) ก็คือคำตอบ
  5. ตรวจสอบข้อมูลการทดสอบของคุณ มากกว่าครึ่งหนึ่งของปัญหาที่ยุ่งยากของฉันนั้นเกิดจากข้อมูลที่ผิดพลาดและไม่ใช่รหัสหรืออัลกอริธึมที่ผิดพลาด

1

ในแง่ของการปฏิบัติฉันสามารถบอกคุณได้ว่าฉันทำอะไร ฉันสนใจคณิตศาสตร์ประยุกต์มากกว่าการเขียนโปรแกรม แต่คณิตศาสตร์ประยุกต์ที่ใช้กับคอมพิวเตอร์คือการเขียนโปรแกรมแปลก ๆ ฉันเห็นปัญหาและแนวทางแก้ไข ก่อนหน้า (หรือบางครั้งถ้าพูดว่างานของฉันต้องมีวิธีแก้ปัญหาอย่างทันเวลา) การเชื่อมโยงไปยังวิธีแก้ปัญหาที่รู้จัก - หรือไลบรารีรหัสที่มีอยู่ฉันต้องการถามตัวเองว่า: "ถ้านี่เป็นปัญหาบริสุทธิ์ - คุณจะไม่สามารถค้นหา โซลูชันกระป๋องคุณจะดำเนินการอย่างไร " ถ้าคำตอบนั้นตรงไปตรงมาให้ลองเขียนคำตอบ (วิเคราะห์หรือโปรแกรมคอมพิวเตอร์เพื่อแก้ปัญหา) ไม่สนใจกรณีที่มีความซับซ้อน - คุณสนใจวิธี exloring และอัลกอริธึมไม่ใช่การสร้างห้องสมุดที่มีอยู่ใหม่ ถ้าวิธีแก้ปัญหานั้นต้องใช้ความพยายามมากเกินไปอย่าเขียนโปรแกรมแบบเต็ม แต่อย่างน้อยให้นึกถึงโครงสร้างข้อมูลและวิธีการต่าง ๆ ที่คุณต้องการใช้ ยังคิดเกี่ยวกับวิธีการทางเลือก


1

มีคำถาม SOที่ยอดเยี่ยมเกี่ยวกับเรื่องนี้

คำตอบของฉันคือ:

วิธีที่ดีที่สุดในการปรับปรุงคือฝึกฝน!

สมัครสมาชิกฟีด RSS ได้ที่: http://www.mensa.org.uk/puzzles/และใช้เวลาในการทำให้เสร็จสมบูรณ์เมื่อออกมา

ปฏิทินตั้งโต๊ะปริศนาต่อวัน (เช่นhttp://www.calendars.com/product.asp?PID=1&MGID=-1&IID=46387&cm_mmc=Affiliate_Program--performics--k137666-_-DDI%20Link ) เป็นสิ่งที่ดี ความคิดเช่นกันเพราะมันจะทำให้คุณมีปัญหาปกติขนาดกัดและหลากหลายเพื่อแก้ปัญหา

ในขณะที่สิ่งเหล่านี้จะไม่ได้อยู่ในหัวข้อของปัญหาที่คุณจะพบกับตัวเอง แต่ความหลากหลายเป็นสิ่งสำคัญที่จะบังคับให้คุณคิดในแบบที่คุณไม่เคยมีมาก่อนซึ่งจริงๆแล้วการแก้ปัญหาคืออะไร

แก้ไข: ตรวจสอบด้วย: http://www.mindtools.com/pages/main/newMN_TMC.htmสำหรับเคล็ดลับการแก้ปัญหาที่ดี


1

เล่นหมากรุก

การเล่นหมากรุกเป็นผู้ฝึกสอนที่ยอดเยี่ยมในการแก้ปัญหาการเขียนโปรแกรม ชั้นของปัญหาและต้นไม้ตรรกะมีความสัมพันธ์กันอย่างมาก นอกจากนี้ยังช่วยให้คุณคิดล่วงหน้าและวางแผนก่อนที่จะลงเส้นทางที่ไม่ดีและเสียเวลา

หมากรุกยังต้องการความสมดุลระหว่าง "โหมดการคิด" ทางซ้ายและขวาหากคุณวิเคราะห์มากเกินไปคุณสามารถจมลงไปในการพยายามคำนวณทุกสิ่งซึ่งเป็นไปไม่ได้ อย่างไรก็ตามทุกแรงบันดาลใจที่สร้างสรรค์จะต้องมีการตรวจสอบด้วยการคำนวณเพื่อให้แน่ใจว่าเหมาะกับความเป็นจริงที่เป็นรูปธรรมของสถานการณ์ ปัญหาที่ยากลำบากเป็นเช่นนี้

หมากรุกแสดงให้เห็นว่าการศึกษาและการฝึกฝนนำไปสู่การพัฒนาที่แข็งแกร่งในแบบเชิงเส้นมาก สิ่งนี้เป็นจริงด้วยการแก้ปัญหาโปรแกรมเช่นกัน

การเล่นหมากรุกสามารถช่วยให้คุณเข้าใจมากขึ้นว่าจะต้องเรียนรู้มากแค่ไหน แม้ว่าคุณจะเคยเขียนโปรแกรม (หรือเล่นหมากรุก) เป็นเวลา 10 ปีคุณยังไม่ได้เป็นปรมาจารย์


ฉันพบว่าจิตใจของฉันรุนแรงขึ้นด้วยการเล่นหมากรุกเป็นประจำ
พอลนาธา

1

ฉันเพิ่งได้รับการแก้ปัญหาที่โครงการออยเลอร์ ปัญหาต่าง ๆ มีความยากต่างกัน โดยปกติแล้วโซลูชันไม่จำเป็นต้องใช้โค้ดจำนวนมาก แต่คุณต้องพิจารณาปัจจัยหลายอย่างเช่นเวลาทำงานของอัลกอริทึมของคุณ คุณสามารถใช้ภาษาใดก็ได้ตามที่คุณต้องการเพียงแค่ป้อนคำตอบ มีวิธีแก้ไขปัญหาที่ดีที่สุดสำหรับบทความมากมายและการอภิปรายเกี่ยวกับปัญหาแต่ละอย่างมากมาย พยายามแก้ปัญหาหนึ่งเรื่องทุกวันและคุณจะประหลาดใจว่าการแก้ไขปัญหาและการวิเคราะห์ของคุณดีขึ้นเพียงใด สำหรับเครดิตเพิ่มเติมลองแก้ปัญหาเดียวกันในหลายภาษาเช่นภาษาขั้นตอน (อาจเป็นภาษา C ++) ภาษาสคริปต์ (เช่นไพ ธ อน) และภาษาที่ใช้งานได้ (เช่น F #)


1

ผมมาจากพื้นหลังวิทยาศาสตร์ดังนั้นเมื่อฉันมองไปที่ปัญหาผมมักจะใช้กลยุทธ์จากวิธีการทางวิทยาศาสตร์ ฉันชอบตั้งค่า "การทดลอง" โดยเฉพาะตามสมมติฐานและใช้ "การควบคุม" ดังนั้นฉันจะสร้างบางสิ่งแล้วเปลี่ยน / เพิ่มเพียง 1 อย่างเกี่ยวกับมันและดูว่าผลลัพธ์ของการเปลี่ยนแปลง / การเพิ่มขึ้นนั้นคืออะไรและถ้าฉัน ' m ไม่ได้รับผลลัพธ์ที่ฉันต้องการฉันจะสลับกลับและเปลี่ยนอย่างอื่น วิธีนี้ใช้งานได้ดีสำหรับการแก้ไขปัญหา / แก้ไขรหัส บางครั้งคุณได้คำตอบที่คุณต้องการ แต่คุณจะได้เรียนรู้สิ่งใหม่ ๆ อยู่เสมอแม้ว่าคุณจะล้มเหลว ฉันชอบที่จะเรียนรู้ผ่านการลดทอน- เริ่มต้นด้วยสิ่งที่มีอยู่แล้ว (ดีเสมอที่จะเริ่มต้นด้วยบางสิ่งที่คุณอาจไม่เข้าใจ แต่คุณรู้ว่าทำงานได้) และดูซับซ้อนสำหรับฉันและดูว่าฉันสามารถแยกมันออกเป็นส่วน ๆ ของมันและเรียนรู้วิธีการทำงานก่อน บางครั้งมันง่ายกว่าที่สมองของฉันจะจัดการเรียนรู้เช่นนี้แทนที่จะเข้าใกล้ปัญหาแบบองค์รวมและฉันสามารถใช้ความรู้นั้นเพื่อสร้างสิ่งที่ซับซ้อนที่คล้ายกันอื่น ๆ ด้วยตนเอง ฉันยังแนะนำให้อ่านหนังสือเกี่ยวกับตรรกะและเหตุผลในการเลือกผลงานจากนักคิดแบบคลาสสิคและสมัยใหม่ (เริ่มต้นด้วยอริสโตเติลและก้าวไปข้างหน้า) พวกเขาสามารถให้พื้นฐานบางอย่างของตรรกะพื้นฐานที่คุณสามารถใช้เพื่อช่วยในการแก้ปัญหาในคอมพิวเตอร์ และแน่นอนถ้าคุณไม่สามารถแก้ปัญหาได้และคุณได้พยายามทำมาสักพักให้หยุดพักสมอง การส่องสว่างในบางแง่มุมของปัญหาบางครั้งเป็นอันตราย ทุกคนต้องการพัก :)


0

ส่วนที่ยากที่สุดในการแก้ปัญหาคือ "Perceptual Narrowing"

คุณเลือกสิ่งที่ดูเหมือนจะเป็นปัญหาและหลังจากนั้นอย่างดื้อรั้นจนกระทั่งคุณหมดแรงและไม่คืบหน้า

วิธีการทำเช่นนี้คือต้องแน่ใจว่า - แน่นอน - คุณเข้าใจปัญหาจริงๆ "การแก้ปัญหาที่ถูกต้อง" เป็นส่วนที่สำคัญที่สุดในการแก้ปัญหา

บางครั้งพวกเขาเรียกสิ่งนี้ว่า "คิดนอกกรอบ" "กล่อง" เป็นมุมมองที่แคบซึ่งอาจไม่รวมปัญหาพื้นฐานที่แท้จริง การคิดนอกกรอบคือการค้นหาปัญหาที่เหมาะสมเพื่อแก้ไข

มีหนังสือหลายเล่มเกี่ยวกับกลยุทธ์ในการหลีกเลี่ยงการตีบตันซึ่งจะเกิดขึ้นก่อนที่จะมุ่งไปที่ปัญหาที่ผิด

เคล็ดลับส่วนใหญ่คือการระบุผลลัพธ์ที่แท้จริงที่ควรจะเป็น จากนั้นหาสิ่งที่บล็อกผลลัพธ์ที่พึงประสงค์


0

สุจริตฉันคิดว่าทุกคนแตกต่างกันดังนั้นแผนที่ถนนทุกคนที่จะกลายเป็นนักแก้ปัญหาที่ดีกว่านั้นแตกต่างกัน คุณสามารถเรียนรู้จากประสบการณ์ของคนอื่นได้ แต่ในที่สุดคุณต้องก้าวสู่เส้นทางของคุณเอง นี่เป็นการเรียนรู้สิ่งที่ "ยาก" แต่ก็มีประสิทธิภาพในกรณีนี้

นี่คือวิธีที่ฉันเริ่มปรับปรุงการแก้ปัญหาของฉันแม้ว่าฉันจะยังไม่ใช่นักแก้ปัญหาที่ยอดเยี่ยม แต่ก็ดีขึ้นกว่าปีที่แล้ว ฉันได้รับโครงการใหม่ในที่ทำงานซึ่งเกี่ยวข้องกับการขยายซอฟต์แวร์ติดตามเวลาโอเพ่นซอร์สโดยเพิ่มรายงานใหม่สามรายการสำหรับการจัดการ ซอฟต์แวร์นี้เขียนด้วยภาษาที่ฉันไม่เคยใช้มาก่อนและเป็นเอกสารที่ไม่ดีและมีความสับสนอย่างมาก ฉันขุดและทำวิจัยมากมายและจากนั้นฉันเพิ่งทำรายงานในขั้นตอนเด็กเมื่อฉันมีฟังก์ชั่นพื้นฐานที่ฉันปรับปรุงพวกเขาแล้วในที่สุดฉันก็เพิ่มคุณสมบัติเพิ่มเติม

ดังนั้นในคำอื่น ๆ ฉันขอแนะนำให้คุณหาบางประเภทของอ่างล้างมือหรือว่ายน้ำโครงการโลกแห่งความจริงในการทำงาน หากปัจจุบันคุณทำงานเป็นโปรแกรมเมอร์ให้ค้นหาโครงการหรือถามหัวหน้าของคุณ หากสถานการณ์นี้ไม่สามารถหาได้นอกเวลาทำงานอาจเป็นสัญญา / งานอิสระหรือบางอย่าง ฉันแก้ปัญหาได้ดีมากและเร็วมากเมื่อฉันต้องและฉันเก็บความรู้นั้นเนื่องจากความเข้มข้นของโครงการ หากสิ่งนี้ไม่ได้ผลสำหรับคุณให้ทำสิ่งที่คนอื่น ๆ ในกระทู้นี้แนะนำ :)


0

คำตอบนั้นอยู่ในคำถามด้วยการหาทางออกที่แตกต่างกัน มีโซลูชั่นมากกว่าหนึ่งเสมอ (เช่นการเรียงลำดับสามารถทำได้หลายวิธี ได้แก่ Bubble Sort, Sortions ฯลฯ ) คุณเพียงแค่ต้องเลือกวิธีที่คุณสามารถทำได้ (Sorting) ได้อย่างมีประสิทธิภาพ ลองใช้ครั้งต่อไปที่แตกต่างกันไปเรื่อย ๆ ..... และหนังสือสำหรับการแก้ปัญหา ..... ไม่มีคุณไม่สามารถเรียนรู้ทักษะการแก้ปัญหาจากหนังสือได้รหัสมากขึ้นคุณจะได้รับความรู้เพิ่มเติมที่คุณจะได้รับ โชคดี


0

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

ฉันคิดว่าแบบฝึกหัดการแก้ปัญหาที่ดีที่สุดเกิดขึ้นเมื่อคุณก้าวข้ามระดับการปฏิบัติและคิดในแง่ของ "นี่คือสิ่งที่ฉันต้องการเพื่อแก้ปัญหาด้วยวิธีที่เหมาะสมที่สุด" ในบางกรณีคุณอาจต้องเรียนรู้ (จำนวนมาก) สิ่งใหม่ ๆ ในการปรับใช้โซลูชันทั้งหมด แต่ประเด็นสำคัญคือความสามารถของคุณในการแก้ปัญหาไม่ควร จำกัด เฉพาะเทคนิคในอดีตและปัจจุบัน

ตัวอย่างที่ใช้งานได้จริงสำหรับฉันคือฉันได้เรียนรู้วิธีการใช้งานมัลติทาสกิ้งแบบร่วมมือที่มีประสิทธิภาพเมื่อฉันตระหนักว่าปัญหาของฉันไม่จำเป็นต้องมีเธรดที่ต้องเสียค่าใช้จ่าย ในที่สุดดูเหมือนว่าจะหยุดความสะดวกสบายในบางจุด .. )


0

ในการพัฒนาแอพพลิเคชั่นปัญหามากมายที่เราเผชิญนั้นเป็นทั้งสิ่งประดิษฐ์ของเราเองหรือสิ่งประดิษฐ์ของคนงี่เง่าที่เราสืบทอดมาซึ่งทำให้รหัสฐานเมาขึ้นมา การแก้ไขปัญหาส่วนใหญ่มักจะลงมาเพื่อหาแหล่งที่มา บ่อยครั้งที่เราพบที่มันเกิดขึ้นความสามารถเพียงเป็นสิ่งที่จำเป็นเพื่อแก้มัน

ท้ายที่สุด:

  1. เรียนรู้แพลตฟอร์มของคุณ
  2. เรียนรู้เครื่องมือของคุณ
  3. เรียนรู้ว่ามีเครื่องมือใดบ้างที่พร้อมใช้งานสำหรับแพลตฟอร์มของคุณที่คุณยังไม่เคยเจอ

การฝึกสมองทั้งหมดในโลกไร้ประโยชน์โดยไม่มีข้อมูลเพื่อให้สมองใช้ เพื่อที่จะแก้ปัญหาคุณต้องรู้ว่าความเป็นไปได้นั้นคืออะไร! ถึงกระนั้นมันเร็วกว่ามากในการทำงานกับข้อมูลที่ดีแทนที่จะเป็นเพียงคำอธิบายของปัญหา

ฉันอาจคาดเดาจนกว่าวัวจะกลับบ้านทำไมบางสิ่งบางอย่างใช้เวลานานเกินไปที่จะดำเนินการ แต่ถ้าฉันบอกว่า "ให้ได้ข้อมูลก่อน" ฉันอาจเห็นว่ามีข้อยกเว้นมากมายถูกโยนออกไปและตระหนักว่าฉันสามารถเปลี่ยนเป็นคำสั่ง if แทนได้ โดยไม่ทราบวิธีการรวบรวมข้อมูลการรู้ว่าข้อยกเว้นแพลตฟอร์มของฉันใช้เวลาค่อนข้างนานและมีวิธีการตรวจสอบก่อนที่จะลองเร็วกว่าฉันจะไม่แก้ปัญหา


0

คำตอบของคุณมีสองส่วน:

a) เทคนิคสำหรับการแก้ปัญหาจริง

b) ทำให้สมองของคุณ "ดีขึ้น" โดยกำเนิดจากการคิดและการแก้ปัญหา

มีคำตอบที่ดีเกี่ยวกับเทคนิคอยู่เสมอ (สมมติว่าคุณรู้ปัญหา ฯลฯ ) ดังนั้นฉันจะไม่พูดถึงเรื่องนั้นมากนัก สำหรับการฝึกสมองของคุณมีสองสิ่งที่คุณสามารถทำได้เพื่อข้ามการซิงก์เหล่านั้นและสร้างการเชื่อมโยงระหว่างกันมากขึ้น

1) เรียนรู้ภาษาใหม่ภาษาจริง (เช่นภาษาฝรั่งเศสหรือภาษาจีนอาจเป็นทางออกที่ดีในปัจจุบัน)

2) เรียนรู้การเล่นเครื่องดนตรีใหม่

3) ทำสิ่งที่มีศิลปะเช่นสีวาดหรือประติมากรรม

4) เล่นข่วนหรือทำปริศนาอักษรไขว้

5) เต้นรำอย่างที่คุณหมายถึง ไม่ฉันไม่ได้ล้อเล่น การเต้นรำแสดงให้เห็นว่ามีผลกระทบต่อสมองและความคิดของคุณ

6) เพิ่มพูนประสบการณ์ของคุณการแก้ปัญหาที่เป็นนวัตกรรมมาจากการประยุกต์ใช้ทฤษฎีในสาขาหนึ่งไปอีกสาขาหนึ่งเพื่อศึกษาสาขาวิชาและสาขาที่คุณสนใจ

7) การออกกำลังกายการออกกำลังกายมีความสำคัญอย่างยิ่งต่อการปรับปรุงกระบวนการคิด

ในที่สุดฉันจะเสนอเคล็ดลับที่ดีที่สุดสำหรับการแก้ปัญหาที่ยาก: ใช้เวลาเดินนาน ฉันพบว่ามันใช้ปาฏิหาริย์เพื่อกำจัดสมองของคุณและให้ปัญหาหนึ่งอย่างพิจารณา



0

คำแนะนำของฉันคือการโยนหนังสือออกไป!

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

คุณอาจออกแบบรูปแบบภาพ หรือเว็บเซิร์ฟเวอร์ หรือรูปแบบการบีบอัด ระบบไฟล์ เมล็ด ปัญญาประดิษฐ์. ภาษาโปรแกรม ระบบการมองเห็นคอมพิวเตอร์

สิ่งที่คุณสนใจมีความซับซ้อนพอสมควรและเป็นสิ่งที่คุณไม่เคยเรียนรู้มาก่อน อย่าอ่านเกี่ยวกับมัน: เพียงแค่กระโดดเข้าไปในการทดลอง ทำผิดพลาด ประกอบล้อใหม่

อย่าขอความช่วยเหลือ อยู่ห่างจากบทเรียน อยู่ห่างจากทฤษฎี อย่าดึงสารละลายออกจากชั้นวาง

ทำไม?

  • เราเรียนรู้ได้ดีที่สุดจากความผิดพลาด
  • มันให้โอกาสคุณในการฝึกฝนหาวิธีแก้ปัญหาอย่างสร้างสรรค์มากกว่าการไหลเวียนกลับและปรับแก้ปัญหาแบบเก่า
  • คุณถูกบังคับให้ประเมินความคิดของคุณ คุณไม่สามารถประเมินได้โดยไม่ต้องพัฒนาความเข้าใจที่ดีเกี่ยวกับเครื่องมือปัญหาที่คุณแก้ไขและแนวคิดที่คุณต้องการประเมิน สิ่งนี้นำไปสู่ความเข้าใจในหัวข้อที่ลึกซึ้งยิ่งขึ้นกว่าที่คุณจะพัฒนา (อย่าลังเลที่จะอ่านเกี่ยวกับเครื่องมือที่คุณใช้อย่าเพิ่งอ่านเกี่ยวกับปัญหาที่คุณพยายามแก้ไข)

ลองสักสองสามครั้งและเมื่อคุณรู้สึกมีความสุขกับสิ่งที่คุณทำสำเร็จให้ทิ้งไว้สองสามเดือน จากนั้นกลับมาใหม่และดูว่าคุณสามารถหามุมมองใหม่ หลังจากนั้นก็ถึงเวลาที่จะเริ่มอ่านเกี่ยวกับปัญหาและวิธีที่คนอื่นแก้ไขได้ (หรือพูดคุยกับผู้คน) เมื่อถึงจุดนี้แทนที่จะพูดกับตัวเองว่า "ใช่นั่นสมเหตุสมผล" ในขณะที่คุณอ่านคุณจะพูดว่า "ใช่แน่นอน " หรือ "ดีพอสมควร" หรือ "ว้าวนั่นช่างฉลาด"

คุณจะคิดอย่างมีวิจารณญาณมากกว่านี้เกี่ยวกับสิ่งที่คุณอ่านและคุณจะเข้าใจและจดจำได้ง่ายขึ้นเพราะคุณมี "กรอบจิต" ขนาดใหญ่ที่แนบมา คุณจะรู้สึกดีกับสิ่งต่าง ๆ ที่คุณค้นพบได้อย่างอิสระและคุณจะเดินไปพร้อมกับความรู้ใหม่ ๆ มากมาย

อย่าพยายามทำให้โซลูชันของคุณสมบูรณ์แบบ เพียงพิสูจน์ตัวเองว่าคุณสามารถแก้ปัญหาได้ ยอมรับทัศนคติที่ "สามารถทำได้" และหากคุณรู้สึกหวาดกลัวกับปัญหาโปรดจำไว้ว่าคนที่แก้ไขปัญหาครั้งแรกอาจรู้ได้มากเท่าที่คุณทำ (อันที่จริงพวกเขาไม่รู้ว่ามันมีทางออก!)


0

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

มีเทคนิคและวิธีการต่างๆ ในการแก้ปัญหาที่คุณสามารถอ่านได้และคุณสามารถอ่านเกี่ยวกับเครื่องมือและเทคโนโลยีที่คุณสามารถใช้เพื่อแก้ปัญหาในโดเมนเฉพาะ ถ้าคุณไม่นึกถึงปัญหาอย่างต่อเนื่องพยายามหาวิธีแก้ปัญหา (หาวิธีแก้ปัญหาที่หลากหลายสำหรับทุกปัญหาและประเมินปัญหาซึ่งกันและกัน) แล้วประเมินวิธีแก้ปัญหาของคุณเทียบกับวิธีแก้ปัญหาที่พัฒนาโดยคนอื่น ๆ การแก้

ผมขอแนะนำให้ยกขึ้นสำเนาของการคิดในทางปฏิบัติและการเรียนรู้: Refactor wetware ของคุณแอนดี้ล่า มันเป็นหนังสือเกี่ยวกับการทำความเข้าใจว่าคุณคิดอย่างไรตอบสนองและเรียนรู้ มันนำมาซึ่งทฤษฎีที่เกี่ยวข้องจากทฤษฎีพฤติกรรมและวิทยาศาสตร์พุทธิปัญญาอื่น ๆ มันมุ่งไปที่นักพัฒนาซอฟต์แวร์โดยเฉพาะ แต่ใช้กับผู้มีความรู้ใด ๆ


0

สำหรับมือใหม่ในการเขียนโปรแกรมเหมือนตัวเองฉันแนะนำหนังสือ "Think Like a Programmer" ในบทแรกนั้นจะครอบคลุมถึงเทคนิคการแก้ปัญหาเช่นการปรับและการแบ่งปัญหาเริ่มต้นด้วยสิ่งที่คุณรู้การลดการเปรียบเทียบและการทดลอง

จากนั้นจะมีเทคนิคขั้นสูงเพิ่มเติมพร้อมตัวอย่างใน C ++: การแก้ปัญหาอาร์เรย์, พอยน์เตอร์และหน่วยความจำแบบไดนามิก, คลาส, การเรียกซ้ำ, การใช้รหัสซ้ำ ฉันไม่สามารถแสดงความคิดเห็นในส่วนนี้เพราะมันยากเกินไปสำหรับฉัน


-1

ฉันแก้ปัญหาให้ได้มากที่สุด ฉันยังต้องการหนังสือปริศนาบางอย่างเช่นนี้ ฉันยังคนจรจัดกับเกมแก้ปัญหาเช่นเกมคณิตศาสตร์ที่เกี่ยวข้องกับตัวเลขเฉพาะหรืออะไรบางอย่างซูโดกุหอคอยแห่งฮานอย ฯลฯ เพียงแค่หาสิ่งที่จะแก้ไข และรหัสเมื่อเป็นไปได้


-1

บายแก้ปัญหามากมาย!

คุณเริ่มต้นด้วยปัญหาง่าย ๆ และคุณจะเปลี่ยนไปสู่ปัญหาที่ยากขึ้นเมื่อสิ่งที่ง่ายกลายเป็นกิจวัตรแทนที่จะเป็นปัญหา


-4

อย่าทำตัวตามทฤษฎีจงฝึกให้มากขึ้น ด้วยการฝึกฝนมาพร้อมกับประสบการณ์

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.