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

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

8
เห็นภาพรวมการยกเว้น
การรวม - การแยกช่วยให้คุณคำนวณขนาดของสหภาพและจุดตัดระหว่างชุดที่ทราบค่าอื่น ๆ ฉันจะไม่อธิบายอย่างถ่องแท้ แต่ความท้าทายของคุณคือการมองเห็นการรวมการยกเว้นใน Venn Diagram เพราะฉันดีคุณจะใช้รูปสี่เหลี่ยมผืนผ้าไม่ใช่แวดวง คุณจะได้รับรายชื่อของรูปสี่เหลี่ยมผืนผ้าแสดงโดยพิกัดมุมบนซ้ายและขวาล่างในรูปแบบที่เหมาะสมใด ๆ (รายการของ tuples 4 รายการของคู่คู่รายการคู่ ฯลฯ ) คุณสามารถสันนิษฐานได้ว่าพิกัดทั้งหมดนั้นไม่เป็นลบและอยู่ในช่วงหมายเลข (สมเหตุสมผล) ของภาษาของคุณ (โปรดระบุว่ามันคืออะไรถ้ามันน้อยกว่า 128) คุณสามารถเลือกที่จะเป็นแบบรวมด้านซ้ายหรือด้านซ้ายแบบเอกสิทธิ์เฉพาะบุคคลและแบบด้านขวาหรือแบบด้านขวา ไม่ว่าคุณจะเลือกรูปแบบใดคุณสามารถสมมติว่ารูปสี่เหลี่ยมผืนผ้าทั้งหมดมีอย่างน้อย 1x1 จากนั้นคุณจะต้องวาดแต่ละสี่เหลี่ยมบนหน้าจอ (ผ้าใบ ASCII) โดยใช้อักขระที่ไม่ใช่ช่องว่างตัวkเดียวซึ่งเป็นของคุณที่จะเลือก อย่างไรก็ตามเมื่อใดก็ตามที่มีสี่เหลี่ยมสองรูปทับกันพื้นที่ทับซ้อนจะถูกวาดด้วยอักขระที่ไม่ใช่ช่องว่างl != kอื่น เมื่อใดก็ตามที่สามสี่เหลี่ยมซ้อนกันพื้นที่ที่ทับซ้อนกันควรจะวาดด้วยkและสำหรับเป็นเลขคี่สี่เหลี่ยมครอบคลุมและเป็นเลขคู่,kl พื้นหลังควรเป็นช่องว่างเดียว ( 0x20) กรณีทดสอบ ( k = "#", l = ".") 0 0 9 9 1 1 …

2
ทำบิตทวีป
ลองจินตนาการว่าเรามีเมทริกซ์ของบิต (ซึ่งมีอย่างน้อยหนึ่ง1): 0 1 0 1 1 0 1 0 0 1 0 0 1 0 1 0 0 1 0 1 1 0 0 0 1 0 1 1 0 1 0 1 0 1 1 0 0 1 0 0 1 1 0 1 0 0 0 1 …

