การเขียนโปรแกรมปริศนา & รหัสกอล์ฟ

คำถาม & คำตอบสำหรับผู้ชื่นชอบการเขียนโปรแกรมปริศนา

5
หมายเลข StickStack
StickStack เป็นภาษาการเขียนโปรแกรมแบบกองซ้อนที่ง่ายมากโดยมีเพียงสองคำสั่งเท่านั้น: | ดันความยาวของสแต็กลงบนสแต็ก -ดึงองค์ประกอบสองอันดับแรกจากสแต็กและผลักกลับความแตกต่าง ( second topmost - topmost) รายละเอียดภาษา สแต็กว่างเปล่าเมื่อเริ่มต้นโปรแกรม คำแนะนำทั้งหมดจะดำเนินการตามลำดับจากซ้ายไปขวา หากมีจำนวนน้อยกว่า 2 หมายเลขในสแต็ก-คำแนะนำนั้นผิดกฎหมาย ในตอนท้ายของการดำเนินการกองควรมีตรงหนึ่งหมายเลข จำนวนเต็มใด ๆ สามารถสร้างได้โดยโปรแกรม StickStack ตัวอย่างเช่น: |||--||-- generates the number 2 through the following stack states: [] [0] [0, 1] [0, 1, 2] [0, -1] [1] [1, 1] [1, 1, 2] [1, -1] [2] …

9
King of the Hill - ลูกเต๋าที่โกหก
Liar's Diceเป็นเกมลูกเต๋าที่ค่อนข้างง่าย ฉันเห็นกฎที่แตกต่างกันไปเล็กน้อย แต่นี่เป็นรุ่นที่ฉันคุ้นเคยมากที่สุด: ผู้เล่นแต่ละคนเริ่มต้นด้วย 5d6 ยกเว้นเมื่อทำการทอยลูกเต๋าในตอนท้ายของรอบผู้เล่นแต่ละคนอาจเห็นลูกเต๋าของตัวเอง แต่ไม่ใช่ของฝ่ายตรงข้ามใด ๆ ในช่วงเริ่มต้นของรอบใด ๆ ผู้เล่นทุกคนหมุนลูกเต๋าอะไรก็ตามที่พวกเขามีอยู่ในปัจจุบัน จากนั้นผู้เล่นหนึ่งคน (โดยปกตินี่คือทั้งผู้ชนะในรอบก่อนหน้าหรือผู้เล่นทางด้านซ้ายของผู้เล่นที่เริ่มต้นครั้งที่แล้วเราจะใช้อดีตสำหรับ KotH นี้ด้วยผู้เล่นสุ่มเริ่มรอบแรก) ทำให้เดาได้ว่ามีหมายเลขใดจำนวนหนึ่งอยู่บนโต๊ะ(อยู่ที่ป่า) การเสนอราคาจะดำเนินต่อไปทางขวาจะสูงขึ้นในแต่ละครั้ง (ตัวอย่างเช่น 3 fives, 3 sixes และ 4 twos ทั้งหมดสูงกว่า 3 fours แต่ 3 threes ไม่ 3; 4 อันสูงกว่าเช่นกัน แต่การเสนอราคาอาจทำให้คุณ ข้อเสีย); จนกว่าผู้เล่นคนใดเรียกผู้เล่นก่อนหน้าพวกเขาว่าเป็นคนโกหก ณ จุดนี้ผู้เล่นทุกคนเปิดเผยลูกเต๋าของพวกเขาและนับจำนวนของการเสนอราคาจำนวนสุดท้ายบนโต๊ะทั้งหมด หากยอดรวมต่ำกว่าการประมูลผู้เล่นที่ทำการประมูลต้องให้ตายแก่ผู้เล่นที่เรียกพวกเขาว่าเป็นคนโกหกมิฉะนั้นผู้เล่นที่เรียกผู้ชนะการประมูลจะต้องให้ตายกับผู้ประมูล (ดังนั้นผู้ชนะจึงชนะ หากอย่างน้อยพวกเขาก็มีจำนวนมากเท่าที่เขามีการเสนอราคาไม่จำเป็นต้องมีจำนวนที่แน่นอน) เมื่อคุณหมดลูกเต๋าคุณก็แพ้ ผู้เล่นคนสุดท้ายยืนชนะ ตัวอย่างเช่น: ผู้เล่นคนหนึ่งมี 1,1,2,4,6 ผู้เล่นสองมี …

