คำถามติดแท็ก language-agnostic

ใช้แท็กนี้สำหรับคำถามโปรแกรมที่เป็นอิสระจากภาษาการเขียนโปรแกรมเฉพาะใด ๆ


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


30
ออกแบบสแต็กที่ getMinimum () ควรเป็น O (1)
นี่เป็นหนึ่งในคำถามสัมภาษณ์ คุณต้องออกแบบสแต็กที่เก็บค่าจำนวนเต็มเพื่อให้ฟังก์ชัน getMinimum () ส่งคืนองค์ประกอบต่ำสุดในสแต็ก ตัวอย่างเช่นพิจารณาตัวอย่างด้านล่าง กรณีที่ # 1 5 -> ด้านบน 1 4 6 2 เมื่อเรียกว่า getMinimum () ควรส่งคืน 1 ซึ่งเป็นองค์ประกอบขั้นต่ำ ในกอง กรณีที่ # 2 stack.pop () stack.pop () หมายเหตุ: ทั้ง 5 และ 1 จะดึงออกมาจากสแต็ก ดังนั้นหลังจากนี้กอง ดูเหมือนกับ, 4 -> ด้านบน 6 2 เมื่อเรียก getMinimum () ควรส่งคืน 2 ซึ่งเป็นค่าต่ำสุดใน ซ้อนกัน. …

6
ขั้นตอนวิธีการตัดเล็บเท้าของชาวยิวที่ดีที่สุดคืออะไร?
ฉันกำลังทำงานกับซอฟต์แวร์สำหรับเครื่องที่จะตัดเล็บเท้าโดยอัตโนมัติเพื่อให้ผู้ใช้สามารถสอดเท้าเข้าไปแล้ววิ่งได้แทนที่จะต้องทำด้วยตนเองโดยการกัดหรือใช้กรรไกรตัดเล็บ ฐานผู้ใช้ที่มีศักยภาพของเราจำนวนมากน่าจะเป็นชาวยิวและเห็นได้ชัดว่ามีประเพณีเกี่ยวกับการไม่ตัดเล็บเท้า ( หรือเล็บมือ ) ตามลำดับ ดูเหมือนจะมีความเห็นที่ไม่เห็นด้วยกับการนำประเพณีนี้ไปใช้อย่างถูกต้อง แต่เราคิดว่ากฎต่อไปนี้เพียงพอที่จะรองรับผู้ที่ปฏิบัติทางศาสนาห้ามไม่ให้ตัดเล็บเท้าตามลำดับ: ไม่ควรตัดเล็บเท้า 2 ข้างติดกัน ลำดับการตัดที่เท้าซ้ายไม่ควรตรงกับลำดับที่เท้าขวา ลำดับการตัดของการวิ่งสองครั้งติดต่อกันไม่ควรเหมือนกัน ลำดับไม่ควรคาดเดาได้ง่ายดังนั้นการเข้ารหัสลำดับแบบสลับจึงไม่ทำงาน นี่คือวิธีที่เราตัดสินใจที่จะนับนิ้วเท้า: 5 4 3 2 1 1 2 3 4 5 Left foot Right foot ฉันได้เขียนรหัสในการแก้ปัญหา แต่อัลกอริทึมที่ใช้ย่อยที่ดีที่สุด: ในความเป็นจริงการปฏิบัติงานในกรณีที่เลวร้ายที่สุดคือO (∞) วิธีการทำงานก็เปรียบได้กับbogosort นี่คือการลดความซับซ้อนของรหัสเทียมของรหัสจริงที่ใช้: function GenerateRandomSequence sequence = Array[5] foreach (item in sequence) item = RandomNumberBetween(1,5) return sequence function …

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