1
บอร์ดของ Stackin
ฉันมีบอร์ดมากมายที่ฉันต้องการเพื่อให้มีพื้นที่น้อยที่สุดเท่าที่จะทำได้ น่าเสียดายที่กระดานล้มถ้าฉันสแต็คพวกเขามากกว่า 10 สูง ฉันต้องการโปรแกรมที่จะบอกวิธีกองซ้อนบอร์ดให้ใช้พื้นที่แนวนอนให้น้อยที่สุดเท่าที่จะทำได้โดยไม่ต้องวางบอร์ดซ้อนกันสูงกว่าสิบหรือมีกระดานแขวนอยู่เหนือพื้นที่ว่าง งานของคุณ: เขียนโปรแกรมหรือฟังก์ชั่นที่เมื่อกำหนดอาร์เรย์ที่มีความยาวของบอร์ดเอาต์พุตในรูปแบบ ASCII จะสามารถจัดวางบอร์ดเพื่อประหยัดพื้นที่แนวนอนได้มากที่สุดโดยไม่ต้องซ้อนบอร์ดสูงกว่า 10 หรือมีส่วนใด ๆ คณะแขวนอยู่เหนือพื้นที่ว่างเปล่า ASCII art ของคุณควรแสดงการกำหนดค่าของบอร์ดโดยแต่ละอันจะแสดงโดยใช้อักขระที่แตกต่างกัน จะมีบอร์ดได้สูงสุด 20 บอร์ด ตัวอย่างเช่นหากอินพุตเป็น [2,2,4,2,2,2,4,4,4] เอาต์พุตที่เป็นไปได้คือ: dhh dgg dff dee abc abc abc abc ซึ่งเป็นการกำหนดค่าที่มั่นคง (แม้ว่าจะล้มลงใน ~ 0.1 วินาทีในชีวิตจริง) การป้อนข้อมูล: อาร์เรย์ที่มีจำนวนเต็มสูงสุด 20 รายการแสดงความยาวของกระดาน เอาท์พุท: ศิลปะ ASCII แสดงการกำหนดค่าของบอร์ดตามที่อธิบายไว้ข้างต้น กรณีทดสอบ: โปรดทราบว่าอาจมีวิธีแก้ไขปัญหาอื่น ๆ สำหรับกรณีทดสอบและอักขระที่แสดงสำหรับแต่ละบอร์ดอาจแตกต่างกัน [12,2,2,2,3,4,4,8,8] -> ffgghhiii …

7
ถอดรหัส DTMF ง่าย ๆ : ค้นหาหมายเลขโทรศัพท์!
นี่เป็นความท้าทายที่เรียบง่ายซึ่งหวังว่าอาจนำไปสู่คำตอบที่สร้างสรรค์ การอ้างถึงวิกิพีเดีย : "สัญญาณสองความถี่หลายโทน (DTMF) เป็นระบบส่งสัญญาณโทรคมนาคมในวงดนตรีโดยใช้แถบความถี่เสียงผ่านสายโทรศัพท์ระหว่างอุปกรณ์โทรศัพท์และอุปกรณ์สื่อสารอื่น ๆ และศูนย์สวิตช์" งาน ด้วยจำนวนเต็มสองจำนวนที่แสดงถึงความถี่ของคอลัมน์และแถวในตารางต่อไปนี้งานของคุณคือส่งออกคีย์ที่เกี่ยวข้อง: | 1209 Hz | 1336 Hz | 1477 Hz -------+---------+---------+--------- 697 Hz | 1 | 2 | 3 770 Hz | 4 | 5 | 6 852 Hz | 7 | 8 | 9 941 Hz | * | 0 …

15
ย้อนกลับ - ish สตริง!
งานของคุณ: เขียนโปรแกรม / ฟังก์ชั่นที่เมื่อได้รับสตริงที่มีอักขระ ASCII เท่านั้นเอาท์พุท / ส่งกลับสตริงใน reverse-ish ตัวอย่าง: 1) อินพุต Hello, World! 2) หมายเลขอักขระเฉพาะในอินพุต (อินพุตสตริงคั่นด้วยไพพ์ ( |) เพื่อให้สามารถอ่านได้) H|e|l|l|o|,| |W|o|r|l|d|! 1 2 3 4 5 6 7 8 9 10 3) สำหรับอักขระที่ซ้ำกันให้ค้นหาอักขระแรกที่เกิดขึ้นของอักขระนั้นและกำหนดจำนวนอักขระที่ซ้ำกันด้วยหมายเลขเดียวกับอักขระแรก H|e|l|l|o|,| |W|o|r|l|d|! 1 2 3 3 4 5 6 7 4 8 3 9 10 4) …
11 code-golf  string 