18
เอาท์พุทลำดับ Iccanobif
เขียนโปรแกรมหรือฟังก์ชั่นที่มีชื่อที่ออกจะกลับมาหรือลำดับขึ้นไปnจำนวนเต็ม TH ในลำดับ Iccanobif, เอกสารเกี่ยวกับ OEIS เป็นA014258 โปรดทราบว่าเฉพาะองค์ประกอบศูนย์ในลำดับ ( 0) จะถูกพิมพ์หากnเป็นศูนย์ ลำดับถูกสร้างขึ้นโดยเริ่มต้นเช่นลำดับ Fibonacci มาตรฐาน แต่หลังจากเพิ่มหมายเลขก่อนหน้านี้สองหมายเลขคุณพลิกผลลัพธ์และวางศูนย์นำหน้าใด ๆ ความจริงที่น่าสนใจสำหรับฉันอย่างน้อยก็คือลำดับนี้ไม่เพิ่มขึ้นอย่างเข้มงวด (ดูรายการด้านล่าง) มันก็ดูเหมือนจะเป็น (และอาจจะเป็น) มากกว่าหรือเท่ากับลำดับฟีโบนักชีอย่างเคร่งครัด โปรแกรมที่คุณป้อนต้องเป็นจำนวนเต็ม ลำดับ 20 หมายเลขแรกมีให้ที่นี่เพื่อความสุขในการรับชมของคุณ: 0, 1, 1, 2, 3, 5, 8, 31, 93, 421, 415, 638, 3501, 9314, 51821, 53116, 739401, 715297, 8964541, 8389769 ช่องโหว่มาตรฐานเป็นสิ่งต้องห้าม โปรแกรมที่สั้นที่สุดชนะ แก้ไข: เพิ่มหมายเหตุเพื่อชี้แจงว่าลำดับเริ่มต้นด้วยองค์ประกอบศูนย์และควรรวมหากnเป็นศูนย์ ตัวอย่างความเป็นไปได้ของ …

2
น้ำที่เก็บไว้ใน scuplture แกนหกเหลี่ยม
ฉันมีแท่งหกเหลี่ยมติดกันเป็นรูปปั้นแปลก ๆ แท่งมีความยาว 1 ถึง 99 เซนติเมตร (ซม.) และ 1 ตารางเซนติเมตรในพื้นที่หน้าตัด แท่งทั้งหมดจะติดกาวบนใบหน้าหกเหลี่ยมถึงแท่งอื่นอย่างน้อยหนึ่ง แท่งอยู่ในแนวเดียวกันที่ขอบด้านล่าง หลังจากฝนตกหนักประติมากรรมก็เต็มไปด้วยน้ำ ถือน้ำเท่าไหร่? อินพุต โปรแกรมของคุณควรอ่าน (ผ่าน stdin หรือไฟล์) จำนวนบรรทัดประกอบด้วยคู่ของช่องว่างและคู่ของตัวเลขที่ระบุความยาวของแท่งในรูปแบบนี้: aa bb cc dd ee ff gg แต่ละแท่ง (เช่น dd ที่นี่) ติดกาวได้สูงสุด 6 แท่งโดยรอบตามที่แสดงในตัวอย่าง แท่งที่หายไปคือหลุมและไม่รวบรวมน้ำ ตัวอย่างเช่นการป้อนข้อมูล 04 04 04 01 03 04 04 จะเป็นตัวแทนของประติมากรรมดังต่อไปนี้: แกนกลางมีความสูง1(ฉันไม่พบมุมที่ดีที่มองเห็นแท่งนั้นด้วย) ตอนนี้เสาเหนือแท่งนั้นสามารถกักเก็บน้ำไว้ได้ 2 ซม. ก่อนที่มันจะล้นเหนือ3แกนทางด้านขวา …

