คำถามติดแท็ก algorithm

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

3
ฉันจะรักษารูปแบบสี่เหลี่ยมเมื่อเพิ่มหรือลบหน่วยได้อย่างไร
ฉันมีบ็อตในรูปแบบสี่เหลี่ยมผืนผ้าที่มีแถวและคอลัมน์ ปัญหาเกิดขึ้นเมื่อบอทถูกเพิ่มหรือลบออกจากการสร้าง เมื่อสิ่งนี้เกิดขึ้นบอตจะต้องจัดเรียงตัวเองใหม่เพื่อให้การก่อตัวของรูปสี่เหลี่ยมผืนผ้ายังคงอยู่ในอัตราส่วนเดียวกันโดยประมาณและเป็นรูปสี่เหลี่ยมเท่าที่จะทำได้ ทำอย่างไร ความคิดบางอย่าง: เมื่อบอตถูกเพิ่มหรือลบให้ใช้จำนวนบอทใหม่ทั้งหมดและอัตราส่วนภาพคงที่ที่ต้องการเพื่อคำนวณความกว้างและความสูงใหม่ของการก่อตัวที่ใกล้เคียงที่สุดกับอัตราส่วนภาพนั้น จากนั้นจึงสลับสับเปลี่ยนบ็อตให้พอดีกับมิติใหม่ เมื่อบอทถูกลบออกให้ย้ายบอทที่อยู่ด้านหลังเข้าไปในที่ของมันและทำต่อไปจนกว่าจะถึงจุดสิ้นสุดของการก่อตัว จากนั้นให้ทำการจัดอันดับย้อนหลังให้มากที่สุดเท่าที่จะทำได้โดยการสับบอทในอันดับหลัง ความคิดที่แตกต่างอย่างสิ้นเชิงคือการเลียนแบบโครงสร้างของโมเลกุลที่อยู่ร่วมกัน ทำให้บอททุกคนต้องการล้อมรอบด้วยบ็อตอีกสี่ตัวด้วยการดึงดูดบอทที่อยู่ใกล้ที่สุดทั้งสี่และป้องกันส่วนที่เหลือ ขับไล่บ็อตทั้งหมด (รวมถึงสี่) ที่อยู่ใกล้เกินไปเพื่อให้แน่ใจว่าแยกโดยใช้กฎหมายกำลังสองผกผัน คุณต้องการแรงเพิ่มเติมในการสร้างรูปร่างของโครงสร้างทั้งหมด แต่มันฟังดูแพงมาก UPDATE : ดังนั้นเมื่อพิจารณาถึงคำตอบของซาร่าห์ฉันจึงมีฟังก์ชั่นทั่วไปที่ดีซึ่งให้มิติที่ดี แรกฉันแก้ไขสมการด้านล่างพร้อมกันสำหรับความกว้างและความสูงแล้วปัดคำตอบ width/height=aspect ratio of your choice width*height=number of bots สิ่งนี้จะช่วยให้คุณได้สัดส่วนจำนวนเต็มที่ใกล้เคียงที่สุดกับอัตราส่วนนั้นสำหรับจำนวนบอทของคุณ สี่เหลี่ยมจัตุรัสที่ใกล้เคียงที่สุดจะครึ่งหนึ่งมีขนาดใหญ่เกินไปและครึ่งเวลาเล็กเกินไป (แน่นอนว่าบางครั้งมันอาจจะถูกต้อง แต่ใครสนใจพวกนั้น) ในกรณีที่รูปสี่เหลี่ยมผืนผ้ามีขนาดใหญ่เกินไปเล็กน้อยไม่จำเป็นต้องทำสิ่งใด อันดับหลังจะจบลงด้วยการเกือบเต็มซึ่งเป็นอุดมคติ ในกรณีที่สี่เหลี่ยมผืนผ้าเป็นเล็ก ๆ น้อย ๆที่มีขนาดเล็กเกินไปคุณมีปัญหาเพราะที่เล็กล้นขนาดเล็กจะต้องไปในการจัดอันดับของตัวเองสร้างขึ้นตำแหน่งที่มีเพียงไม่กี่บอทกับมันซึ่งไม่ได้ดูสวย นอกจากนี้ยังมีกรณีที่ความแตกต่างมีขนาดใหญ่(ใหญ่กว่าความกว้างครึ่งหนึ่ง) ซึ่งในกรณีนี้จะเพิ่มหรือลบอันดับหนึ่งเพื่อสร้างความแตกต่างเล็ก ๆ จากนั้นเมื่อสี่เหลี่ยมผืนผ้าเล็กเกินไปให้เพิ่มหนึ่งคอลัมน์เพื่อทำให้ใหญ่ขึ้นอีกหน่อย หลังจากทำแล้วดูเหมือนว่าอันดับหลังจะมีอย่างน้อยครึ่งบอทมากพอ ๆ กับอันดับอื่น ๆ UPDATE เมื่อคุณได้มิติแล้วให้เปรียบเทียบกับมิติปัจจุบัน หากด้านหน้าของมิติใหม่ใหญ่กว่าสำหรับทุก ๆ …

