คำถามติดแท็ก path-finding

ปัญหาในเรขาคณิตหรือกราฟทฤษฎีที่เกี่ยวข้องกับการหาเส้นทางที่เหมาะสมที่สุด (เช่นสั้นที่สุด) ภายใต้ข้อ จำกัด (อุปสรรค)

9
พิมพ์สี่เหลี่ยมที่แข็งแรงทั้งหมด 3 คูณ 3
ตารางที่มีความทนทาน (คล้ายกับตารางมายากล ) คือการจัดเรียงของจำนวนเต็ม 1 ถึง N 2บนกริด N โดย N ดังนั้นทุก 2 โดย 2 subgrid จะมีผลรวมเท่ากัน ตัวอย่างเช่นสำหรับ N = 3 หนึ่งตารางที่มีความทนทานคือ 1 5 3 9 8 7 4 2 6 เพราะทั้งสองรุ่นย่อย 4 คูณ 2 1 5 9 8 5 3 8 7 9 8 4 2 8 7 2 …
24 code-golf  number  arithmetic  number-theory  grid  code-golf  binary  code-golf  popularity-contest  code-golf  chemistry  code-golf  code-golf  date  code-golf  quine  chess  code-golf  hexadecimal  code-golf  number  arithmetic  sequence  array-manipulation  code-golf  math  date  code-golf  typography  code-golf  string  code-golf  string  code-golf  code-golf  math  arithmetic  array-manipulation  grid  code-golf  puzzle-solver  code-golf  music  audio  code-golf  decision-problem  code-golf  geometry  code-golf  number  bitwise  code-golf  string  metagolf  hexagonal-grid  code-golf  string  code-golf  sorting  popularity-contest  code-golf  game  sequence  base-conversion  binary  code-golf  decision-problem  graph-theory  natural-language  code-golf  math  parsing  optimized-output  code-golf  array-manipulation  code-golf  graphical-output  image-processing  tiling  code-golf  graph-theory  path-finding  chess  code-golf  code-golf  balanced-string  code-golf  number  code-golf  sequence  code-golf  math  arithmetic  statistics  code-golf  chemistry 

15
พูดตามฉัน!
รับสตริงเป็นอาร์กิวเมนต์ส่งออกความยาวของสตริงย่อยที่ซ้ำกันที่ยาวที่สุดที่ไม่ซ้ำซ้อนกันหรือศูนย์หากไม่มีสตริงดังกล่าว คุณสามารถสมมติว่าสตริงอินพุตไม่ว่างเปล่า ตัวอย่าง abcdefabc: ซับสตริงabcซ้ำที่ตำแหน่ง 1 และ 7 ดังนั้นโปรแกรมควรเอาต์พุต3 abcabcabcabcab: abcabcหรือbcabcaหรือcabcabมีการทำซ้ำเพื่อให้โปรแกรมควรเอาท์พุท6 (สตริงย่อยabcabcabcabซ้ำแล้วซ้ำอีก แต่เหตุการณ์ที่เกิดขึ้นทับซ้อนกันดังนั้นเราจึงไม่ยอมรับมัน) aaaaaaa: aaaถูกทำซ้ำที่ตำแหน่ง 1 และ 4 ตัวอย่างเช่นดังนั้นโปรแกรมควรเอาต์พุต3 abcda: aซ้ำแล้วซ้ำอีกดังนั้นโปรแกรมควรจะออก1 xyz: ไม่มีสตริงซ้ำแล้วซ้ำอีก→ 0 ababcabcabcabcab: ควรกลับ6 นี่คือโค้ดกอล์ฟซึ่งมีจำนวนน้อยที่สุดที่จะชนะ
23 code-golf  string  code-golf  code-golf  kolmogorov-complexity  primes  code-golf  kolmogorov-complexity  hexadecimal  code-golf  code-golf  string  code-golf  string  random  code-golf  array-manipulation  code-golf  ascii-art  kolmogorov-complexity  random  code-golf  array-manipulation  code-golf  stateful  code-golf  hello-world  code-golf  string  code-golf  interpreter  lisp  code-golf  restricted-source  quine  palindrome  code-golf  ascii-art  random  generation  challenge-writing  ascii-art  random  polyglot  maze  answer-chaining  string  cops-and-robbers  whitespace  code-golf  string  cops-and-robbers  whitespace  code-golf  number  sequence  code-golf  date  code-golf  ascii-art  decision-problem  code-golf  combinatorics  chemistry  code-golf  kolmogorov-complexity  source-layout  radiation-hardening  code-golf  ascii-art  path-finding  maze  code-golf  string  ascii-art  game  animation  code-golf  string  ascii-art  code-golf  ascii-art  kolmogorov-complexity  code-golf  restricted-source  new-years 