17
TDD เทียบกับการทดสอบหน่วย [ปิด]
ปิด . คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ขณะนี้ยังไม่ยอมรับคำตอบ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เน้นไปที่ปัญหาเดียวโดยแก้ไขโพสต์นี้เท่านั้น ปิดให้บริการใน5 ปีที่ผ่านมา ปรับปรุงคำถามนี้ บริษัท ของฉันค่อนข้างใหม่สำหรับหน่วยทดสอบโค้ดของเรา ฉันอ่านเกี่ยวกับ TDD และการทดสอบหน่วยมาระยะหนึ่งแล้วและฉันมั่นใจในคุณค่าของมัน ฉันพยายามที่จะโน้มน้าวทีมของเราว่า TDD คุ้มค่ากับความพยายามในการเรียนรู้และเปลี่ยนความคิดของเราเกี่ยวกับวิธีที่เราเขียนโปรแกรม แต่มันเป็นการต่อสู้ ซึ่งนำฉันไปสู่คำถามของฉัน มีหลายคนในชุมชน TDD ที่เคร่งศาสนามากเกี่ยวกับการเขียนแบบทดสอบแล้วก็โค้ด (และฉันก็อยู่ด้วย) แต่สำหรับทีมที่กำลังต่อสู้กับ TDD การประนีประนอมยังคงก่อให้เกิดประโยชน์เพิ่มเติมหรือไม่? ฉันอาจประสบความสำเร็จในการให้ทีมเขียนการทดสอบหน่วยเมื่อเขียนโค้ดแล้ว (อาจเป็นข้อกำหนดสำหรับการตรวจสอบโค้ด) และสมมติฐานของฉันก็คือยังมีคุณค่าในการเขียนการทดสอบหน่วยเหล่านั้น อะไรคือวิธีที่ดีที่สุดในการนำทีมที่ดิ้นรนเข้าสู่ TDD และการล้มเหลวนั้นยังคุ้มค่าที่จะเขียนการทดสอบหน่วยแม้ว่าจะเป็นหลังจากเขียนโค้ดแล้ว? แก้ไข สิ่งที่ฉันได้รับจากสิ่งนี้คือสิ่งสำคัญสำหรับเราที่จะต้องเริ่มการทดสอบหน่วยซึ่งอยู่ที่ไหนสักแห่งในกระบวนการเข้ารหัส สำหรับผู้ที่อยู่ในทีมที่รับแนวคิดนี้ให้เริ่มขยับไปสู่ ​​TDD มากขึ้นและทดสอบก่อน ขอบคุณสำหรับข้อมูลของทุกคน ติดตาม เราเพิ่งเริ่มโครงการขนาดเล็กใหม่และทีมงานส่วนน้อยใช้ TDD ส่วนที่เหลือเขียนการทดสอบหน่วยหลังรหัส หลังจากที่เราสรุปส่วนการเข้ารหัสของโครงการแล้วการทดสอบหน่วยการเขียนเหล่านั้นหลังจากโค้ดนั้นรู้สึกประหลาดใจที่เห็นโค้ดเดอร์ TDD ทำไปแล้วและมีโค้ดที่มั่นคงกว่า มันเป็นวิธีที่ดีในการเอาชนะผู้ที่คลางแคลงใจ เรายังคงมีความเจ็บปวดมากมายรออยู่ข้างหน้า แต่การต่อสู้ของเจตจำนงดูเหมือนจะจบลงแล้ว ขอบคุณสำหรับทุกคนที่ให้คำแนะนำ!