3
แฟคตอริ่งจำนวนเต็ม 64 บิต
เขียนโปรแกรมการประกอบGOLFที่อ่านจำนวนเต็มจาก stdin (ตามด้วยการขึ้นบรรทัดใหม่) และแสดงผลลัพธ์ปัจจัยหลักแยกจากบรรทัดใหม่ตามด้วยบรรทัดใหม่ต่อท้ายที่ stdout ปัจจัยสำคัญไม่จำเป็นต้องอยู่ในลำดับที่เฉพาะเจาะจง 1ไม่ใช่ปัจจัยสำคัญ GOLFไบนารี่ของคุณ(หลังจากประกอบ) จะต้องมีขนาด 8192 ไบต์ โปรแกรมของคุณจะได้คะแนนจากการรัน 10 ครั้งแต่ละรายการมีหนึ่งในอินพุตต่อไปนี้: 8831269065180497 2843901546547359024 6111061272747645669 11554045868611683619 6764921230558061729 16870180535862877896 3778974635503891117 204667546124958269 16927447722109721827 9929766466606501253 ตัวเลขเหล่านี้จะถูกจัดเรียงในแง่ของความยากลำบาก คนแรกควรได้รับการแก้ไขโดยแผนกทดลอง การปรับให้เหมาะสมกับชุดของตัวเลขนี้ขัดต่อจิตวิญญาณของคำถามฉันอาจเปลี่ยนชุดตัวเลขได้ทุกเมื่อ โปรแกรมของคุณจะต้องใช้งานได้กับหมายเลขอินพุต 64 บิตที่เป็นบวกใด ๆ คะแนนของคุณคือผลรวมของรอบ CPU ที่ใช้เพื่อคำนึงถึงตัวเลขข้างต้น เนื่องจากGOLFเป็นของใหม่ฉันจะใส่พอยน์เตอร์ไว้ที่นี่ คุณควรอ่านGOLFสเปคที่มีคำแนะนำและค่าใช้จ่ายวงจร ในโปรแกรมตัวอย่างที่เก็บ Github สามารถพบได้ โดยเฉพาะอย่างยิ่งดูที่โปรแกรมตัวอย่างแบบแฟคทอเรียลซึ่งแสดงให้เห็นถึงอินพุต / เอาต์พุต python3 assemble.py your_source.golfรวบรวมโปรแกรมของคุณเพื่อไบนารีโดยการเรียกใช้ จากนั้นเรียกใช้โปรแกรมของคุณโดยpython3 golf.py your_source.binควรพิมพ์จำนวนรอบด้วย ดูค่าของเนื้อหาการลงทะเบียนที่โปรแกรมออกด้วยการ-dตั้งค่าสถานะ - …

16
Riffle Array ทั่วไป
สนามกอล์ฟที่ง่ายต่อการเริ่มต้นสัปดาห์! คุณกำลังได้รับสามอาร์เรย์ที่: อาร์เรย์ฐาน Bที่ค่าอาร์เรย์ Vและอาร์เรย์ดัชนี Iคุณควรผลิตอาร์เรย์อื่นที่ค่าจากVจะแทรกเข้าไปในดัชนีที่กำหนดโดยB Iนี่คือตัวอย่าง: Base: [5, 1, 4, 1, 3] Values: [0, 0, 7] Indices: [5, 0, 3] ดัชนีชี้ไปที่ตำแหน่งต่อไปนี้ในอาร์เรย์ฐาน: [ 5, 1, 4, 1, 3 ] ^ ^ ^ 0 3 5 ดังนั้นการแทรกองค์ประกอบที่สอดคล้องกันจากอาร์เรย์ค่าผลลัพธ์ควรเป็น: [0, 5, 1, 4, 7, 1, 3, 0] กฎระเบียบ คุณอาจจะเขียนโปรแกรมหรือฟังก์ชั่นการป้อนข้อมูลผ่านทาง STDIN (หรือทางเลือกที่ใกล้เคียงที่สุด) อาร์กิวเมนต์บรรทัดคำสั่งหรือข้อโต้แย้งฟังก์ชั่นและการส่งออกผลผ่าน STDOUT …

