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

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

2
Digits ขุด Dungeon
แก้ไข:ฉันจะมอบรางวัล100 ชื่อเสียงให้แก่นักแก้ปัญหาตัวแรกของปริศนาโบนัสเมื่อสิ้นสุดคำถาม! ฉันจะเพิ่มเงินรางวัลให้กับคำถามก็ต่อเมื่อคำตอบปรากฏขึ้นเนื่องจากเงินรางวัลนี้ไม่มีกำหนดเวลา เนื่องจากรายการจำนวนเต็มบวกหนึ่งหลักที่ไม่ลดลงคุณควรพิจารณาว่าการขุดลึกลงไปถึงตัวเลขนั้นจะขุดได้อย่างไร ███ ███ A dungeon with 5 blocks removed and a depth of 3. ███ ███ ███ ████ ████████ ก่อนที่จะเริ่มการขุดพื้นเป็นระดับ ทุกหลักสามารถลบดินหนึ่งบล็อกออกจากด้านล่างของตัวมันเองได้ แต่มันต้องไปถึงตำแหน่งนั้นจากนอกดันเจี้ยน ในขณะที่ทำเช่นนั้นตัวเลขไม่สามารถลงหรือขึ้นไปมากกว่าค่าตัวเลขในขั้นตอนแนวนอนใด ๆ ตัวเลขใช้กลยุทธ์ต่อไปนี้สำหรับการขุด: ตัวเลขที่มีค่าขุดน้อยที่สุดเป็นอันดับแรกและหลังจากนั้นตัวขุดถัดไปจะเป็นค่าที่เล็กที่สุดถัดไปจากส่วนที่เหลือของตัวเลข ตัวเลขตัวแรกสามารถขุดได้ทุกตำแหน่ง (พื้นทั้งหมดเหมือนกัน) ตัวเลขต่อไปนี้จะขุดที่คอลัมน์เริ่มต้นด้านซ้ายสุดที่พวกเขาสามารถออกมาได้ หากไม่มีคอลัมน์ดังกล่าวพวกเขาจะเริ่มขุดคอลัมน์ใหม่ทางด้านขวาของคอลัมน์ขวาสุด ตัวอย่างเช่นตัวเลขที่1 1 1 2 3 3จะขุดดันเจี้ยนต่อไปนี้ (การสร้างภาพข้อมูลทีละขั้นตอนด้วยตัวเลขที่ทำเครื่องหมายชนิดของตัวเลขที่ขุดออกจากตำแหน่งนั้น): ███1████ ███11███ ███11███ ███11███ ███11███ ███11███ ████████ ████████ ███1████ ███1████ …

3
นับจำนวนสตริงไบนารีที่สมดุลที่ตรงกับชุดของมาสก์
สตริงไบนารีคือสตริงที่มีตัวละครเท่านั้นที่มาจาก01 สตริงไบนารีสมดุลเป็นสตริงไบนารีซึ่งมีเป็นจำนวนมากว่า0ในฐานะ1 s คุณจะได้รับจำนวนเต็มบวกnและจำนวนมาสก์โดยพลการแต่ละตัวมีความยาว2nอักขระและมีอักขระที่ดึงออกมาจาก012เท่านั้น สตริงไบนารีและการแข่งขันหน้ากากถ้ามันเป็นระยะเวลาเดียวกันและตกลงที่ตัวอักษรในทุกตำแหน่งที่หน้ากากไม่ได้2 เช่นหน้ากาก011022ตรงกับสตริงไบนารี011000 , 011001 , 011010 , 011011 รับnและมาสก์เป็นอินพุต (คั่นด้วยบรรทัดใหม่) คุณต้องส่งออกจำนวนสตริงไบนารีที่สมดุลที่แตกต่างกันซึ่งตรงกับมาสก์หนึ่งตัวหรือมากกว่า ตัวอย่าง อินพุต 3 111222 000112 122020 122210 102120 เหตุผล สมดุลเพียงไบนารีการจับคู่สาย111,222เป็น111,000 สมดุลเพียงไบนารีการจับคู่สาย000112เป็น000111 สมดุลสตริงไบนารีที่ตรงกับ122,020เป็น111,000 (นับแล้ว), 110010และ101010 สมดุลสตริงไบนารีที่ตรงกับ122,210เป็น110,010 (นับแล้ว) 101,010 (นับแล้ว) และ100110 สมดุลสตริงไบนารีที่ตรงกับ102,120เป็น101,100และ100,110 (นับแล้ว) ดังนั้นผลลัพธ์ควรเป็น 6 อินพุต 10 22222222222222222222 เหตุผล มี20 ให้เลือก 10สตริงไบนารีแบบสมดุลของความยาว 20 เอาท์พุต 184756 ผู้ชนะ ผู้ชนะจะเป็นผู้คำนวณการแข่งขันให้เร็วที่สุดและแน่นอนว่าจะปฏิบัติเช่นเดียวกับการใส่ข้อมูลอื่น …