1
การวางแผนชั้น!
ข้อจำกัดความรับผิดชอบ: เรื่องราวที่บอกไว้ในคำถามนี้เป็นเรื่องสมมติทั้งหมดและคิดค้นขึ้นเพื่อวัตถุประสงค์ในการให้คำแนะนำ ฉันมีเพื่อนที่เป็นสถาปนิกและหลังจากอธิบายแนวคิดของ code-golf และเว็บไซต์นี้ให้เขาแล้วเขาบอกว่าฉันควรเขียนโค้ดบางอย่างที่มีประโยชน์สำหรับการเปลี่ยนแปลง ฉันถามเขาว่าสิ่งใดที่เขาคิดว่ามีประโยชน์และในฐานะสถาปนิกเขาตอบว่าเขาจะสนุกกับการวางแผนพื้นที่ให้การเตรียมการที่เป็นไปได้ทั้งหมดสำหรับห้องขนาดบางขนาดภายในบ้านที่มีขนาดที่แน่นอน ฉันคิดว่าฉันจะพิสูจน์ว่า code-golf ไม่ได้ไร้ประโยชน์เลยและให้โปรแกรมนี้แก่เขาด้วยจำนวนไบต์ที่น้อยที่สุดเท่าที่จะเป็นไปได้ งานของคุณ: เขียนโปรแกรมหรือฟังก์ชั่นที่เมื่อได้รับอาเรย์ D ที่มีขนาดของทั้งบ้านและอาเรย์ที่สองที่มีขนาดของห้องภายในออกเป็นศิลปะ ASCII การกำหนดค่าที่เป็นไปได้ทั้งหมดของห้องภายในบ้าน ห้องพักทุกห้องและผนังด้านนอกของบ้านควรสร้างเป็นกล่อง ASCII มาตรฐานโดยใช้ | สัญลักษณ์สำหรับผนังแนวตั้งสัญลักษณ์ - เป็นผนังแนวนอนและสัญลักษณ์ + สำหรับมุม ตัวอย่างเช่นบ้านที่มีขนาด [4,4] จะมีลักษณะดังนี้: +----+ | | | | | | | | +----+ อย่างที่คุณเห็นมุมไม่นับรวมเป็นส่วนหนึ่งของชุดข้อมูล จำนวน - หรือ | อักขระที่สร้างด้านข้างควรเท่ากับจำนวนที่กำหนดในมิติข้อมูล ห้องพักอาจแชร์ผนังหรือแชร์กำแพงกับบ้าน ห้องอาจไม่ประกอบด้วยห้องขนาดเล็กภายในตัวเอง ตัวอย่างเช่นการกำหนดค่า +--+---+-+ | | | …

14
แบนเนอร์เครื่องบิน ASCII
ได้รับสองปัจจัยการผลิต - หนึ่งของพวกเขาไม่ว่างเปล่าสตริง ASCII พิมพ์ (รวมทั้งพื้นที่ไม่รวมการขึ้นบรรทัดใหม่) ซึ่งเป็นหนึ่งในความเป็นอยู่อื่น ๆ ของทั้งสองแตกต่างกันค่าที่สอดคล้องกันของทางเลือกของคุณ ( 1 / 0, l / r, left / rightฯลฯ ) - เอาท์พุท ASCII ศิลปะเครื่องบิน แบนเนอร์ของสตริงชี้ทั้งซ้ายหรือขวา เพื่อความสอดคล้องฉันจะใช้leftและrightตลอดทั้งคำอธิบายการท้าทายนี้ เครื่องบินนั้นเป็น|-DI>-/( left) หรือ\-<ID-|( right) เนื่องจากแบนเนอร์มีความชัดเจนจึงประกอบด้วยอักขระของสตริงอินพุตคั่นด้วยช่องว่างทั้งจากซ้ายไปขวา ( left) หรือจากขวาไปซ้าย ( right) และล้อมรอบด้วยกล่องของรูปร่าง /--/ ---< < \--\ หรือ \--\ > >--- /--/ หมายเหตุต้องมีหนึ่งช่องว่างระหว่างจุดเริ่มต้น / ท้ายของข้อความและ>, <ตัวละคร …