13
ปืนที่เร็วที่สุดของทิศตะวันตกราชาแห่งการท้าทาย
นี่คือความท้าทาย King of the Hill ในการแข่งรอบ มันเป็นการต่อสู้เพื่อค้นหามือปืนที่เก่งที่สุดของตะวันตก! เพื่อให้สามารถแข่งขันในการแข่งขันครั้งนี้คุณต้องทำสองฟังก์ชั่น คนแรกกำหนดคุณลักษณะของมือปืนของคุณและที่สองคือฟังก์ชั่นลอจิกหลักสำหรับมือปืน ฟังก์ชั่นแอตทริบิวต์ function () { var bot = { name: "testBot", numbOfBullets: 7, reloadSpeed: 1, shotsPerTurn: 1, moveSpeed: 2 } return bot } ฟังก์ชันแอททริบิวต์ประกอบด้วยตัวแปร 5 ตัวที่คุณจะต้องตั้งค่าตามกฎบางอย่าง (ยกเว้นnameว่าจะเป็นสตริงใดก็ได้) คุณต้องใช้คะแนนรวม 15 แต้มกับมือปืนของคุณ - มือปืนที่ไม่ได้ใช้คะแนนเต็ม 15 คะแนนจะไม่มีสิทธิ์ นี่คือการทำงานของคุณลักษณะ: numbOfBullets - กำหนดจำนวนกระสุนปืนของคุณ ค่าเริ่มต้นและต่ำสุดnumbOfBulletsคือ 1 แต่ละสัญลักษณ์แสดงหัวข้อย่อยค่าใช้จ่ายเพิ่มเติม 1 …

12
ตัวเลขที่ไม่ใช่ศูนย์ล่าสุดของแฟคทอเรียลในฐาน
คุณควรจะเขียนโปรแกรมหรือฟังก์ชั่นที่ได้รับสามจำนวนเต็มบวกn b kเป็นผลการป้อนข้อมูลหรือผลตอบแทนที่ผ่านมาkตัวเลขก่อนที่ศูนย์ต่อท้ายในฐานตัวแทนของbn! ตัวอย่าง n=7 b=5 k=4 factorial(n) is 5040 5040 is 130130 in base 5 the last 4 digits of 130130 before the trailing zeros are 3013 the output is 3013 อินพุต 3 จำนวนเต็มบวกที่n b k2 <= b <= 10 ลำดับของจำนวนเต็มอินพุทสามารถเลือกได้เอง เอาท์พุต รายการของตัวเลขที่ส่งคืนหรือส่งออกเป็นรายการจำนวนเต็มหรือจำนวนเต็ม เลขศูนย์นำหน้าเป็นตัวเลือก โซลูชันของคุณต้องแก้กรณีทดสอบตัวอย่างใด ๆในคอมพิวเตอร์ของฉัน (ฉันจะทดสอบเฉพาะกรณีที่ปิดฉันมีพีซีที่ต่ำกว่าค่าเฉลี่ย) ตัวอย่าง เพิ่มการทดสอบใหม่เพื่อตรวจสอบความถูกต้องของการส่ง …

12
The Great Wumpus Hunt
สมบูรณ์ ฤดูกาลของ Wumpus ได้สิ้นสุดลงแล้วและด้วยชีวิตของ Wumpus และนักล่าผู้กล้าหาญ เช่นเดียวกับบาง Hunters ที่ขี้ขลาดไร้ศีลธรรมและจริงจัง แต่ในตอนท้ายของวันนั้น NascarHunter โดย Dr Heckle ก็ออกมาพร้อมกับของขวัญและสง่าราศีมากที่สุด เราขอคำนับคุณโอผู้กล้า ... ผู้ขับขี่? เป็นฤดูเปิดของ Wumpuses และนักล่าจากทั่วโลกต่างพากันไปที่ถ้ำ Wumpus เพื่อพยายามที่จะกำจัด Wumpus Pelts อันมีค่า เกม ขึ้นอยู่กับเกมHunt the Wumpusคลาสสิกที่มีรูปแบบไม่กี่ แผนที่ เฟ มีห้องทั้งหมด 20 ห้องแต่ละห้องเชื่อมต่อกับอีก 3 ห้องทำให้เป็นวงแหวน 3 วงโดยมีสะพานเชื่อมระหว่างกัน The Wumpus Wumpus เป็นสัตว์ลึกลับ ไม่มีใครแน่ใจว่าสิ่งที่ดูเหมือนว่า แต่ทุกคนยอมรับว่ามันรุนแรง Wumpus อาศัยอยู่ในถ้ำและชอบกินของที่ตายแล้ว หากมีศพอยู่ในถ้ำถัดจาก Wumpus เขาจะย้ายไปที่นั่นและกินมัน …