7
ระยะห่างระหว่างสองจุดที่เดินทางบนกราฟกราฟขั้วโลก
คำอธิบายปัญหาโดยย่อ เขียนโปรแกรมเพื่อค้นหาระยะห่างต่ำสุดระหว่างจุดสองจุดที่เดินทางบนแสงที่เปล่งออกมาจากแหล่งกำเนิดและวงกลมที่อยู่กึ่งกลางแหล่งกำเนิด คำอธิบายของสถ ทีนี้ลองจินตนาการว่าเราอยู่บนเครื่องบินและบนเครื่องบินนี้เราได้รับอนุญาตให้เดินทางด้วยวิธีพิเศษเท่านั้น เราได้รับอนุญาตให้เดินทางกับรังสีใด ๆ ที่เล็ดลอดออกมาจากแหล่งกำเนิด เราสามารถเดินทางบนวงกลมใดก็ได้ที่อยู่ตรงกลางเป็นวงกลม ตอนนี้เป้าหมายของเราคือการเดินทางจากจุดหนึ่งบนเครื่องบินลำนี้ไปอีกจุดหนึ่ง อย่างไรก็ตามเราไม่สามารถเดินทางในเส้นทางแบบยุคลิดอย่างง่ายเราสามารถทำสิ่งนี้ได้ก็ต่อเมื่อจุดที่เกิดขึ้นตกกระทบกับรังสีจากจุดศูนย์กลาง เราสามารถเดินทางกับอันนี้เพราะมันตกอยู่บนหนึ่งในรังสีของเรา นอกจากนี้เรายังสามารถเดินทางบนวงกลมที่มีศูนย์กลางที่จุดกำเนิด ตัวอย่าง นี่คือความท้าทาย: เราต้องได้จากจุดหนึ่งไปอีกจุดหนึ่งในเส้นทางที่สั้นที่สุด; บ่อยครั้งที่นี่คือการรวมกันของการเดินทางในวงกลมและรังสี อย่างไรก็ตามนี่มันอาจเดินทางด้วยรังสีสองดวง บางครั้งมีสองเส้นทางที่เดินทางในระยะทางต่ำสุด ปัญหา ความท้าทายของคุณคือการเขียนโปรแกรมที่เมื่อได้รับสองคะแนนจะให้ระยะห่างขั้นต่ำระหว่างพวกเขาหากเราปฏิบัติตามกฎเหล่านี้ อินพุตสามารถกำหนดได้ทั้งในรูปแบบสี่เหลี่ยมหรือโพลาร์และเอาต์พุตควรเป็นหนึ่งหมายเลขคือระยะห่างระหว่าง กรณีทดสอบ (พร้อมอินพุตสี่เหลี่ยมผืนผ้า) (1,1) (1,-1) -> ~ 2.22144 (0,0) (1, 1) -> ~ 1.41421 (1,0) (-0.4161 , 0.90929) -> ~ 2 (1,1) (1, 0) -> ~ 1.19961 (1,2) (3, 4) …

9
ปัญหาการเดินทางฟักทอง
พื้นหลัง: แจ็คเป็นฟักทองที่สนุกกับการหลอกประชาชนในหมู่บ้านใกล้กับฟักทองของเขาทุกวันฮาโลวีน อย่างไรก็ตามทุกปีหลังจากที่มีคนจุดเทียนอยู่ข้างในเขาเขามีเวลา จำกัด ในการทำให้ทุกคนก่อนที่เทียนจะไหม้จึงไม่สามารถหลอกชาวบ้านได้อีกเพราะไม่มีใครเห็นเขาได้ ในช่วงหลายปีที่ผ่านมาเขาสามารถหลอกหมู่บ้านได้เพียงเล็กน้อยเนื่องจากการตัดสินใจที่ไม่ดีของเขา แต่ตอนนี้เขามีคุณเพื่อช่วยเขาเขาจะสามารถสะกดหมู่บ้านได้มากเท่าที่จะเป็นไปได้! งาน: รับรายชื่อที่ตั้งหมู่บ้านและอายุการใช้งานของเทียนส่งออกจำนวนหมู่บ้านสูงสุดที่แจ็คสามารถเยี่ยมชมได้ คุณไม่จำเป็นต้องพิมพ์เส้นทางเอง การป้อนข้อมูล: อายุการใช้งานของแท่งเทียนและรายการที่ตั้งหมู่บ้านในระบบพิกัดคาร์ทีเซียน แจ็คแพทช์ฟักทองมีต้นกำเนิดจากจะอยู่ที่ 0,0 คุณสามารถจัดรูปแบบอินพุตได้ตามที่คุณต้องการ เพื่อให้การเคลื่อนไหวของแจ็คง่ายขึ้นเขาสามารถเคลื่อนที่ในแนวนอนแนวตั้งหรือแนวทแยงมุมซึ่งหมายความว่าเทียนของเขาจะสูญเสีย 1 หรือ 1.5 (เขาใช้แนวทแยงมุมอีกต่อไป) หน่วยชีวิตทุกการเคลื่อนไหว เทียนไหม้เมื่ออายุการใช้งานน้อยกว่าหรือเท่ากับ 0 เอาท์พุท: จำนวนเต็มเท่ากับจำนวนหมู่บ้านสูงสุดที่แจ็คสามารถเยี่ยมชมได้ก่อนที่เทียนจะไหม้ กฎ: นี่คือcode-golfดังนั้นรหัสที่สั้นที่สุดในหน่วยไบต์ชนะ ไม่อนุญาตช่องโหว่มาตรฐาน กรณีทดสอบ: // Format [lifespan] [list of village coordinates] -> [maximum visit-able villages] 4 -1,0 1,0 2,0 3,0 4,0 5,0 -> 3 4 …