1
ตัวตรวจสอบ Meta quine
ความท้าทายนี้ถ้าคุณยอมรับมันคือการเขียนสามฟังก์ชันหรือโปรแกรม A, B และ C: A คือ quine ที่ส่งออกทั้งหมด A, B และ C (ซึ่งเป็นเนื้อหาทั้งหมดของรหัสในการส่งของคุณ) B รับพารามิเตอร์ F และตรวจสอบว่ามันเป็นควินดัง (เอาท์พุท FBC) หรือทำสิ่งที่แตกต่าง C รับพารามิเตอร์ G และตรวจสอบว่า G อาจทำงานเช่น B หรือไม่ (ตรวจสอบว่า F เอาต์พุต FGC) เป็นไปไม่ได้ที่จะตัดสินใจว่าฟังก์ชั่นเป็นตัวตรวจสอบ quine หรือไม่ดังนั้นเราจะทำสิ่งที่ง่ายกว่า: มันจะต้องกลับมาจริงถ้า G ใช้ได้สำหรับ B มันจะต้องคืนค่าเท็จถ้า G คืนค่าเท็จให้กับผลการทดสอบที่ถูกต้องทั้งหมดหรือ G จะคืนค่าความจริงสำหรับการทดสอบที่ไม่ถูกต้องทั้งหมด มันสามารถคืนสิ่งใด ๆ ผิดพลาดหรือไม่ยุติ ฯลฯ หากเป็นกรณีอื่น …
10 code-golf  quine 

11
รายการโซฟี Germain จำนวนเฉพาะ
คำถาม Sophie Germain นายกเป็นนายกพีดังกล่าวว่า2p + 1เป็นสำคัญเช่นกัน ตัวอย่างเช่น 11 เป็นโซฟี Germain prime เพราะ 23 เป็น Prime เช่นกัน เขียนโปรแกรมที่สั้นที่สุดเพื่อคำนวณจำนวนเฉพาะของ Sophie Germain ตามลำดับจากน้อยไปหามาก กฎระเบียบ โปรแกรมของคุณต้องสร้างช่วงเวลาของ Sophie Germain ไม่ใช่จากแหล่งภายนอก โปรแกรมของคุณจะต้องคำนวณจำนวนเฉพาะทั้งหมดของ Sophie Germain ภายใต้2³²-1 คุณต้องพิมพ์เฉพาะโปรแกรมที่คุณพบ บุคคลที่มีคะแนนต่ำสุดชนะ เกณฑ์การให้คะแนน 2 คะแนนต่อไบต์ของรหัสของคุณ -10 ถ้าคุณสามารถแสดงนายกที่สร้างโดยโปรแกรมของคุณมากกว่า2³²-1