10
ต่อแผ่นระนาบกับวงกลมที่ถูกดัดแปลงนี้
นำหน่วยวงกลมตรงกลางที่จุดกำเนิด ในจตุภาคที่อยู่ใกล้เคียงสองจุดให้สะท้อนโค้งของวงกลมข้ามเส้นที่เชื่อมระหว่างจุดตัดแกน x และ y ด้วยรูปร่างที่ได้คุณสามารถเรียงแผ่นระนาบ: ฉันสร้างภาพนี้ด้วยกล่องทรายฟิสิกส์ 2D สุดยอด Algodoo ! เขียนโปรแกรมที่ให้ภาพคล้ายกับภาพนี้ในรูปแบบไฟล์ภาพ lossless ทั่วไปบางรูปแบบ คุณสามารถบันทึกภาพเป็นไฟล์ที่มีชื่อที่คุณเลือกหรือคุณอาจแสดงมัน ไม่ควรป้อนข้อมูลใด ๆ กฎ: ทั้งภาพจะต้อง tessellated กับกระเบื้องปรับเปลี่ยนวงกลมโดยใช้สองสี RGB ที่แตกต่างกันทางสายตาหนึ่งสำหรับกระเบื้องในแนวตั้งชี้หนึ่งสำหรับกระเบื้องแนวนอนชี้ รัศมีของแผ่นวงกลมควรมีอย่างน้อย 32 พิกเซล (รัศมีในภาพด้านบนมีประมาณ 110 พิกเซล) รูปภาพควรมีขนาดอย่างน้อย 4 แผ่นและสูง 4 แผ่น สิ่งนี้รวมกับกฎข้างต้นหมายความว่ารูปภาพสามารถมีขนาดขั้นต่ำ 256 × 256 พิกเซล (ภาพด้านบนคือ 4 แผ่นโดย 4 แผ่น) tessellation อาจถูกแปลด้วยจำนวนเงินใด ๆ ตัวอย่างเช่นมุมซ้ายบนของรูปภาพไม่จำเป็นต้องเป็นจุดสุดยอดที่แผ่นกระเบื้องมาบรรจบกัน (tessellation ไม่ควรหมุนอย่างไรก็ตาม) …

7
ทำนายดินถล่ม
แผ่นดินถล่ม ในการท้าทายนี้งานของคุณคือการคาดการณ์ขอบเขตของความเสียหายที่เกิดจากแผ่นดินถล่มขนาดใหญ่ เราใช้ต่อไปนี้ง่ายรูปแบบสองมิติมันแปรโดยความสูงเริ่มต้น h >= 0และค่าสัมประสิทธิ์ที่สำคัญ c > 0คุณเริ่มต้นด้วยหน้าผาสูงhและมีการสันนิษฐานว่าภูมิประเทศนั้นแบนราบไปทางซ้ายและทางขวาของมันอย่างไม่สิ้นสุด สำหรับh = 6สถานการณ์จะเป็นดังนี้: ########## ########## ########## ########## ########## ########## ----------------------- -มีข้อเท็จจริงอสังหาริมทรัพย์และ#เป็นดินที่ไม่เสถียร หากความแตกต่างของความสูงระหว่างสองคอลัมน์ที่อยู่ใกล้เคียงเป็นมากกว่าcการถล่มเกิดขึ้น: ด้านบนcหน่วยของดินจากคอลัมน์ด้านซ้ายล้มลงไปยังcคอลัมน์ทางด้านขวาหนึ่งไปยังแต่ละ คอลัมน์ที่ไม่ว่างด้านขวาสุดในรูปนั้นไม่เสถียรc = 2ดังนั้นจึงมีการเรียกดินถล่ม: ######### ######### ########## ########## ########## ############ ----------------------- คอลัมน์ยังคงไม่เสถียรซึ่งทำให้เกิดแผ่นดินถล่มครั้งที่สอง: ######### ######### ######### ######### ############ ############ ----------------------- ตอนนี้คอลัมน์ทางซ้ายไม่เสถียรดังนั้นดินถล่มใหม่จึงถูกเรียกขึ้นมาที่นั่น: ######## ######## ######### ########### ############ ############ ----------------------- หลังจากนี้หน้าผาก็มั่นคงอีกครั้ง สิ่งที่ดีเกี่ยวกับโมเดลนี้คือลำดับของการถล่มที่ประมวลผลไม่สำคัญ: …
22 code-golf 