2
หนูกับไดนาไมท์
คุณเป็นหนู เพื่อนของคุณถูกจับและหมดสติและถูกขังอยู่ในเขาวงกตที่มีทางเข้า / ทางออกเดียวเท่านั้น คุณมีแผนที่ที่สมบูรณ์แบบของเขาวงกตดังนั้นคุณจึงสามารถวางแผนการแก้ปัญหาเพื่อเร่งรีบและพาพวกมันทั้งหมดไปสู่ความปลอดภัย อย่างไรก็ตามเขาวงกตได้รับการปกป้องด้วยระบบรักษาความปลอดภัยที่จะเปิดการแจ้งเตือนหากถึงเกณฑ์1000ทำให้คุณถูกจับและล้มเหลวในภารกิจกู้ภัยของคุณ จากการตรวจสอบก่อนหน้าของเขาวงกตของคุณแต่ละตารางคุณก้าว (เช่นการเคลื่อนไหวในแนวนอนหรือแนวตั้ง - หนูไม่สามารถเคลื่อนที่ในแนวทแยงมุม ) เพิ่ม1ไปยังเคาน์เตอร์ของระบบรักษาความปลอดภัย อย่างไรก็ตามหากคุณกำลังแบกน้ำหนัก (ทั้งบล็อกของไดนาไมต์หรือเพื่อนของเมาส์ที่ไม่รู้สึกตัว) มันเพิ่มแทน2เพราะมันตรวจจับแรงกดดันเพิ่มเติม จัตุรัสทางเข้า / ทางออกไม่มีระบบรักษาความปลอดภัยนี้ดังนั้นจึงไม่เพิ่มลงในตัวนับ คุณมีไดนาไมต์จำนวนไม่ จำกัด ที่คุณนำมาที่ทางเข้าดังนั้นคุณสามารถระเบิดกำแพงทั้งหมดเพื่อปลดปล่อยเพื่อนของคุณ แต่คุณต้องระมัดระวังในการทำเช่นนี้เนื่องจากการระเบิดแต่ละครั้งจะเพิ่ม50ความกดดันจากการสั่นสะเทือน นอกจากนี้คุณสามารถพกพาได้ครั้งละหนึ่งอย่างเท่านั้นไม่ว่าจะเป็นหนึ่งเม้าส์หรือหนึ่งบล็อกไดนาไมต์ เนื่องจากบล็อกไดนาไมต์แต่ละอันสามารถทำให้เกิดการระเบิดได้เพียงพื้นที่เดียวเท่านั้นซึ่งหมายความว่าหากมีหลายกำแพงติดต่อกันคุณจะต้องเดินทางด้วยมือเปล่ากลับไปที่ทางเข้าเพื่อคว้ามากขึ้น ตัวอย่างการทำงานผ่าน สมมติว่าเขาวงกตของเรามีลักษณะดังนี้: ###### #M# E# ###### ฉันจะใช้cสำหรับเคาน์เตอร์ เราเริ่มต้นที่Entrance เลื่อนไปทางซ้ายหนึ่งตารางขณะถือไดนาไมต์c=2. เราระเบิดวัตถุระเบิดเพื่อระเบิดกำแพง, c=52. เราเลื่อนสี่เหลี่ยมสองช่องไปทางซ้ายมือเปล่าเพื่อรับc=54และตอนนี้เรากำลังยืนอยู่บนสี่เหลี่ยมของเมาส์ เราหยิบเพื่อนของเราขึ้นมาแล้วขยับ 3 สี่เหลี่ยมกลับไปที่Exit แต่จตุรัสสุดท้ายไม่นับเพราะไม่มีเซ็นเซอร์เลยนั่นเป็นเพียง 2 สี่เหลี่ยมที่มีบางอย่างอยู่ด้านหลังของเรา นั่นหมายความว่าเมื่อเราไปถึงทางออกด้วยเมาส์สุดท้ายc=58ซึ่งน้อยกว่า1000ดังนั้นภารกิจจึงสำเร็จ ท้าทาย ด้วยการป้อนข้อมูลในเขาวงกตเอาท์พุทไม่ว่าคุณจะเป็นฮีโร่ของเมาส์สามารถช่วยเหลือหนูที่ติดกับดักทั้งหมดภายใต้ข้อ จำกัด ที่ระบุไว้ข้างต้นหรือว่าภารกิจนั้นล้มเหลว อินพุต เขาวงกต 2 …