1
แม่พิมพ์เมือกสามารถนับได้!
พื้นหลัง ราเมือกนั้นยอดเยี่ยม หากคุณวางพวกเขาไว้บนพื้นผิวที่มีแหล่งอาหารพวกเขาจะแพร่กระจายกิ่งก้านของพวกเขาเพื่อค้นหาอาหารจากนั้นพวกเขาจะสร้างเครือข่ายการเชื่อมโยงระหว่างแหล่งที่มา ในการท้าทายนี้คุณจะต้องจำลองราเมือกหาอาหาร ยิ่งไปกว่านั้นแม่พิมพ์นี้จะหยุดทันทีเมื่อพบว่าเพียงพอ อินพุต ปัจจัยการผลิตของคุณจะเป็นรายการLของ 2D Nจำนวนเต็มพิกัดในรูปแบบของภาษาพื้นเมืองของคุณและติดลบ รายการLรับประกันว่าจะไม่ซ้ำกัน แต่มันอาจไม่ถูกเรียงลำดับ อินพุตNอยู่ระหว่าง 0 ถึงความยาวLรวม รายการLแสดงชุดของพิกัดสำหรับแหล่งอาหาร ตัวอย่างเช่นรายการ [(0,0),(2,-1),(3,1),(0,4),(5,5)] สามารถตีความได้ด้วยสายตาเป็น o o o o o เอาท์พุต เอาต์พุตของคุณเป็นรายการที่ไม่มีค่าซ้ำกันKของพิกัดจำนวนเต็ม 2D ในรูปแบบเดียวกับอินพุต มันหมายถึงเครือข่ายที่เกิดขึ้นจากราเมือกและมันจะต้องตอบสนองเงื่อนไขดังต่อไปนี้: จุดตัดของLและมีขนาดตรงKN ชุดKเชื่อมต่อเป็นส่วนย่อยของตารางจำนวนเต็ม (ผ่าน adogencies มุมฉากหรือทแยงมุม) หากพิกัดใด ๆ ของKถูกลบออกมันจะไม่เป็นไปตามเงื่อนไขสองประการแรกอีกต่อไป โปรดทราบว่าถ้าN = 0ผลลัพธ์จะต้องเป็นรายการที่ว่างเปล่า ตัวอย่างของเอาต์พุตที่ยอมรับได้สำหรับรายการด้านบนLและN = 4จะเป็น [(0,0),(0,1),(0,2),(0,3),(0,4),(1,4),(2,4),(3,3),(3,2),(3,1),(3,5),(4,5),(5,5)] ซึ่งสามารถมองเห็นเป็น xxO Oxx x x x x …

6
ใช้แฮชความยาวผันแปรได้
เพื่อนของฉันและฉันมีเกมนี้ที่เราเล่นด้วยคำพูด มันเป็นงานอดิเรกที่สนุกและเกี่ยวข้องกับตัวอักษร "ยกเลิก" ในคำจนกว่าจะไม่มีอะไรเหลือ ฉันเหนื่อยกับการที่เขาเร็วกว่าฉันมากดังนั้นจึงเป็นหน้าที่ของคุณที่จะนำไปใช้และให้ฉันเอาชนะเขาในที่สุด เห็นได้ชัดว่าเนื่องจากฉันต้องทำให้โปรแกรมเป็นเรื่องง่ายที่จะซ่อนมันเป็นไปได้มันต้องมีขนาดเล็กที่สุด เกมนี้ทำงานอย่างไร เกมนี้เป็นอัลกอริธึมที่ค่อนข้างง่าย มันลดสตริงตัวอักษรจนกว่าจะไม่สามารถลดได้อีกดังนั้นจึงเป็นแฮช เกมจริงที่มนุษย์เราทำนั้นยากมากที่จะนำมาใช้ แต่มันสามารถทำให้เป็นอัลกอริทึมต่อไปนี้ได้ง่ายขึ้น: คุณเริ่มต้นด้วยการพับตัวอักษรครึ่งตัวและเรียงสองชิ้นดังนี้: a b c d e f g h i j k l m z y x w v u t s r p q o n จากนั้นเริ่มจากตรงกลางคุณกำหนดจำนวนเต็มบวกให้กับครึ่งบนและลบไปที่ด้านล่าง: a b c d e f g h i j k …