18
กรุณากรอกข้อมูลในช่องว่าง!
(ไม่มีไม่ได้นี้มิได้ใด ๆ เหล่านี้ ) รับสตริงและรายการสตริงกรอกข้อมูลในช่องว่างทั้งหมดในสตริงอินพุตด้วยสตริงที่สอดคล้องกัน Input / Output สตริงอินพุตมีอักขระแบบตัวอักษรช่องว่างและขีดล่างเท่านั้น มันไม่ว่างเปล่าและไม่ได้เริ่มต้นด้วยการขีดเส้นใต้ กล่าวอีกนัยหนึ่งสตริงอินพุตตรงกับ regex^[a-z A-Z]([a-z A-Z_]*[a-z A-Z])?$ สตริงทั้งหมดในรายการอินพุตไม่ว่างเปล่าและมีเฉพาะอักขระและตัวเลขและช่องว่าง ในคำอื่น ๆ พวกเขาตรง ^[a-z A-Z]+$regex ช่องว่างคือลำดับที่ต่อเนื่องของขีดล่าง ( _) ซึ่งไม่ได้นำหน้าหรือดำเนินการโดยขีดล่าง สตริงอินพุตมีnช่องว่างสำหรับจำนวนเต็มบวกบางส่วนnและรายการสตริงมีnสตริงที่แน่นอน เอาต์พุตได้รับโดยแทนที่แต่ละkช่องว่าง -th ในสตริงอินพุตด้วยkสตริง -th ในรายการอินพุตของสตริง ตัวอย่าง รับสตริงอินพุต"I like _____ because _______ _____ing"และรายการสตริง["ice cream", "it is", "satisfy"]เราสามารถหาเอาต์พุตดังนี้: "like "ว่างแรกมาโดยตรงหลังจาก เรากรอกที่อยู่กับที่จะได้รับ"ice cream""I like ice cream because …

1
Cyclic Polyglot Challenge (ตำรวจ)
Cyclic Polyglot Challenge นี่คือตำรวจด้าย คุณสามารถค้นหาหัวข้อโจรที่นี่ Cyclic Polyglot โพลีกล็อตแบบวัฏจักรขององค์ประกอบ N เป็นโปรแกรมที่สมบูรณ์ที่สามารถเรียกใช้ในภาษาต่าง ๆ N ในแต่ละภาษาเมื่อโปรแกรมรันโดยไม่มีอินพุต (อาจมีข้อยกเว้นนี้ ) ควรพิมพ์ชื่อของภาษาไปยัง STDOUT โดยเฉพาะถ้าโปรแกรมทำงานในภาษา Kth ควรพิมพ์ชื่อของภาษา (K + 1) th หากโปรแกรมทำงานในภาษา Nth (นั่นคือภาษาสุดท้ายในวงจรองค์ประกอบ N) ก็ควรพิมพ์ชื่อของภาษาแรก ตัวอย่างอาจมีประโยชน์ a = [[ v = 7, puts('Befunge') ]] __END__ = print("Ruby") -->*+:292*++,,@ --3 9 --7 * --^,:-5< การรันโปรแกรมนี้ด้วย Lua จะพิมพ์สตริง …