2
ฉันจะสร้างตาข่ายนำทางสำหรับตารางย่อยได้อย่างไร
ฉันยังไม่ได้เริ่มเขียนโปรแกรมสำหรับอันนี้ แต่ฉันต้องการที่จะดูว่าฉันจะทำอย่างไรต่อไป สมมติว่าฉันมีตารางของกระเบื้องขนาดเท่ากันทั้งหมดที่ผ่านได้และบางอันไม่มี ฉันจะสร้างโครงข่ายการนำทางของรูปหลายเหลี่ยมจากกริดนี้ได้อย่างไร ความคิดของฉันคือการนำกระเบื้องที่ไม่สามารถผ่านได้และขยายเส้นจากขอบเพื่อสร้างรูปหลายเหลี่ยม ... นั่นคือทั้งหมดที่ฉันได้รับ คำแนะนำใด ๆ?

3
จะคำนวณพื้นที่ที่มีรูปร่างผิดปกติได้อย่างไร?
ฉันมีห้องวัตถุที่กำหนดโดยชุดของส่วนของเส้นที่วนลูปที่ฉันต้องคำนวณพื้นที่ คลาสสามารถอธิบายได้ดังต่อไปนี้ (ในรหัสเทียม): class Point { float x; float y; ... float distanceFrom(Point p); } class Segment { Point start; Point end; ... float length(); } class Room { List<Segment> walls; ... float area(); } ผนังของห้องไม่สามารถตัดกันได้ทุกที่ แต่ที่จุดสิ้นสุดของเซกเมนต์และ "sub-loops" ที่สร้างขึ้นจะถูกแยกออกเป็นห้องใหม่ การแก้ปัญหาไม่จำเป็นต้องแม่นยำอย่างสมบูรณ์ (ยอมรับข้อผิดพลาด 10%) และไม่คำนวณบ่อยมาก (<1 / s)

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

2
ทำไมการคำนวณสีท้องฟ้าของฉันใน Mathematica ไม่ถูกต้อง
ฉันกำลังพยายามใช้อัลกอริทึมในการคำนวณสีของท้องฟ้าตามบทความนี้ (แบบจำลองของเปเรซ) ก่อนที่ฉันจะเริ่มโปรแกรม shader ฉันต้องการทดสอบแนวคิดใน Mathematica มีปัญหาบางอย่างที่ฉันไม่สามารถกำจัดได้ อาจมีบางคนใช้งานอัลกอริทึมไปแล้ว ฉันเริ่มต้นด้วยสมการสำหรับ luminances zenital แน่นอนYz, xzและyzตามที่เสนอในกระดาษ (หน้า 22) ค่าสำหรับYzดูเหมือนจะสมเหตุสมผล แผนภาพต่อไปนี้แสดงให้เห็นYzว่าเป็นฟังก์ชั่นของระยะทางของดวงอาทิตย์สำหรับความขุ่นT5: ฟังก์ชันแกมม่า (สุดยอด, azimuth, solarzenith, solarazimuth) คำนวณมุมระหว่างจุดที่มีระยะทางสูงสุดที่กำหนดและ azimuth และดวงอาทิตย์ที่ตำแหน่งที่กำหนด ฟังก์ชั่นนี้ใช้งานได้ดีเช่นกัน แสดงให้เห็นแผนภาพต่อไปนี้มุมนี้และsolarzenith=0.5 เติบโตจากบนลงล่าง (0 ถึง Pi / 2), เติบโตจากซ้ายไปขวา (-Pi ถึง Pi) คุณสามารถเห็นตำแหน่งของดวงอาทิตย์ได้อย่างชัดเจน (จุดสว่างมุมกลายเป็นศูนย์):solarazimuth=0zenithazimuth ฟังก์ชันเปเรซ (F) และสัมประสิทธิ์ได้รับการดำเนินการตามที่กำหนดไว้ในเอกสาร แล้วสีค่า yxy absolute value * F(z, gamma) / …
17 algorithm  sky 