3
การระบุลำดับสำหรับ Cellular Automata
พื้นหลัง สำหรับจุดประสงค์ของการท้าทายนี้ออnโตมาตาเซลลูลาร์เป็นเพียงฟังก์ชันเลขฐานสองfที่ใช้ตัวเลขสองตัวจากสถานะที่ตั้ง{0, 1, ..., n-1}เป็นอินพุตและส่งกลับตัวเลขอื่นจากชุดนั้นเป็นเอาต์พุต สามารถนำไปใช้กับรายการที่มีความยาวอย่างน้อย 2 ตัวL = [x0, x1, x2, ..., xk-1] f(L) = [f(x0, x1), f(x1, x2), f(x2, x3), ..., f(xk-2, xk-1)] โปรดทราบว่ารายการผลลัพธ์มีองค์ประกอบน้อยกว่าองค์ประกอบเดิมหนึ่งรายการ แผนภาพกาลอวกาศของfเริ่มต้นจากการLเป็นรายการของรายการที่ได้รับด้วยซ้ำใช้fไปLและเก็บรวบรวมผลในรายการ รายการสุดท้ายมีความยาว 1. เราบอกว่ารายการLเป็นลำดับที่ระบุสำหรับถ้าทุกรายการสององค์ประกอบมากกว่าชุดที่รัฐเป็นรายการย่อยที่อยู่ติดกันแถวของกาลอวกาศแผนภาพที่เริ่มต้นจากบางส่วนf Lนี่เทียบเท่ากับเงื่อนไขที่ไม่มีnแคลิฟอร์เนีย -state อื่นมีไดอะแกรม spacetime ที่แน่นอน อินพุต ปัจจัยการผลิตของคุณเป็นn-by- nเมทริกซ์จำนวนเต็มMรายชื่อของจำนวนเต็มLของความยาวอย่างน้อย 2 nและเลือกหมายเลข เมทริกซ์Mกำหนดn-state CA fโดยf(a,b) = M[a][b](ใช้การจัดทำดัชนีแบบ 0) มันรับประกันได้ว่าn > 0และที่MและLมีองค์ประกอบของชุดรัฐ{0, 1, …

5
สแควร์เลขโรมันที่ไม่ชัดเจน
ราชาแห่งกรุงโรมโบราณกำลังมีปัญหาในการพิจารณาว่าตารางเวทย์มนตร์นั้นถูกต้องหรือไม่เพราะจตุรัสเวทย์มนตร์ที่เขาตรวจสอบนั้นไม่มีตัวแยกใด ๆ ระหว่างตัวเลข เขาได้ว่าจ้างวิศวกรซอฟต์แวร์เพื่อช่วยตรวจสอบว่าตารางเวทมนต์นั้นถูกต้องหรือไม่ ป้อนคำอธิบาย อินพุตเข้ามาใน STDIN หรืออาร์กิวเมนต์บรรทัดคำสั่ง คุณไม่สามารถป้อนค่าเริ่มต้นล่วงหน้าในตัวแปรได้ (เช่น "โปรแกรมนี้คาดว่าอินพุตจะอยู่ในตัวแปรx") อินพุตอยู่ในรูปแบบต่อไปนี้: <top>,<middle>,<bottom> แต่ละ<top>, <middle>และ<bottom>เป็นสตริงที่จะเท่านั้นที่เคยมีตัวอักษรพิมพ์ใหญ่I, และV Xมันจะไม่มีช่องว่างหรือตัวละครอื่น ๆ แต่ละสตริงแสดงตัวเลขโรมันสามตัวดังนั้นจึงเป็นเมทริกซ์ขนาด 3x3 แต่เหล่านี้อาจเลขโรมัน ( แต่ไม่จำเป็น) จะคลุมเครือ อนุญาตให้ฉันอธิบายสิ่งนี้ด้วยตัวอย่าง พิจารณาแถวตัวอย่างต่อไปนี้ของสามตัวอักษรโรมันโดยไม่มีช่องว่างระหว่างแต่ละหมายเลข: IVIIIIX เนื่องจากไม่มีช่องว่างระหว่างตัวอักษรจึงมีความเป็นไปได้ที่ตัวเลขสองตัวที่นี่: 1, 8, 9 ( I VIII IX) 4, 3, 9 ( IV III IX) เมื่อคุณพิจารณาว่าทั้งสามแถวของเมทริกซ์อาจเป็นเรื่องน่าสงสัยมีศักยภาพที่จะมีเมทริกซ์ 3x3 ที่แตกต่างกันมากมายจากอินพุตเดี่ยว โปรดทราบว่าไม่สามารถหาลำดับเช่น 1, 7, 1, 9 …

4
เขียน Shift Interpreter
แก้ไข:ในขณะที่บางคนสงสัยว่ามีข้อผิดพลาดในล่ามอย่างเป็นทางการ: ลำดับขององค์ประกอบใน.ถูกกลับรายการ ฉันมีล่ามสองรุ่นและใช้ผิดที่นี่ ตัวอย่างถูกเขียนขึ้นสำหรับรุ่นที่ไม่ถูกต้อง ฉันแก้ไขล่ามในที่เก็บและตัวอย่างด้านล่าง คำอธิบายของ>มันค่อนข้างคลุมเครือดังนั้นฉันจึงแก้ไขได้ นอกจากนี้ขอโทษสำหรับการใช้เวลานานมากฉันถูกจับในบางสิ่งในชีวิตจริง แก้ไข 2:ล่ามของฉันมีข้อบกพร่องในการใช้งาน.ซึ่งสะท้อนให้เห็นในตัวอย่าง (พวกเขาอาศัยพฤติกรรมที่ไม่ได้กำหนด) ปัญหาได้รับการแก้ไขแล้ว บทนำ Shiftเป็นภาษาโปรแกรมฟังก์ชั่นลึกลับที่ฉันสร้างเมื่อสองสามปีก่อน แต่เผยแพร่ในวันนี้ มันเป็นแบบกองซ้อน แต่ก็มีการแกงอัตโนมัติเช่น Haskell สเปค มีสองประเภทข้อมูลใน Shift: ฟังก์ชั่นซึ่งมีarityบวกโดยพลการ(จำนวนอินพุต) และส่งคืนรายการเอาต์พุต ตัวอย่างเช่นฟังก์ชั่นที่ซ้ำกันของอินพุตเพียงอย่างเดียวมี arity 1 และฟังก์ชั่นที่แลกเปลี่ยนสองอินพุตมี arity 2 ช่องว่างซึ่งเหมือนกันหมดและไม่มีวัตถุประสงค์อื่นนอกเหนือจากการไม่ทำหน้าที่ โปรแกรม Shift ประกอบด้วยคำสั่งเป็นศูนย์หรือมากกว่าซึ่งแต่ละคำสั่งเป็นอักขระ ASCII เดียว มีทั้งหมด 8 คำสั่ง: !( ใช้ ) ปรากฏฟังก์ชั่นfและคุ้มค่าxจากสแต็คและนำไปใช้ในการf xหากfมี arity 1 รายการf(x)จะถูกเพิ่มที่ด้านหน้าของสแต็ก ถ้ามันมี arity ฟังก์ชัน -ary n …

4
โหมโรงตรวจสอบไวยากรณ์
โหมโรงเป็นภาษาการเขียนโปรแกรมลึกลับซึ่งมีข้อ จำกัด น้อยมาก แต่ผิดปกติในสิ่งที่ถือว่าเป็นโปรแกรมที่ถูกต้อง บล็อกใด ๆ ของข้อความ ASCII ที่พิมพ์ได้ ("บล็อก" หมายความว่าบรรทัดของ ASCII ที่พิมพ์ได้จะถูกคั่นด้วยบรรทัดใหม่ - 0x0A) ถูกต้องหากว่า: ทุกคน (แนวตั้ง) คอลัมน์ของข้อความที่มีอย่างหนึ่งมากที่สุดของและ() ละเว้นตำแหน่งแนวตั้งของพวกเขา(และ)มีความสมดุลนั่นคือแต่ละ(คู่จะถูกจับคู่กับหนึ่ง)ไปทางขวาของมันและในทางกลับกัน เขียนโปรแกรมหรือฟังก์ชั่นที่กำหนดสตริงที่มี ASCII ที่พิมพ์ได้และขึ้นบรรทัดใหม่พิจารณาว่าเป็นโปรแกรม Prelude ที่ถูกต้องหรือไม่ คุณสามารถรับอินพุตผ่าน STDIN (หรือทางเลือกที่ใกล้เคียงที่สุด) อาร์กิวเมนต์บรรทัดคำสั่งหรืออาร์กิวเมนต์ฟังก์ชัน ผลลัพธ์อาจถูกส่งคืนหรือพิมพ์ไปยัง STDOUT โดยใช้ค่าความ จริง /ค่าคงที่สองค่าที่คุณเลือก คุณต้องไม่สมมติว่าอินพุตเป็นรูปสี่เหลี่ยม นี่คือรหัสกอล์ฟดังนั้นการส่งที่สั้นที่สุด (เป็นไบต์) ชนะ ตัวอย่าง ต่อไปนี้เป็นโปรแกรมโหมโรงที่ถูกต้อง (อันที่จริงมันเป็นโปรแกรมนำเสนอจริง ): ?1-(v #1)- 1 0v ^(# 0)(1+0)#)! (#) ^#1-(0 …

6
เขียนรายการคำนามสองกรณีของฟินแลนด์
บทนำ ในการท้าทายนี้งานของคุณคือการแสดงรายการได้อย่างถูกต้องกรณีของทั้งสองคำนามฟินแลนด์ ความบิดคือคุณอาจใช้หนึ่งในรายชื่อเป็นแนวทางในการผลิตอื่น ๆ คำนาม เราใช้ตารางการปฏิเสธสองตัวต่อไปนี้เป็นข้อมูลของเรา พวกเขาแสดงรายการกรณีของคำนามสองคำหนึ่งกรณีต่อบรรทัดตามลำดับเดียวกับในบทความ Wikipedia ที่ลิงก์ด้านบนในรูปแบบเอกพจน์: พหูพจน์ที่เกี่ยวข้อง ตารางที่ 1: กรณีของovi ("ประตู") ovi : ovet oven : ovien oven : ovet ovea : ovia ovessa : ovissa ovesta : ovista oveen : oviin ovella : ovilla ovelta : ovilta ovelle : oville ovena : ovina oveksi : oviksi …

4
เขียนตัวนับไบนารีในควิน
เขียนโค้ดสองส่วนซึ่งเราจะเรียก s_zero และ s_one โปรแกรม (l, n) ประกอบด้วยสำเนา l ของ s_zero และ s_one ที่สอดคล้องกับตัวเลขของ n ในรูปแบบเลขฐานสองที่มี s_zero ทางด้านซ้าย ตัวอย่างเช่นถ้า s_zero = fooและ s_one = barดังนั้น Program (4, 0) = foofoofoofoo Program (4, 1) = foofoofoobar Program (4, 2) = foofoobarfoo เป็นต้น โปรแกรม (l, n) จะต้องพิมพ์แหล่งที่มาของโปรแกรม (l, (n + 1) mod …

7
การบ้านคณิตศาสตร์ชั้นประถมศึกษาปีที่สี่สำหรับสัปดาห์: พนักงานขายการเดินทางที่ไม่มีประสิทธิภาพมากที่สุด
ลูกสาวของฉันมีการบ้านคณิตศาสตร์ต่อไปนี้ ลองนึกภาพเพื่อนหกคนที่อาศัยอยู่บนเส้นหนึ่งชื่อ E, F, G, H, J และ K ตำแหน่งของพวกเขาในบรรทัดดังที่ระบุไว้ (ไม่ขยาย) ด้านล่าง: ดังนั้น F มีชีวิตอยู่ห้าหน่วยจาก E และอีกสองหน่วยจาก G และอื่น ๆ การมอบหมายของคุณ: จัดทำโปรแกรมที่ระบุเส้นทางที่เข้าเยี่ยมเพื่อนแต่ละคนโดยมีความยาวทั้งหมดnหน่วยโดยใช้ตำแหน่งของเพื่อนและnเป็นอินพุต ควรรายงานเส้นทางหากพบ (ตัวอย่างเช่นสำหรับความยาว 17 อาจรายงาน "E, F, G, H, J, K" และควรออกอย่างสง่างามหากไม่มีวิธีแก้ปัญหาสำหรับสิ่งที่คุ้มค่าฉันเสร็จสิ้นแล้ว คำตอบที่ไม่ดีนักใน Mathematica ขนาด 271 ไบต์ฉันคิดว่ามันเป็นไปได้ที่จะกระชับกว่านั้น

3
เราเตอร์โรเตอร์บนกริด
อินพุต ข้อมูลของคุณมีสายเดียวแยกจากกันโดยการขึ้นบรรทัดใหม่เข้าไปใน2n+1เส้นของความยาวสำหรับจำนวนเต็มบาง2n+1 n ≥ 0จำนวนเต็มnไม่ได้เป็นส่วนหนึ่งของอินพุต คุณจะต้องคำนวณมันจากสตริง เส้นที่มีองค์ประกอบของ >^<v"ตัวละครทิศทาง" |หากการขึ้นบรรทัดใหม่ก่อให้เกิดปัญหาคุณสามารถแทนที่พวกเขาโดยท่อแนวตั้ง รูปแบบการป้อนข้อมูลเป็นตารางสี่เหลี่ยมที่มีขนาด(2n+1)x(2n+1)และแต่ละเซลล์ของตารางจะถูกตีความว่าเป็นเราเตอร์โรเตอร์ซึ่งชี้ไปในทิศทางที่สำคัญอย่างใดอย่างหนึ่งในสี่ เราดำเนินการวางโทเค็นบนเราเตอร์ที่กึ่งกลางของตารางจากนั้นเราเตอร์จะย้ายไปรอบ ๆ ด้วยวิธีดังต่อไปนี้ เมื่อโทเค็นตกลงบนเราเตอร์เราเตอร์จะเปลี่ยน 90 องศาในทิศทางทวนเข็มนาฬิกาและย้ายโทเค็นหนึ่งขั้นในทิศทางใหม่ที่ชี้ไป หากพบกับเราเตอร์อื่นกระบวนการจะทำซ้ำ แต่ในที่สุดโทเค็นจะหลุดออกจากกริด เอาท์พุต เอาต์พุตของคุณคือการกำหนดค่าสุดท้ายของเราเตอร์ในรูปแบบเดียวกับอินพุต ตัวอย่าง เป็นตัวอย่างการป้อนข้อมูลพิจารณา3x3กริด <^< ^>< >^v ตำแหน่งที่เราเตอร์ส่วนกลางได้รับการเน้นเพื่อระบุโทเค็น (มันยากที่จะมองเห็น) เราเตอร์ส่วนกลางหมุนไปทางทิศเหนือแล้วย้ายโทเค็นไปที่เซลล์กลางของแถวบนสุด: <^< ^^< >^v เราเตอร์นี้หมุนไปทางตะวันตกและส่งโทเค็นไปที่มุมซ้ายบน: <<< ^^< >^v เราเตอร์ตรงมุมส่งโทเค็นทางทิศใต้ดังนั้นตอนนี้จึงอยู่ที่เซลล์ด้านซ้ายสุดของแถวกลาง: v<< ^^< >^v เราเตอร์นั้นหมุนไปทางตะวันตกและส่งโทเค็นออกจากกริด v<< <^< >^v นี่คือการกำหนดค่ากริดสุดท้ายดังนั้นโปรแกรมของคุณควรเอาท์พุท โปรดทราบว่าในตัวอย่างที่มีความซับซ้อนมากขึ้นโทเค็นสามารถส่งผ่านเราเตอร์เดียวกันได้หลายครั้งก่อนที่จะตกลงจากกริด กฎระเบียบ คุณสามารถเขียนฟังก์ชั่นหรือโปรแกรมเต็มรูปแบบ นี่คือโค้ดกอล์ฟดังนั้นจำนวนไบต์ที่น้อยที่สุดจึงชนะ ช่องโหว่มาตรฐานไม่ได้รับอนุญาต คุณสามารถตัดสินใจได้ว่าจะมีการขึ้นบรรทัดใหม่ในอินพุทและ …
10 code-golf  grid 

2
รถบรรทุกในลานจอดรถ
มีที่จอดรถ P ในลานจอดรถมี แต่พื้นที่บางส่วนมีการครอบครองโดยรถยนต์ตัวแทนจาก octothorpes ในขณะที่ช่องว่างฟรีจุด# .ในไม่ช้าก็มีรถบรรทุก T มาถึงแต่ละอันจะใช้พื้นที่ L ติดต่อกันอย่างแน่นอน รถบรรทุกไม่จำเป็นต้องจอดอยู่ติดกัน งานของคุณคือการสร้างโปรแกรมที่จะค้นหาจำนวนรถยนต์ที่เล็กที่สุดที่ต้องถูกลบออกเพื่อจอดรถบรรทุกทั้งหมด จะมีพื้นที่เพียงพอที่จะรองรับรถบรรทุกทุกคันได้อย่างมีความหมายT*L<P อินพุต ในแถวแรกจะมีจำนวนเต็มสามตัวคือ P, T และ L คั่นด้วยช่องว่าง ในแถวที่สองจะมีสตริงของอักขระ P แสดงถึงที่จอดรถในสถานะเริ่มต้น เอาท์พุต ในบรรทัดแรกและบรรทัดเดียวโปรแกรมของคุณควรพิมพ์จำนวนรถยนต์ที่เล็กที่สุดที่จำเป็นต้องนำออกเพื่อจอดรถบรรทุกทั้งหมด กรณีทดสอบ การป้อนข้อมูล: 6 1 3 #.#.## เอาท์พุท: 1 การป้อนข้อมูล: 9 2 3 .##..#..# เอาท์พุท: 2 การป้อนข้อมูล: 15 2 5 .#.....#.#####. เอาท์พุท: 3 รหัสที่สั้นที่สุดชนะ (หมายเหตุ: …
10 code-golf 

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