3
ปัญหาการเผาแพนเค้ก
ความท้าทายนี้จะเกี่ยวข้องกับพลิกแพนเค้ก คุณอาจเคยได้ยินเรื่องการเรียงแพนเค้กที่กองแพนเค้กเรียงตามขนาดโดยสอดไม้พายเข้าไปในกองแล้วพลิกแพนเค้กทั้งหมดเหนือไม้พายจนกระทั่งแพนเค้กเรียงตัวเล็กที่สุดไปหามากที่สุดบนจาน ปัญหาการเผาแพนเค้กแตกต่างกันเล็กน้อย ตอนนี้แพนเค้กทั้งหมดมีด้านหนึ่งที่ถูกเผาและด้านที่ถูกเผาของแต่ละแพนเค้กจะต้องเผชิญกับจานเมื่อการเรียงเสร็จสมบูรณ์ ตัวอย่างเช่นให้สแต็กต่อไปนี้ (ขนาดของแพนเค้กทางด้านซ้าย0หมายถึงด้านที่1ถูกเผาไหม้และความหมายด้านที่ถูกเผาด้านขวา): 1 0 3 1 2 1 คุณอาจพลิกทั้งกองเพื่อให้ได้20 30 11พลิกด้านบนสุดเพื่อรับ31 21 11และพลิกทั้งกองอีกครั้งเพื่อให้ได้10 20 30กองเรียงแพนเค้กเผาไหม้ ลำดับนี้ของการเคลื่อนไหวพลิก 3 พลิก 2 พลิก 3 3 2 3อาจจะแสดงเป็น ความท้าทาย เมื่อกำหนดขนาดของแพนเค้ก (ไม่จำเป็นต้องไม่ซ้ำกัน) และการวางแนวของมันให้เรียงลำดับการเรียงลำดับการเผาแพนเค้กที่ถูกต้องนั่นคือลำดับการพลิกที่นำไปสู่กองซ้อนของแพนเค้กที่เรียงจากน้อยที่สุดไปมากที่สุด อินพุตและเอาท์พุตอาจเป็นรูปแบบใด ๆ ที่มีตัวคั่น แต่โปรดระบุรูปแบบที่คุณใช้และระบุว่ารูปแบบการป้อนข้อมูลใดของคุณอยู่ด้านบนสุดของสแต็ก (TOS) อนุญาตให้พลิกแพนเค้กเป็นศูนย์ได้ อนุญาตให้ใช้ตัวคั่นผสมในอินพุต / เอาต์พุต กรณีทดสอบ สำหรับกรณีทดสอบต่อไปนี้ทั้งหมดอินพุตคือรายการและเอาต์พุตเป็นสตริงที่คั่นด้วยช่องว่างและ TOS อยู่ทางด้านซ้าย [[1, 0], [3, 1], [2, …

1
คุณสามารถได้ยินฉันตอนนี้?
พื้นหลัง คุณเป็นผู้บริหารระดับสูงของอาณาจักรซอฟต์แวร์ เวลาของคุณคุ้มค่ากับเงินมากมาย คุณต้องเดินทางในเส้นทางที่มีประสิทธิภาพที่สุดเสมอ อย่างไรก็ตามในฐานะผู้บริหารคุณใช้เวลาส่วนใหญ่เข้าร่วมในการโทรศัพท์ที่สำคัญ เป็นสิ่งสำคัญยิ่งที่คุณไม่ต้องโทรออกดังนั้นคุณจะต้องไม่เดินทางผ่านพื้นที่ที่ไม่มีบริการโทรศัพท์มือถือ! ความท้าทาย คุณจะได้รับรายการของสิ่งอันดับสามรายการแต่ละรายการแสดงถึงตำแหน่งและพลังของหอคอยเซลล์ ตัวอย่างเช่น[50, 25, 16]จะเป็นตัวแทนของหอคอยเซลล์ที่<x,y> = <50, 25>มีรัศมี 16 แทนวงกลมแห่งอิทธิพล เมื่อนึกถึงรายการนี้คุณจะต้องเดินทางจากตำแหน่งเริ่มต้น<0, 0>ของคุณไปยังจุดหมายปลายทางที่<511, 511>อยู่ในระยะทางที่สั้นที่สุดโดยไม่สูญเสียบริการเซลล์ นี่คือรหัส - กอล์ฟดังนั้นรหัสที่สั้นที่สุดชนะ! อินพุต / เอาต์พุต คุณมีอิสระในการจัดการอินพุตให้อยู่ในรูปแบบที่ทำให้อ่านง่ายเช่นในไฟล์หรือเป็นอาร์เรย์ที่ซ้อนกันผ่าน STDIN โดยใช้evalเป็นต้นคุณสามารถ hardcode อินพุตได้ตราบใดที่โค้ดของคุณใช้ได้กับอินพุตอื่นเช่น ดี. อักขระที่แน่นอนที่ใช้เพื่อ hardcode อินพุตจะไม่ถูกนับ แต่ชื่อตัวแปรและอักขระการกำหนดจะ คุณไม่ควรสันนิษฐานว่าอินพุตอยู่ในลำดับเฉพาะหรือหอเซลล์ทุกแห่งเกี่ยวข้องกับปัญหา หากคุณมีคำถามใด ๆ โปรดออกความคิดเห็นและฉันจะพยายามชี้แจง เอาท์พุทจะเป็นรายการของพิกัดทำเครื่องหมายจุดที่เมื่อเชื่อมต่อในการสั่งซื้อในรูปแบบเส้นทางไปยังทางออก ความแม่นยำนั้นจะต้องถูกปัดเศษเป็นจำนวนเต็มที่ใกล้เคียงที่สุดเท่านั้นและหากคุณมี 1-2 ตัวอย่างจากสิ่งที่ฉันมีอยู่ในตัวฉันเอาท์พุทนั่นเป็นเรื่องปกติ ฉันได้รวมภาพด้านล่างเพื่ออธิบายสิ่งนี้ ขอให้โชคดี! ตัวอย่าง input: [ 32, 42, …

28
ทำเสื้อคลุมคำง่ายๆ
(หมายเหตุ: นี่คือคำถามรหัสกอล์ฟครั้งแรกของฉัน แต่เท่าที่ฉันสามารถบอกได้ไม่มีใครทำอย่างนี้ดังนั้นฉันควรจะดี) งานของคุณคือการสร้างโปรแกรมหรือฟังก์ชั่นที่ใช้ในสตริงsและจำนวนเต็มnและส่งคืนหรือส่งออกข้อความที่ห่อเป็นหลายบรรทัด แต่ละคำต้องอยู่ในบรรทัดทั้งหมด กล่าวคือไม่มีคำแยกกลาง แต่ละบรรทัดต้องมีความยาวไม่เกินnอักขระและคุณต้องใส่คำให้มากที่สุดเท่าที่จะทำได้ในแต่ละบรรทัด ตัวอย่าง: s = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed eget erat lectus. Morbi mi mi, fringilla sed suscipit ullamcorper, tristique at mauris. Morbi non commodo nibh. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Sed …
22 code-golf  string  code-golf  string  parsing  apl  math  primes  integer  fastest-code  code-golf  math  primes  integer  code-golf  ascii-art  kolmogorov-complexity  code-golf  string  array-manipulation  code-golf  number  code-golf  sequence  code-golf  math  arithmetic  code-golf  date  conversion  code-golf  geometry  combinatorics  grid  code-golf  string  code-golf  counting  java  code-golf  chess  code-golf  path-finding  conversion  atomic-code-golf  logic-gates  code-golf  fibonacci  code-golf  ascii-art  fractal  code-golf  quine  code-golf  string  code-golf  array-manipulation  decision-problem  code-golf  quine  code-golf  code-challenge  array-manipulation  code-challenge  word-search  code-golf  binary  conversion  code-golf  code-golf  restricted-source  code-golf  kolmogorov-complexity  restricted-source  code-golf  kolmogorov-complexity  random  animation 

3
เส้นทางและเสียเวลา
หลักฐาน ดังนั้นเมื่อเร็ว ๆ นี้ฉันเพิ่งได้รับการนัดหมายประมาณครึ่งชั่วโมงและตัดสินใจที่จะรออยู่ข้างนอก ฉันยังระบุด้วยว่ามันจะดูแปลก ๆ ถ้าฉันยืนนิ่ง ๆ อยู่หน้าบ้าน ฉันเลยตัดสินใจเดินเร็ว ๆ ในพื้นที่ จำกัด ฉันยังสรุปด้วยว่าถ้าฉันเริ่มเดินเป็นวงกลมก็จะเห็นได้ชัดว่าฉันกำลังโวยวายอยู่ ดังนั้นฉันจึงได้แรงบันดาลใจในการสร้างความท้าทายครั้งแรกของรหัสกอล์ฟ สเปค คุณจะได้รับรายชื่อแผนที่ของพื้นที่ซึ่งจะมีอย่างใดอย่างหนึ่ง" "หรือ"#"ซึ่งเป็นตัวแทนของพื้นที่ว่างและอุปสรรคบางอย่าง สามารถข้ามพื้นที่ว่างได้เพียงครั้งเดียวเท่านั้นและใช้เวลา 1 นาทีในการข้าม ตำแหน่งเริ่มต้นของคุณจะมีความหมายด้วย"@"ประเพณีต่อชาวโร๊คไลค์และเป้าหมายจะถูกแทนด้วย"$"เพราะนั่นคือสิ่งที่คุณจะแพ้ที่นั่น คุณจะได้รับจำนวนเต็มซึ่งจะแสดงจำนวนนาทีที่คุณต้องเสียก่อนที่จะไม่ดูเหมือนว่าคุณกำลังบุกรุก เมื่อคุณลงจอดบน"$"มันจะต้องเป็นจำนวนนาทีที่แน่นอน (ดังนั้นถ้าคุณนับถอยหลังมันจะต้องเป็น 1 บนแผ่นต่อเนื่องและเป็น 0 บนแผ่นต่อไป) มันจะเป็นไปได้เสมอที่จะไปถึงปลายทาง โปรแกรมหรือฟังก์ชั่นของคุณจะต้องส่งคืนรายการที่แสดงพา ธ ที่สั้นที่สุดด้วย <,>, ^, และ v เพื่อแสดงเส้นทางทั้งสี่ที่เป็นไปได้ ตัวอย่าง การป้อนข้อมูล: [[" ", " ", " ", " "], ["@", " …

2
ค้นหาสมบัติในคุกใต้ดิน 2D
คุณอยู่ในคุกใต้ดินหนึ่งชั้น มีสมบัติที่ได้รับการปกป้องจากประตูที่ถูกล็อค ประตูสามารถเปิดได้โดยการค้นหากุญแจที่เกี่ยวข้อง เป้าหมายของคุณคือค้นหาเส้นทางที่สั้นที่สุดสู่ขุมทรัพย์ อินพุต อินพุตจะเป็นตารางสองมิติที่แสดงเค้าโครงเริ่มต้นของดันเจี้ยน ########### #$ # g# # # #### ###G## # # ####C# #c @ # ########### นี่คือคุณ: @ นี่คือกำแพง: # นี่คือสมบัติ: $ ประตูที่ถูกล็อคเป็นตัวพิมพ์ใหญ่: A... Z แต่ละประตูมีคีย์ตัวพิมพ์เล็กที่ตรงกัน: a...z จะมีหนึ่ง@และหนึ่ง$เสมอ ดันเจี้ยนจะเป็นรูปสี่เหลี่ยมผืนผ้าเสมอ ไม่รับประกันว่าขอบด้านนอกของดันเจี้ยนจะเป็นกำแพง นี่คือกรุที่ถูกต้อง: $ A## @ a ไม่รับประกันว่าสมบัติจะเข้าถึงได้ ดันเจี้ยนบางตัวอาจไม่สามารถแก้ไขได้ อาจมีประตูที่ไม่มีกุญแจและอาจมีกุญแจที่ไม่เปิดประตู จะไม่มีประตูหรือกุญแจซ้ำกัน เอาท์พุต โปรแกรมของคุณควรพิมพ์ลำดับของR, L, U, D(หรือ 4 …

2
A Peak Experience: เยี่ยมชมยอดเขาทั้งหมดได้อย่างรวดเร็ว
ฉันกำลังยืนอยู่ที่จุด(0,0)ในแผนที่Hx Wซึ่งมีระดับความสูงเป็นตัวเลขเช่น: 1132 2221 1230 # H = 3, W = 4 3ฉันต้องการที่จะได้สัมผัสกับมุมมองจากทุกยอดซึ่งในกรณีนี้เป็นพื้นที่ที่มีระดับความสูง อย่างไรก็ตามการปีนขึ้นเขาไม่ใช่เรื่องง่ายและฉันก็หมดเวลาด้วย ท้าทาย ความท้าทายคือการหาเส้นทางที่เร็วที่สุดในการเยี่ยมชมยอดเขาทั้งหมดและกลับมา โปรแกรมที่สั้นที่สุดชนะ อินพุต H, W - ความสูงและความกว้างของแผนที่ (จำนวนเต็ม) (เป็นทางเลือกอาจเป็นรายการ / ทูเปิลหรืออินพุตจำนวนเต็มแยกสองรายการ) แผนที่ที่กำหนดเป็นHชุดWตัวเลข ( 0- 9) ในรูปแบบที่สะดวก (รายการ 2D สตริงคั่นด้วยการขึ้นบรรทัดใหม่ ฯลฯ ) เอาท์พุต ใช้เวลาสั้นที่สุดในการเยี่ยมชมทุกจุดสูงสุดและกลับมาที่จุดเริ่มต้นของคุณ (จำนวนเต็ม) เงื่อนไข ระดับความสูงของพื้นที่ที่กำหนดจะถูกแสดงโดยหลักมาจากการ09 "จุดสูงสุด" ถูกกำหนดโดยพื้นที่ที่มีระดับความสูงสูงสุด เส้นทางทั้งสองจะต้องเริ่มต้นและสิ้นสุดที่(0,0) ด้านซ้ายบนพื้นที่ คุณสามารถย้ายไปยังพื้นที่ที่อยู่ติดกับพื้นที่ปัจจุบันของคุณเท่านั้นและคุณไม่สามารถเคลื่อนที่ในแนวทแยงมุมได้ ใช้เวลา3 นาทีในการย้ายจากพื้นที่หนึ่งไปยังอีกพื้นที่หนึ่งหากไม่มีการเปลี่ยนแปลงระดับความสูง ใช้เวลา11 นาทีในการปีนขึ้นไป; …

10
การต่อสู้กริดเส้นทาง
บันทึก:ความท้าทายนี้กำลังจะตายเนื่องจากฉันไม่สามารถติดตั้งภาษาที่จำเป็นในการเรียกใช้การแข่งขัน หากคนอื่นมีเวลาและความสนใจที่จะทำฉันก็จะไม่คัดค้าน ดูด้านล่างของโพสต์สำหรับกระดานแต้มนำ นี่เป็นความท้าทายแบบกึ่งร่วมมือกันของกษัตริย์ที่บอตสร้างเส้นทางผ่านกราฟกริดสองมิติ บอทที่ควบคุมโหนดที่มีปริมาณการใช้งานมากที่สุดคือผู้ชนะ อย่างไรก็ตามต้องใช้ทรัพยากรของบอทมากกว่าหนึ่งแห่งในการสร้างเส้นทางเชื่อมต่อดังนั้นบอตจะต้องทำงานร่วมกัน - ในระดับหนึ่ง เพลย์ ในต่อไปนี้ให้N > 0เป็นจำนวนของบอทในการเล่น ตาราง เป็นเกมที่เล่นบนตารางจำนวนเต็มสองมิติขนาดซึ่งล่างซ้ายประสานงานที่ แต่ละประสานงานกับมีขอบขาออกไปยังสามพิกัด, และเหนือที่-coordinates จะถูกนำโมดูโล ซึ่งหมายความว่ากริดล้อมรอบที่ขอบตะวันออกและตะวันตก ทุกด้านล่างประสานงานเป็นแหล่งที่มาและประสานงานด้านบนทุกเป็นอ่างล้างจาน⌊4/3N2⌋ × ⌊4/3N2⌋(0,0)(x,y)0 ≤ y < ⌊4/3N2⌋-1(x-1,y+1)(x,y+1)(x+1,y+1)x⌊4/3N2⌋(x,0)(x,⌊4/3N2⌋-1) ภาพต่อไปนี้แสดง8 × 8ตาราง จุดสุดยอดของกราฟแต่ละคนเป็นอย่างใดอย่างหนึ่งไม่ได้ใช้งาน , การใช้งานหรือเสียเสียทุกจุดเริ่มต้นไม่ได้ใช้งานและสามารถเปิดใช้งานโดยบอทซึ่งจะเป็นเจ้าของของพวกเขา นอกจากนี้บอตสามารถทำลายจุดยอดและไม่สามารถซ่อมแซมได้ เปิดคำสั่งซื้อ เลี้ยวประกอบด้วยขั้นตอนการทำลายและขั้นตอนการเปิดใช้งาน ในขั้นตอนการทำลายบอทแต่ละอันอาจทำลายจุดสุดยอดที่ไม่ทำงานหนึ่งจุด จุดสุดยอดนั้นเสียตั้งแต่นั้นมาและอาจไม่ถูกเปิดใช้งานโดยใครก็ได้ ในขั้นตอนการเปิดใช้งานบอทแต่ละตัวอาจเปิดใช้งานจุดสุดยอดที่ไม่ได้ใช้งานหนึ่งจุด ตั้งแต่นั้นมาพวกเขาเป็นเจ้าของจุดสุดยอดนั้นและไม่สามารถเปิดใช้งานได้โดยผู้อื่น บอตจำนวนมากอาจมีจุดสุดยอดเดียวถ้าพวกเขาทั้งหมดเปิดใช้งานในเทิร์นเดียวกัน ในแต่ละเฟสการเลือกจุดสุดยอดจะทำพร้อมกัน เกณฑ์การให้คะแนน หนึ่งรอบเวลาว่าผลัดกัน หลังจากนี้คะแนนจะเป็นดังนี้ จากจุดสุดยอดแหล่งที่ใช้งานแต่ละแห่งเราดำเนินการN2Nครั้งที่การค้นหาความลึกครั้งแรกแบบสุ่มไปตามจุดยอดที่ใช้งาน หากพบเส้นทางจากต้นทางไปยังอ่างล้างจานสำหรับจุดยอดทั้งหมดตามเส้นทางนั้นเจ้าของจุดสุดยอดทุกคนจะได้หนึ่งจุด เกมทั้งหมดมีจำนวน 100 รอบและบอทที่มีคะแนนรวมมากที่สุดคือผู้ชนะ ฉันอาจเพิ่มจำนวนนี้ถ้าความแปรปรวนของคะแนนสูงเกินไป กฎเพิ่มเติม …

1
Roguelike pathfinding
Roguelike pathfinding งานของคุณจะถูกกำหนดให้เป็นสองมิติขององค์ประกอบที่อธิบายไว้ด้านล่างซึ่งหมายถึงดันเจี้ยนเพื่อส่งออกหรือส่งกลับจำนวนเดียวแสดงจำนวนชิ้นทองคำที่คนโกงสามารถรวบรวมได้โดยไม่ต้องตื่นขึ้นมอนสเตอร์ใด ๆ องค์ประกอบของอาร์เรย์มีดังนี้: ช่องว่างจะแสดงด้วย.การโทรของคุณหรือช่องว่าง ตำแหน่งเริ่มต้นของ Rogue นั้นถูกแทนด้วยแน่นอน@; ชิ้นส่วนทองจะถูกแทนด้วย$; ผนังถูกแทนด้วย#; มอนสเตอร์จะถูกแทนด้วยตัวละครจาก regexp [a-zA-Z*&]ต่อไปนี้: อาเรย์จะต้องไม่มีตัวอักษรใด ๆ ที่ไม่ได้ระบุไว้ข้างต้นดังนั้นคุณสามารถสันนิษฐานได้ว่าอะไรก็ตามที่ไม่ใช่กำแพงพื้นที่ว่างอันธพาลหรือชิ้นส่วนทองคำเป็นสัตว์ประหลาด กฎสำหรับการหาเส้นทางคือ: คนโกงสามารถเดินผ่านเซลล์ที่ว่างเปล่าหรือเซลล์ที่มีทองคำ มันใช้เวลาในการเปลี่ยนไปยังเซลล์ที่อยู่ติดกันหรือแนวทแยงมุม การหยิบทองคำขึ้นมาทันที พวกอันธพาลไม่สามารถอยู่ใกล้เคียงหรือแนวทแยงมุมกับมอนสเตอร์ได้มากกว่าหนึ่งเทิร์นโดยไม่ต้องตื่นขึ้นมาซึ่งเป็นสิ่งต้องห้าม คนโกงสามารถเข้าสู่พื้นที่การรับรู้ของสัตว์ประหลาดได้หลายครั้งสัตว์ประหลาดจะตื่นขึ้นมาก็ต่อเมื่อคนโกงใช้เวลาสองรอบติดต่อกันใกล้ ๆ กฎอินพุตและเอาต์พุต คุณสามารถรับอินพุตในรูปแบบที่เหมาะสมรวมถึงอาเรย์สองมิติอาเรย์แบนสตริงหรืออะไรก็ได้ ถ้ามันทำให้ชีวิตของคุณง่ายขึ้นคุณก็อาจต้องใช้มิติของอาเรย์ด้วยเช่นกัน รับประกันได้ว่าคนโกงจะไม่อยู่ใกล้กับสัตว์ประหลาดในตอนเริ่มต้น โปรแกรมหรือฟังก์ชั่นเต็มรูปแบบใช้ได้ เกณฑ์การให้คะแนน นี่คือโค้ดกอล์ฟคะแนนคือจำนวนไบต์ที่คุณส่งโดยมีน้อยกว่าดีกว่า กรณีทดสอบ ฉันใช้จุดสำหรับช่องว่างที่นี่เพื่อการอ่านถ้าคุณต้องการคุณอาจใช้ช่องว่าง (ดูด้านบน) นอกจากนี้โปรดทราบว่านี่เป็นเรื่องบังเอิญที่แท้จริงว่าคนโกงอยู่ที่มุมบนซ้ายเสมอรหัสของคุณควรจัดการกับตำแหน่งที่ถูกต้องอื่น ๆ เช่นกัน 1) @.. .$. ... -> 1 แค่ทดสอบสติ 2) @.... ...g$ ..... -> 0 …

3
ทำตามคำแนะนำที่ไม่สมบูรณ์
เพื่อนของคุณได้บอกเส้นทางไปยังร้านอาหารที่ดีที่สุดในเมือง เป็นชุดของการเลี้ยวซ้ายและขวา น่าเสียดายที่พวกเขาลืมที่จะพูดถึงระยะเวลาที่คุณต้องก้าวไปข้างหน้าระหว่างรอบเหล่านั้น โชคดีที่คุณมีแผนที่ถนนพร้อมร้านอาหารทั้งหมดในนั้น บางทีคุณสามารถคิดได้ว่าร้านอาหารพวกเขาหมายถึงอะไร อินพุต แผนที่ได้รับเป็นตารางสี่เหลี่ยมของอักขระ ASCII .เป็นถนน#เป็นอาคารAที่จะZมีร้านอาหารต่างๆ คุณเริ่มที่มุมซ้ายบนไปทางตะวันออก ตัวอย่าง: .....A .#.### B....C ##.#.# D....E ##F### คำแนะนำของเพื่อนของคุณจะได้รับเป็นสตริง (อาจว่างเปล่า) หรือรายการของตัวละครที่มีLs และRs เอาท์พุต คุณสามารถเดินเส้นทางใด ๆ ที่สอดคล้องกับการเลี้ยวซ้ายและขวาในสตริงการป้อนข้อมูลโดยที่คุณต้องก้าวไปข้างหน้าอย่างน้อยหนึ่งก้าวก่อนที่พวกเขาแต่ละคนรวมทั้งในตอนท้าย โดยเฉพาะอย่างยิ่งนี่หมายความว่าถ้าสตริงเริ่มต้นด้วยRคุณไม่สามารถไปทางใต้ได้ทันทีในคอลัมน์ซ้ายสุด นอกจากนี้ยังหมายความว่าคุณไม่สามารถหมุนได้ 180 องศา คุณไม่สามารถเดินผ่านอาคารหรือร้านอาหารได้ยกเว้นอาคารที่คุณไปถึงในตอนท้าย .คุณอาจจะคิดว่าด้านบนซ้ายมุมเป็น คุณควรส่งออกร้านอาหารทั้งหมดที่สามารถเข้าถึงได้ด้วยคำแนะนำของเพื่อนของคุณเป็นสตริงหรือรายการ คุณอาจคิดว่าคำแนะนำจะนำไปสู่ร้านอาหารอย่างน้อยหนึ่งแห่ง เช่นเดียวLจะไม่ถูกต้องสำหรับแผนที่ด้านบน ตัวอย่างบางส่วนสำหรับแผนที่ด้านบน: <empty> A R F RR B,D RL C,E RLRL E RLLR C RLLL B RLRR …

3
หลักสูตรอุปสรรคของฉันแตกต่างกันอย่างไร
พื้นหลัง ฉันได้สร้างหลักสูตรอุปสรรคง่าย ๆ โดยการวางกล่องไว้ในห้องสี่เหลี่ยม ตอนนี้ฉันต้องการนับจำนวนวิธีที่แตกต่างกันเป็นหลักซึ่งสามารถแก้ไขได้ ฉันต้องการให้คุณเขียนโปรแกรมสำหรับสิ่งนั้น อินพุต .#การป้อนข้อมูลของคุณเป็นไม่ว่างเปล่าอาร์เรย์สี่เหลี่ยมของตัวละคร จุด.เป็นพื้นที่ว่างเปล่าและ#เป็นอุปสรรค เส้นทางผ่านอุปสรรคหลักสูตรเริ่มต้นที่มุมบนด้านซ้ายและปลายที่มุมด้านล่างขวาและไปเท่านั้นหรือลง นอกจากนี้เส้นทางที่ถูกต้องไม่สามารถผ่านสิ่งกีดขวางได้ นี่คือตัวอย่างบางส่วนที่วาดด้วย+-characters: Valid path Invalid path Invalid path Invalid path ++........ ++........ +++++..... ..+....... .++++++#.. .+.....#.. ....+++#++ ..++...#.. ......+#.. .+.++++#.. .......#.+ ...+++.#.. ....#.++++ .+++#.++++ ....#....+ ....#+.... เส้นทางสองเส้นทางนั้นมีความคล้ายคลึงกัน1หากสามารถแปลงเป็นอีกเส้นทางหนึ่งได้ด้วยการเคลื่อนที่ที+ละจุด พา ธ กลางจะต้องถูกต้องเช่นกันดังนั้นคุณไม่สามารถโค้งงอข้ามสิ่งกีดขวางได้ ตัวอย่างเช่นสองเส้นทางแรกที่นี่มีความคล้ายคลึงเป็นหลัก แต่ที่สามแตกต่างจากพวกเขาเป็นหลักเนื่องจากมันไม่สามารถเลื้อยข้ามสองอุปสรรค: ++........ +......... +++++++++. .+++++.#.. ++.....#.. .......#+. .....+.#.. .++++++#.. …

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