2
รับวงแหวนของกระเบื้องในตารางหกเหลี่ยม
ขอบคุณบทความนี้: กระเบื้องหกเหลี่ยมและการค้นหาเพื่อนบ้านที่อยู่ติดกันฉันสามารถรวบรวมกระเบื้องที่อยู่ติดกับกระเบื้องที่กำหนดได้ แต่ฉันติดอยู่กับอัลกอริทึมที่ทำให้ฉัน "วงแหวน" ของกระเบื้องที่ระบุโดยออฟเซ็ตเท่านั้น อัลกอริทึมที่กำหนดในโพสต์สแต็คโอเวอร์โฟลว์ไม่สนใจลำดับที่รวบรวมไทล์ ฉันรู้ว่ามีการเพิ่ม 6 ออฟเซ็ตทุกแผ่น ออฟเซ็ต 1 ให้คุณได้ 6 ไทล์ ออฟเซ็ต 2 ให้ 12 ออฟเซ็ต 3 ให้ 18 และอื่น ๆ มีการเติบโตอย่างต่อเนื่องที่ 6 จากการชดเชยแต่ละครั้ง ดังนั้นฉันคิดว่าควรมีกฎที่ปรับให้เหมาะกับการชดเชยเหล่านี้ ฉันไม่สามารถหาอันนี้ได้อย่างแน่นอน ใคร?

7
วิธีที่ดีที่สุดในการแปลงเวกเตอร์ 2D เป็นทิศทางเข็มทิศ 8 ทิศทางที่ใกล้ที่สุดคืออะไร?
หากคุณมีเวกเตอร์ 2D แสดงเป็น x และ y วิธีที่ดีในการแปลงให้เป็นทิศทางเข็มทิศที่ใกล้ที่สุดคืออะไร? เช่น x:+1, y:+1 => NE x:0, y:+3 => N x:+10, y:-2 => E // closest compass direction

5
ควรใช้ vector / list เมื่อใด
ฉันสามารถเข้าใจได้ว่าจะใช้รายการเมื่อใด แต่ฉันไม่เข้าใจว่าเมื่อใดควรใช้เวกเตอร์ดีกว่าการใช้รายการในวิดีโอเกม: เมื่อใดจึงจะมีการเข้าถึงแบบสุ่มอย่างรวดเร็ว (และฉันเข้าใจว่าทำไมการแทรก / ลบในรายการเร็วขึ้นเพราะเพิ่งลบ / เพิ่มตัวชี้ แต่ยังต้องค้นหารายการที่เกี่ยวข้อง ... )

14
Big O สำคัญจริงๆหรือ?
ในสถาบันการศึกษาที่เลวร้ายที่สุดกรณีBig Oสอนทุกอย่างอื่น เปรียบเทียบกับความซับซ้อนของพื้นที่การวิเคราะห์เคสปกติความเรียบง่ายเหนือความซับซ้อน ฯลฯ โดยเฉพาะอย่างยิ่งกับการเขียนโปรแกรมเกมและอุตสาหกรรมสิ่งที่สำคัญที่สุดและทำไม? การอ้างอิงจะมีประโยชน์มาก

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

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