9
เหตุใดจึงไม่สามารถใช้ regex เพื่อแยกวิเคราะห์ HTML / XML: คำอธิบายอย่างเป็นทางการในแง่ของคนธรรมดา
ไม่มีวันใดใน SO ที่ผ่านไปโดยไม่มีคำถามเกี่ยวกับการแยกวิเคราะห์ (X) HTML หรือ XML ด้วยนิพจน์ทั่วไปที่ถูกถาม แม้ว่าจะค่อนข้างง่ายที่จะสร้างตัวอย่างที่แสดงให้เห็นถึงความไม่เป็นไปได้ของ regexes สำหรับงานนี้หรือด้วยชุดของนิพจน์เพื่อแสดงถึงแนวคิด แต่ฉันยังไม่พบคำอธิบายอย่างเป็นทางการเกี่ยวกับ SO ใน SO ว่าทำไมสิ่งนี้ถึงไม่สามารถทำได้ในคนธรรมดา เงื่อนไข คำอธิบายที่เป็นทางการเพียงอย่างเดียวที่ฉันสามารถพบได้ในเว็บไซต์นี้อาจถูกต้องมาก แต่ก็ค่อนข้างคลุมเครือสำหรับโปรแกรมเมอร์ที่เรียนรู้ด้วยตนเอง: ข้อบกพร่องที่นี่คือ HTML เป็นไวยากรณ์ Chomsky Type 2 (ไวยากรณ์ฟรีบริบท) และ RegEx เป็นไวยากรณ์ Chomsky Type 3 (นิพจน์ทั่วไป) หรือ: นิพจน์ทั่วไปจับคู่ได้เฉพาะภาษาปกติ แต่ HTML เป็นภาษาที่ไม่มีบริบท หรือ: หุ่นยนต์ จำกัด (ซึ่งเป็นโครงสร้างข้อมูลที่อยู่ภายใต้นิพจน์ทั่วไป) ไม่มีหน่วยความจำนอกเหนือจากสถานะที่อยู่ในนั้นและหากคุณมีการซ้อนทับกันโดยพลการคุณต้องมีหุ่นยนต์ขนาดใหญ่ตามอำเภอใจซึ่งชนกับแนวคิดของออโตเมตัน จำกัด หรือ: คำศัพท์ Pumping สำหรับภาษาทั่วไปคือสาเหตุที่คุณไม่สามารถทำเช่นนั้นได้ [เพื่อความเป็นธรรม: คำอธิบายข้างต้นส่วนใหญ่เชื่อมโยงไปยังหน้าวิกิพีเดีย …

16
อัลกอริทึมกราฟเพื่อค้นหาการเชื่อมต่อทั้งหมดระหว่างจุดยอดสองจุดตามอำเภอใจ
ฉันกำลังพยายามกำหนดอัลกอริทึมด้านเวลาที่มีประสิทธิภาพสูงสุดเพื่อทำงานที่อธิบายไว้ด้านล่างนี้ ฉันมีชุดบันทึก สำหรับชุดระเบียนนี้ฉันมีข้อมูลการเชื่อมต่อซึ่งระบุว่าคู่ของระเบียนจากชุดนี้เชื่อมต่อกันอย่างไร โดยทั่วไปแล้วสิ่งนี้แสดงถึงกราฟที่ไม่ได้กำหนดทิศทางโดยบันทึกเป็นจุดยอดและข้อมูลการเชื่อมต่อที่ขอบ ระเบียนทั้งหมดในชุดมีข้อมูลการเชื่อมต่อ (เช่นไม่มีระเบียนเด็กกำพร้าอยู่แต่ละระเบียนในชุดจะเชื่อมต่อกับระเบียนอื่น ๆ ในชุด) ฉันต้องการเลือกสองระเบียนจากชุดและสามารถแสดงเส้นทางแบบง่ายทั้งหมดระหว่างระเบียนที่เลือกได้ โดย "เส้นทางธรรมดา" ฉันหมายถึงเส้นทางที่ไม่มีการบันทึกซ้ำในเส้นทาง (เช่นเส้นทาง จำกัด เท่านั้น) หมายเหตุ: ทั้งสองระเบียนที่เลือกจะแตกต่างกันเสมอ (เช่นจุดเริ่มต้นและจุดสิ้นสุดจะไม่เหมือนกันไม่มีรอบ) ตัวอย่างเช่น: หากฉันมีบันทึกต่อไปนี้: A, B, C, D, E. และสิ่งต่อไปนี้แสดงถึงการเชื่อมต่อ: (A, B), (A, C), (B, A) (B, D), (B, E), (B, F) (C, A), (C, E) (C, F) (D, B), (E, C), (E, F), …

18
การทำความเข้าใจว่าฟังก์ชันแบบเรียกซ้ำทำงานอย่างไร
ตามชื่อเรื่องอธิบายว่าฉันมีคำถามเกี่ยวกับการเขียนโปรแกรมพื้นฐานที่ฉันยังไม่สามารถพูดได้ การกรองออกทั้งหมด (ฉลาดมาก) "เพื่อให้เข้าใจการเรียกซ้ำคุณต้องเข้าใจการเรียกซ้ำก่อน" การตอบกลับจากกระทู้ออนไลน์ต่างๆฉันยังไม่ค่อยเข้าใจ การเข้าใจว่าเมื่อต้องเผชิญกับการไม่รู้ในสิ่งที่เราไม่รู้เรามักจะถามคำถามผิด ๆ หรือถามคำถามที่ถูกต้องไม่ถูกต้องฉันจะแบ่งปันสิ่งที่ฉัน "คิด" คำถามของฉันหวังว่าจะมีคนที่มีมุมมองคล้าย ๆ กันสามารถแบ่งปันได้บ้าง เกร็ดความรู้ที่จะช่วยเปิดหลอดไฟวนซ้ำให้ฉัน! นี่คือฟังก์ชั่น (ไวยากรณ์ถูกเขียนด้วย Swift): func sumInts(a: Int, b: Int) -> Int { if (a > b) { return 0 } else { return a + sumInts(a: a + 1, b: b) } } เราจะใช้ 2 และ 5 เป็นอาร์กิวเมนต์ของเรา: …

12
Hash Code และ Checksum - ความแตกต่างคืออะไร?
ความเข้าใจของฉันคือรหัสแฮชและการตรวจสอบเป็นสิ่งที่คล้ายคลึงกันนั่นคือค่าตัวเลขซึ่งคำนวณจากบล็อกข้อมูลซึ่งค่อนข้างไม่ซ้ำกัน กล่าวคือความน่าจะเป็นของสองช่วงตึกของข้อมูลที่ให้ค่าแฮช / การตรวจสอบตัวเลขเดียวกันนั้นต่ำพอที่จะละเว้นได้ตามวัตถุประสงค์ของแอปพลิเคชัน เรามีคำสองคำสำหรับสิ่งเดียวกันหรือมีความแตกต่างที่สำคัญระหว่างรหัสแฮชและเช็คซัม?

5
อัลกอริทึมใดให้คำแนะนำในตัวตรวจสอบการสะกด
โดยทั่วไปจะใช้อัลกอริทึมใดในการใช้งานตัวตรวจสอบการสะกดที่มาพร้อมกับคำแนะนำ ตอนแรกฉันคิดว่ามันสมเหตุสมผลแล้วที่จะตรวจสอบคำใหม่แต่ละคำที่พิมพ์ (หากไม่พบในพจนานุกรม) เทียบกับระยะทาง Levenshteinจากทุกคำในพจนานุกรมและส่งคืนผลลัพธ์อันดับต้น ๆ อย่างไรก็ตามดูเหมือนว่าจะไม่มีประสิทธิภาพอย่างมากเนื่องจากต้องประเมินพจนานุกรมซ้ำทั้งเล่ม โดยทั่วไปแล้วจะทำอย่างไร?


8
ตารางแฮชสามารถเป็น O (1) ได้หรือไม่?
ดูเหมือนจะเป็นความรู้ทั่วไปที่ตารางแฮชสามารถบรรลุ O (1) ได้ แต่นั่นไม่เคยมีเหตุผลสำหรับฉัน ใครช่วยอธิบายหน่อยได้ไหม นี่คือสองสถานการณ์ที่อยู่ในใจ: A. ค่าเป็น int ที่เล็กกว่าขนาดของตารางแฮช ดังนั้นค่าจึงเป็นแฮชของตัวเองดังนั้นจึงไม่มีตารางแฮช แต่ถ้ามีก็จะเป็น O (1) และยังไม่มีประสิทธิภาพ B. คุณต้องคำนวณแฮชของค่า ในสถานการณ์นี้ลำดับคือ O (n) สำหรับขนาดของข้อมูลที่กำลังค้นหา การค้นหาอาจเป็น O (1) หลังจากที่คุณทำงาน O (n) แต่ก็ยังคงออกมาสู่ O (n) ในสายตาของฉัน และเว้นแต่คุณจะมีแฮชที่สมบูรณ์แบบหรือตารางแฮชขนาดใหญ่อาจมีหลายรายการต่อถัง ดังนั้นมันจึงกลายเป็นการค้นหาเชิงเส้นเล็ก ๆ ในบางจุดอยู่ดี ฉันคิดว่าตารางแฮชนั้นยอดเยี่ยม แต่ฉันไม่ได้รับการกำหนด O (1) เว้นแต่จะเป็นเพียงทฤษฎีเท่านั้น บทความของ Wikipedia สำหรับตารางแฮชอ้างอิงเวลาในการค้นหาคงที่อย่างสม่ำเสมอและไม่สนใจค่าใช้จ่ายของฟังก์ชันแฮชโดยสิ้นเชิง นั่นเป็นมาตรการที่ยุติธรรมจริงหรือ? แก้ไข:เพื่อสรุปสิ่งที่ฉันเรียนรู้: เป็นความจริงในทางเทคนิคเนื่องจากฟังก์ชันแฮชไม่จำเป็นต้องใช้ข้อมูลทั้งหมดในคีย์และอาจเป็นเวลาที่คงที่และเนื่องจากตารางที่มีขนาดใหญ่เพียงพอสามารถทำให้การชนกันลงไปใกล้เวลาคงที่ มันเป็นความจริงในทางปฏิบัติเพราะเมื่อเวลาผ่านไปมันจะใช้งานได้ตราบเท่าที่ฟังก์ชันแฮชและขนาดตารางถูกเลือกเพื่อลดการชนกันแม้ว่านั่นมักจะหมายถึงการไม่ใช้ฟังก์ชันแฮชเวลาคงที่

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

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