6
สร้าง De Bruijn ที่สั้นที่สุด
ลำดับ De Bruijn เป็นที่น่าสนใจ: มันเป็นลำดับวงจรที่สั้นที่สุดและมีลำดับที่เป็นไปได้ทั้งหมดของตัวอักษรที่กำหนดตามความยาวที่กำหนด ตัวอย่างเช่นหากเราพิจารณาตัวอักษร A, B, C และความยาว 3 เอาต์พุตที่เป็นไปได้คือ: AAABBBCCCABCACCBBAACBCBABAC คุณจะพบว่าเป็นไปได้ลำดับที่ 3 ตัวละครทุกตัวโดยใช้ตัวอักษรA, BและCมีอยู่ใน ความท้าทายของคุณคือการสร้างลำดับ De Bruijn ในตัวละครน้อยที่สุด ฟังก์ชั่นของคุณควรใช้สองพารามิเตอร์จำนวนเต็มแทนความยาวของลำดับและรายการที่มีตัวอักษร ผลลัพธ์ของคุณควรเป็นลำดับในรูปแบบรายการ คุณอาจคิดว่าทุกรายการในตัวอักษรมีความแตกต่าง เครื่องกำเนิดตัวอย่างสามารถพบได้ที่นี่ ช่องโหว่มาตรฐานใช้

9
ซีซาร์-Cypher-Mania
ซีซาร์ศูนย์เป็นศูนย์เปลี่ยนตัวง่ายมากที่ตัวอักษรแต่ละตัวจะเลื่อนโดยคงชดเชย (บ่วงรอบ Z ถึง A) ในทำนองเดียวกันเรายังสามารถ Caesar Cypher สำหรับชุดอักขระ ASCII ที่พิมพ์ได้ นี่คืออักขระ 95 ตัวจากรหัสจุด 0x20 ถึง 0x7E สำหรับการชดเชยที่กำหนดdเราจะจับคู่รหัสCกับ (C - 32 + d) % 95 + 32 ซึ่งเปลี่ยนอักขระทั้งหมดโดย a dและวนรอบจาก~พื้นที่ อักขระที่อยู่นอกช่วงนี้ (อักขระควบคุมเช่นบรรทัดใหม่แท็บและอักขระที่อยู่นอกช่วง ASCII) จะไม่ได้รับผลกระทบ คุณต้องเขียนโปรแกรมหรือฟังก์ชั่นสองอย่าง (อาจแตกต่างกันในภาษาต่าง ๆ ) ซึ่งเป็นการชดเชยdและสตริง โปรแกรมแรกควรกลับหรือพิมพ์ Cypher ของ Caesar ของอินพุต โปรแกรมที่สองควรส่งคืนหรือพิมพ์ผกผันซีซาร์เลขศูนย์ (เช่นใช้ชดเชย-d) คุณสามารถรับอินพุตผ่าน STDIN อาร์กิวเมนต์บรรทัดคำสั่งหรือฟังก์ชันอาร์กิวเมนต์ เพื่อให้สิ่งต่าง …

5
การเขียนโปรแกรมหัวหอม
ใช้เฉพาะASCII ที่พิมพ์ได้ (รหัสฐานสิบหก 20 ถึง 7E) เขียนโปรแกรมหลัก N × N แบบสี่เหลี่ยมโดยไม่มีความคิดเห็นที่ล้อมรอบด้วยเลเยอร์เพิ่มอีก 4 ชั้นสร้างโปรแกรมสแควร์ (N + 8) × (N + 8) (N> 0) . สำหรับ N = 3 โครงร่าง (ที่จะถูกแทนที่ด้วยรหัสจริง) มีลักษณะดังนี้: 44444444444 43333333334 43222222234 43211111234 4321CCC1234 4321CCC1234 4321CCC1234 43211111234 43222222234 43333333334 44444444444 C เป็นตัวแทนของโปรแกรมคอร์ 3 × 3 1`s หมายถึงเลเยอร์แรก, 2 หมายถึงเลเยอร์ที่สอง …

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 รอบและบอทที่มีคะแนนรวมมากที่สุดคือผู้ชนะ ฉันอาจเพิ่มจำนวนนี้ถ้าความแปรปรวนของคะแนนสูงเกินไป กฎเพิ่มเติม …

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