3
ตั้งค่า totem tribal สำหรับสภาพอากาศที่ร้องขอ
มีหมู่บ้าน Sioux มันมีโทเท็ม: __ ___| |___ \/ \ / \/ /\ ``| |`` /\ /^^\ | | /^^\ / /\ \ | | / /\ \ '''''''''''''''''''''''''''' Totem ช่วยให้ Sioux เป็นผู้ควบคุมสภาพอากาศเพื่อช่วยในการทำงานที่แตกต่างกัน ช่วยชาวบ้านตกแต่งโทเท็มอย่างเหมาะสมเพื่อเรียกสภาพอากาศที่เพียงพอ โทเท็มมีหลายส่วน: __ ___|AA|___ \/ \BBBBBBBB/ \/ /\ ``|CC|`` /\ /^^\ |DD| /^^\ / /\ \ 13 |EE| 42 …

4
สิ่งนี้ ... คือ ... ความสำเร็จ!
Fortress เป็นภาษาที่พัฒนาโดยกลุ่มวิจัยภาษาโปรแกรมของซัน (RIP Fortress) ซึ่งมีคุณสมบัติที่ไม่เหมือนใครมันเป็นไปได้ที่จะเรนเดอร์โปรแกรม "Fortify" ในรูปแบบฟอนต์ต่าง ๆ (เช่นตัวหนากระดานดำตัวหนาตัวเอียง โรมัน ฯลฯ ) เป้าหมายคือแสดงตัวแปร Fort-One Fortress ใน HTML มาร์กอัป ต่อไปนี้เป็นวิธีการเสริมความแข็งแกร่งของตัวแปรหนึ่งตัว (ทำงาน / แก้ไขจากเอกสารเพื่อวัตถุประสงค์ในการเล่นกอล์ฟ): หากตัวแปรนั้นเป็นตัวพิมพ์ใหญ่ซ้ำ (เช่นZZ) มันจะกลายเป็นรูปแบบในกระดานดำตัวหนา ( 𝔸𝔹ℂ𝔻𝔼𝔽𝔾ℍ𝕀𝕁𝕂𝕃𝕄ℕ𝕆ℙℚℝ𝕊𝕋𝕌𝕍𝕎𝕏𝕐ℤ) หากตัวแปรนำหน้าด้วยเครื่องหมายขีดล่างตัวแปรจะแสดงผลในแบบอักษรโรมัน (เหลือเพียงอย่างเดียว) หากตัวแปรตามด้วยขีดล่างตัวแปรจะแสดงผลในแบบอักษรตัวหนา ( <b>v </b>) หากตัวแปรนั้นไม่ได้นำหน้าหรือตามด้วยเครื่องหมายขีดล่างตัวแปรนั้นจะแสดงผลในแบบอักษรตัวเอียง ( <i>v </i>) codepoints ของ bolds กระดานดำมีดังนี้𝔸: 1D538, 𝔹: 1D539, ℂ: 2102, 𝔻: 1D53B, 𝔼: 1D53C, …
11 code-golf 

9
ติดตั้งหุ่นยนต์แปลก ๆ
ฉันกำลังเล่นกับหุ่นยนต์อัตโนมัติและฉันพบสิ่งที่มีพฤติกรรมที่น่าสนใจ นี่คือวิธีการทำงาน: มันอ่านสตริงไบนารีจากซ้ายไปขวาหากพบ1ตามด้วย2ค่าอื่น ๆ มันจะผนวก0กับผลและอ่านต่อ หากพบ0(หรือมีเหลือน้อยกว่า 3 ค่า) มันจะผนวกค่าปัจจุบันและ a 1และอ่านต่อ ในตอนท้ายของสตริงมันจะผนวกหนึ่ง1กับผลลัพธ์ นี่เป็นตัวอย่างผลงานของรุ่นหนึ่ง 01011111 ^ เราพบกันครั้งแรก0ดังนั้นเราจึงต่อท้าย01ผลลัพธ์ของเรา 01011111 ^ 01 ตอนนี้เราได้พบกับ1ดังนั้นเราจึงผนวกศูนย์และข้ามค่าสองค่าถัดไป 01011111 ^ 010 เราพบกัน1ดังนั้นเราทำแบบเดียวกัน 01011111 ^ 0100 ตอนนี้เรามีพื้นที่อื่น1แต่ไม่เพียงพอที่จะข้ามดังนั้นเราจึงผนวกเซลล์ปัจจุบันและ a 1(ในกรณีนี้11) 01011111 ^ 010011 เราอยู่ท้ายแล้วเราจึงผนวกหนึ่ง1และยุติรุ่นนี้ 01011111 ^ 0100111 งาน การป้อนข้อมูลให้ในรูปแบบที่สมเหตุสมผลคุณต้องสร้างฟังก์ชั่นหรือโปรแกรมที่คำนวณหุ่นยนต์รุ่นหนึ่ง นี่เป็นคำถามเกี่ยวกับรหัสกอล์ฟดังนั้นคำตอบจะได้คะแนนเป็นไบต์โดยมีจำนวนไบต์น้อยกว่าดีกว่า การใช้งานตัวอย่าง นี่คือตัวอย่างการใช้งานใน Haskell (กำหนดฟังก์ชั่นdแต่โปรแกรมจะพิมพ์การทำซ้ำไปเรื่อย ๆ ): d('1':_:_:x) = "0" ++ …

5
คอมพิวเตอร์จะไม่ลิ้มรสคุกกี้ที่สดชื่น
แรงบันดาลใจจากgithub.com/JackToaster/Reassuring-Parable-Generatorในการเปิดแรงบันดาลใจจากxkcd.com/1263 คำที่เป็นไปได้นั้นมาจากreassuring.cfgของที่เก็บนั้น แนะนำให้ดู reassuring.cfg (ใช้การกระทำที่ 12)เพื่อดูไวยากรณ์ที่ตรงกับเอาต์พุต (ผลลัพธ์คือรายการของสตริงทั้งหมดที่ตรงกับไวยากรณ์) ภารกิจ:โปรแกรมต้องออกของคุณทั้งหมด 7,968 กรณีสายของข้อความที่แน่นอนที่มีอยู่ใน Pastebin pastebin.com/2SNAJ1VH สำเนาของ pastebin จะถูกบันทึกไว้ในเครื่อง Wayback นี่คือตัวอย่างของ 33 บรรทัดที่สร้างแรงบันดาลใจจาก pastebin: Computers can't enjoy a salad. Computers can't enjoy a cake. Computers can't enjoy a ice cream cone. Computers can't enjoy a meal. Computers can't enjoy a drink. Computers can't enjoy …

7
นับอาร์เรย์ของช่วงเวลา
periodของสตริงเป็นที่ไม่ใช่ศูนย์การเปลี่ยนแปลงที่สั้นที่สุดเพื่อให้สตริงตรงกับตัวเองโดยไม่สนใจชิ้นส่วนใด ๆ ที่แขวนอยู่ ดังนั้นสำหรับตัวอย่างเช่นมีระยะเวลาabcabcab 3โดยการประชุมเราบอกว่าถ้าไม่มีการเปลี่ยนแปลงเช่นนั้นสตริงมีระยะเวลาเท่ากับความยาวของมัน ดังนั้นระยะเวลาของการabcdeเป็น5ระยะเวลาของการมี a1 ในแง่ที่เป็นทางการมากขึ้นช่วงเวลาของสตริงSคือขั้นต่ำi > 0ดังนั้นS[1,n-i] == S[i+1,n](การจัดทำดัชนีจาก1) สำหรับสตริง S ของกำลังสองที่มีความยาวเราจะคำนวณระยะเวลาของคำนำหน้าทั้งหมดของกำลังสองยาว S = abcabcabตัวอย่างเช่นพิจารณา ช่วงเวลาที่เราจะคำนวณคือ: 'a', 1 'ab', 2 'abca', 3 'abcabcab', 3 [1, 2, 3, 3]เราจะอยู่ในความเป็นจริงเพียงแค่การส่งออกอาร์เรย์ของระยะเวลาที่เป็น สำหรับพลังบวกให้สองพิจารณาทั้งหมดสตริงไบนารีที่เป็นไปได้n Sโปรดจำไว้ว่าสตริงไบนารีเป็นเพียงสตริงของ1s และ0s ดังนั้นจึงมี2^nสตริงดังกล่าว (นั่นคือ2กำลังn) สำหรับแต่ละคนเราสามารถคำนวณช่วงเวลานี้ได้ ความท้าทายคือการเขียนโค้ดที่ใช้n(กำลังสอง) เป็นอินพุตและคำนวณจำนวนอาร์เรย์ที่แตกต่างกัน คำตอบสำหรับn = 1, 2, 4, 8, 16, 32, 64, 128คือ: 1, …

1
ข้อความภาพเคลื่อนไหว ASCII ของศิลปะไซนัส
ฉันคิดถึงการสาธิตเก่า ๆ ที่แสดงความสามารถของคอมพิวเตอร์เมื่อพวกเขาถูกเรียกว่า x86 แทนที่จะเป็น i3, i5 และ i7 หนึ่งในคนแรกที่ฉันดูใน 386 ของฉันคือการสาธิตแบบไม่จริงจาก Future Crewที่ตอนนี้ฉลองครบรอบ 25 ปี ในนาทีที่ 0:43ส่วนแรกของการสาธิตจะเริ่มขึ้นและเราจะเห็นข้อความเลื่อนตามเส้นทางไซน์ มาลองเลียนแบบเอฟเฟกต์นั้นในศิลปะ ASCII กันเถอะ! ความท้าทาย รับเส้นทางนี้: *** *** *** *** ** ** * * * * * * * * ** ** *** *** ****** และข้อความป้อนเข้าให้วาดข้อความตามเส้นทางดังกล่าว: Thi Golf! s i de Yay s …

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