5
ระบบเครือข่ายสำหรับเกมกลยุทธ์แบบเรียลไทม์
ฉันกำลังพัฒนาเกมกลยุทธ์แบบเรียลไทม์สำหรับหลักสูตรวิทยาศาสตร์คอมพิวเตอร์ที่ฉันเรียน หนึ่งในแง่มุมที่ยากกว่าของมันก็คือการเชื่อมต่อเครือข่ายและเซิร์ฟเวอร์ลูกค้า ฉันได้อ่านในหัวข้อนี้ (รวมถึงนักธนู 1500 คน ) แต่ฉันตัดสินใจใช้วิธีไคลเอ็นต์ - เซิร์ฟเวอร์ซึ่งต่างจากรุ่นอื่น ๆ (ผ่าน LAN เป็นต้น) เกมกลยุทธ์เรียลไทม์มาพร้อมกับปัญหาบางอย่าง โชคดีที่การกระทำของผู้เล่นทุกครั้งนั้นถูกกำหนดไว้แล้ว อย่างไรก็ตามมีเหตุการณ์ที่เกิดขึ้นตามช่วงเวลาที่กำหนดไว้ ตัวอย่างเช่นเกมประกอบด้วยกระเบื้องและเมื่อผู้เล่นใช้แผ่นกระเบื้อง 'ระดับพลังงาน' ซึ่งเป็นค่าบนแผ่นกระเบื้องนั้นควรเพิ่มขึ้นทีละวินาทีทุกครั้งหลังจากที่ถ่ายเสร็จ นี่เป็นคำอธิบายสั้น ๆ ที่ควรแสดงให้เห็นถึงกรณีการใช้งานของฉัน ตอนนี้ฉันกำลังทำไคลเอ็นต์แบบ thin ซึ่งเพิ่งส่งแพ็กเก็ตไปยังเซิร์ฟเวอร์และรอการตอบกลับ อย่างไรก็ตามมีปัญหาหลายประการ เมื่อเกมระหว่างผู้เล่นพัฒนาเป็น endgame มักจะมีมากกว่า 50 กิจกรรมต่อวินาที (เนื่องจากเหตุการณ์ที่กำหนดไว้อธิบายก่อนหน้าซ้อนขึ้น) และข้อผิดพลาดในการประสานเริ่มปรากฏขึ้นแล้ว ปัญหาที่ใหญ่ที่สุดของฉันคือแม้แต่ความเบี่ยงเบนเล็กน้อยในสถานะระหว่างลูกค้าอาจหมายถึงการตัดสินใจที่แตกต่างกันของลูกค้าซึ่งก้อนหิมะกลายเป็นเกมที่แยกจากกันโดยสิ้นเชิง ปัญหาอื่น (ซึ่งไม่สำคัญในตอนนี้) คือเวลาแฝงและต้องรอสองสามมิลลิวินาทีแม้แต่วินาทีหลังจากที่พวกเขาขยับเพื่อดูผลลัพธ์ ฉันสงสัยว่ากลยุทธ์และอัลกอริทึมใดที่ฉันสามารถใช้เพื่อทำให้สิ่งนี้ง่ายขึ้นเร็วขึ้นและสนุกสนานยิ่งขึ้นสำหรับผู้ใช้ สิ่งนี้น่าสนใจเป็นพิเศษเนื่องจากมีจำนวนกิจกรรมต่อวินาทีสูงพร้อมกับผู้เล่นหลายคนต่อเกม TL; DR สร้าง RTS ด้วย> 50 กิจกรรมต่อวินาทีฉันจะซิงโครไนซ์ไคลเอ็นต์ได้อย่างไร

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

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

3
การเรียงลำดับของคะแนนตามลำดับตามเข็มนาฬิกา
มีอัลกอริธึมในการเรียงลำดับอาร์เรย์ของคะแนน 2D ตามลำดับตามเข็มนาฬิกาหรือไม่? ฉันกำลังจัดการสามเหลี่ยมมุมฉากในกรณีของฉันโดยเฉพาะดังนั้น 3 คะแนน อย่างไรก็ตามฉันสนใจที่จะทราบว่ามีอัลกอริธึมอยู่หรือไม่หากไม่มีวิธีง่ายๆในการคืนค่า 3 คะแนนของสามเหลี่ยมตามลำดับตามเข็มนาฬิกา แก้ไข: ฉันพยายามคำนวณคะแนนตามเข็มนาฬิกาที่สัมพันธ์กับเซนทรอยด์ของรูปหลายเหลี่ยมซึ่งเป็นรูปนูน อัปเดต: นี่คือการนำไปใช้ที่ฉันใช้โดยใช้คำตอบที่เลือกไม่ใช่ประสิทธิภาพที่สำคัญและจะเกิดขึ้นเพียงครั้งเดียวเพื่อให้ได้ผล ArrayList<PVector> pointList = new ArrayList<PVector>(); pointList.add(A); pointList.add(B); pointList.add(C); Collections.sort( pointList, new TriangleVectorComparator(origin) ); return pointList; // Comparator package triangleeditor; import java.util.Comparator; import processing.core.PVector; public class TriangleVectorComparator implements Comparator<PVector> { private PVector M; public TriangleVectorComparator(PVector origin) { M …

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