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

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

15
ความท้าทายทางเรขาคณิต
ทุกคนรักรูปทรงเรขาคณิต เหตุใดเราจึงไม่ลองและเขียนรหัสมัน ความท้าทายนี้เกี่ยวข้องกับการใช้ตัวอักษรและตัวเลขและทำให้รูปร่างขึ้นอยู่กับมัน การป้อนข้อมูล อินพุตจะอยู่ในรูปแบบของ (shapeIdentifier)(size)(inverter)การป้อนข้อมูลจะอยู่ในรูปแบบของ แต่รูปร่างคือตัวระบุขนาดและอินเวอร์เตอร์คืออะไร ตัวระบุรูปร่างเป็นตัวระบุสำหรับประเภทของรูปร่างที่คุณจะทำกับ*s ต่อไปนี้เป็นตัวระบุรูปร่าง: s - จัตุรัส t - สามเหลี่ยม ขนาดจะอยู่ระหว่าง1-20และเป็นขนาดของรูป อินเวอร์เตอร์เป็นหรือไม่รูปร่างจะถูกลงคว่ำซึ่งจะเขียนแทนด้วยหรือ+ -หมายเหตุ: s3-== (เท่ากับ) s3+เพราะกำลังสองเป็นสมมาตร อย่างไรก็ตามt5-! = t5+(ไม่เท่ากับ) ช่องว่างต่อท้ายนั้นไม่เป็นไรในผลลัพธ์ แต่ช่องว่างชั้นนำไม่ ตัวอย่างผลลัพธ์ Input: s3+ Output: *** *** *** Input: t5+ Output: * *** ***** Input: t3- Output: *** * หมายเหตุพิเศษ อินพุตสามเหลี่ยมจะเป็นเลขคี่เสมอดังนั้นสามเหลี่ยมจะลงท้ายด้วย 1 *ที่ด้านบนเสมอ ขนาดของรูปสามเหลี่ยมคือขนาดของฐานถ้าอินเวอร์เตอร์เป็น และมีขนาดของด้านบนถ้าอินเวอร์เตอร์เป็น+-
23 code-golf  string  ascii-art  geometry  code-golf  ascii-art  subsequence  fewest-operations  test-battery  code-golf  array-manipulation  bitwise  code-golf  interactive  code-golf  music  code-golf  string  kolmogorov-complexity  code-golf  string  decision-problem  simulation  code-golf  string  classification  code-golf  sequence  base-conversion  palindrome  code-golf  kolmogorov-complexity  code-golf  date  astronomy  code-golf  sequence  base-conversion  code-golf  geometry  combinatorics  code-golf  string  code-golf  math  array-manipulation  code-challenge  math  code-golf  card-games  code-challenge  array-manipulation  sorting  code-golf  code-golf  math  abstract-algebra  polynomials  code-golf  palindrome  factoring 

25
ฟังก์ชั่นMöbius
ฟังก์ชั่นMöbius ฟังก์ชันMöbiusเป็นฟังก์ชันเชิงทฤษฎีที่สำคัญ การส่งของคุณควรจะยอมรับเป็นจำนวนเต็มบวกและกลับค่าของฟังก์ชั่นMöbiusประเมินที่nn คำนิยาม ฟังก์ชันMöbiusμ (n) ถูกกำหนดดังนี้: | 1 if n is squarefree and has an even number of distinct prime factors μ(n) = | -1 if n is squarefree and has an odd number of distinct prime factors | 0 otherwise nเรียกว่าsquarefreeถ้าเลขชี้กำลังของการแยกตัวประกอบเฉพาะของ n ทั้งหมดน้อยกว่าสองตัว (หรือมิฉะนั้น: ไม่มีค่าเฉพาะกำลังสองหารn) กรณีทดสอบ ที่นี่คุณสามารถเห็น 50 …

9
ชื่ออักขระละตินพื้นฐานเป็นอักขระ
กลับไปสู่พื้นฐาน! รหัสของคุณโปรแกรมหรือฟังก์ชั่นที่สมบูรณ์จะต้องแปลงชื่อ Unicode อย่างเป็นทางการของอักขระ Basic Latin ที่พิมพ์ได้ไปเป็นอักขระที่เกี่ยวข้อง ตัวอย่างเช่นสำหรับการป้อนข้อมูลของคุณเอาท์พุทรหัสต้องLOW LINE_ คุณจะต้องใช้ชื่ออักขระเดียวเป็นอินพุต คุณไม่สามารถใช้ฟังก์ชันหรือไลบรารีที่มีอยู่แล้วใด ๆ มีอยู่แล้วภายในหรืออย่างอื่นซึ่งมีเหตุผลใด ๆ ที่เกี่ยวข้องกับชื่ออักขระ Unicode โดยเฉพาะ (เช่น Python unicodedata, Java's Character.getNameและอื่น ๆ ) สำหรับอินพุตอื่นนอกเหนือจากหนึ่งในชื่อเหล่านี้พฤติกรรมใด ๆ ก็ได้ นี่คือรหัสกอล์ฟ: รหัสสั้นที่สุดในหน่วยชนะไบต์ เพื่อหลีกเลี่ยงความคลุมเครือนี้เป็นชื่อเต็มของตัวละครอย่างเป็นทางการที่เราจะใช้ (ยืมจากคำถามนี้ ): SPACE ! EXCLAMATION MARK " QUOTATION MARK # NUMBER SIGN $ DOLLAR SIGN % PERCENT SIGN & AMPERSAND …

30
แปลงตัวเลขเป็นเลขฐานสิบหก
ท้าทาย นี่คือหนึ่งที่เรียบง่าย เขียนฟังก์ชั่นหรือโปรแกรมเมื่อได้รับตัวเลขในฐาน 10 เป็น input ก็จะกลับหรือพิมพ์ค่าตัวเลขนั้นในเลขฐานสิบหก ตัวอย่าง 15 -> F 1000 -> 3E8 256 -> 100 กฎระเบียบ ไม่มีเลขฐานสิบหกในตัวทำหน้าที่ใด ๆ ตัวอักษรอาจเป็นตัวพิมพ์เล็กหรือตัวพิมพ์ใหญ่ คุณจะต้องกังวลเกี่ยวกับจำนวนเต็มที่ไม่เป็นลบไม่มีเชิงลบหรือทศนิยมที่น่ารำคาญ ควรทำงานกับจำนวนที่มากตามอำเภอใจจนถึงข้อ จำกัด ประเภทเริ่มต้นของภาษา ขึ้นบรรทัดใหม่ไม่บังคับ ตามปกตินี่คือcode-golfดังนั้นโค้ดที่สั้นที่สุดที่วัดเป็นไบต์จะเป็นผู้ชนะ!

1
สามควายซึ่งกันและกัน
งาน ในความท้าทายนี้งานของคุณคือการเขียนโปรแกรมสามโปรแกรมที่ก่อให้เกิดระบบที่คล้ายกันซึ่งกันและกัน ขอเรียกโปรแกรมA, และB Cหากโปรแกรมใดโปรแกรมหนึ่งได้รับซอร์สของโปรแกรมอื่นเป็นอินพุตโปรแกรมนั้นจะส่งออกซอร์สของโปรแกรมที่สาม ตัวอย่างเช่นถ้าAจะได้รับBเป็น input Cมันจะออกผลลัพธ์ หากโปรแกรมจะได้รับแหล่งที่มาของตัวเองเป็น input เขาจะเอาท์พุทสามสาย"three", "mutual"และ"quines"(ไม่ทราบราคา) ในทุกกรณีพวกเขาอาจส่งออกขึ้นบรรทัดใหม่อีกหนึ่งบรรทัด สำหรับอินพุตอื่นโปรแกรมอาจทำอะไรก็ได้รวมถึงข้อขัดข้อง ตัวอย่าง ตัวอย่างเช่นสมมติว่ารหัสแหล่งที่มาของA, BและCมีaSdf, และghJk zxcVจากนั้นโปรแกรมควรปฏิบัติดังนี้ Source Input Output -------------------- aSdf aSdf three aSdf ghJk zxcV aSdf zxcV ghJk ghJk aSdf zxcV ghJk ghJk mutual ghJk zxcV aSdf zxcV aSdf ghJk zxcV ghJk aSdf zxcV zxcV quines …
23 code-golf  quine 

2
เส้นทางสุ่มท่อประปา
เขียนโปรแกรมหรือฟังก์ชั่นที่ใช้เวลาในสามจำนวนเต็มความกว้างw, ความสูงและนับขั้นตอนh sคุณจะได้รับการวาดภาพที่ไม่ใช่ตัวเองตัดสุ่มเดิน sก้าวยาว ๆ บน5*wโดย5*hพิกเซลภาพที่ทุก ๆ 5 5 เซลล์พิกเซลเป็นทั้งว่างเปล่า (สีเบจบริสุทธิ์) หรือหนึ่งในสิบสองเหล่านี้ง่าย "ท่อ": ภาพด้านบนถูกขยายเพื่อแสดงรายละเอียด นี่คือขนาดท่อจริง: (เส้นสีเทาเป็นเพียงการแยกประเภทท่อ) การเดินแบบสุ่มจะเป็นเส้นทางไปป์แบบต่อเนื่องเดี่ยวที่เริ่มต้นที่จุดปลายท่อหนึ่ง (หนึ่งในสี่ประเภทท่อด้านล่าง) และสิ้นสุดที่จุดปลายท่ออื่น เริ่มต้นด้วยการเว้นว่างwตามhกริดและสุ่มเลือกเซลล์หนึ่งเซลล์เพื่อเป็นจุดเริ่มต้น จากนั้นสุ่มเลือกหนึ่งในสี่ทิศทางเพื่อเริ่มต้นและวาดจุดปลายท่อที่เกี่ยวข้อง เซลล์เริ่มต้นนี้ทำเครื่องหมายขั้นตอนแรกในการเดินของคุณและทุกครั้งที่คุณวาดเซลล์ใหม่หรือเขียนทับเซลล์ที่มีอยู่เดิมจะนับเป็นขั้นตอนอื่น ทีนี้, ซ้ำ ๆ , เลือกสุ่มไปทางขวา, ซ้าย, หรือตรง, วาดเซลล์ท่อที่เหมาะสมหากทิศทางที่เลือกนั้นถูกต้อง. ย้อนกลับและเลือกใหม่หากทิศทางไม่ถูกต้องจนกว่าsเส้นทางขั้นตอนทั้งหมดจะเกิดขึ้น เส้นทางควรลงท้ายด้วยจุดปลายท่อซึ่งอาจอยู่ที่ใดก็ได้บนกริดขึ้นอยู่กับเส้นทางที่ใช้ มันสำคัญมากที่จะต้องทราบว่ามีเพียงเซลล์ท่อตรงสองเส้นเท่านั้นที่สามารถเขียนทับได้และเซลล์ท่อตรงที่มีทิศทางตรงข้ามเท่านั้นผลลัพธ์ที่ได้คือเซลล์แยก มิฉะนั้นจะต้องวางท่อทั้งหมดไว้ในเซลล์ว่าง เมื่อวาดทางแยกส่วนหนึ่งของเส้นทางที่อยู่ถัดจากเซลล์เริ่มต้นจะถูกวาดไว้ด้านบน มันขึ้นอยู่กับคุณหรือไม่ว่ากริดนั้นมีเงื่อนไขขอบเขตเป็นระยะ (PBC) หรือไม่เช่นว่าท่อที่ออกด้านหนึ่งของกริดจะออกมาในอีกด้านหนึ่งหรือไม่ หากไม่มี PBC ขอบเขตของกริดจะนับว่าเป็นสิ่งกีดขวางที่คุณสามารถวิ่งเข้าไปในท่อได้ กรณีพิเศษ เมื่อsเป็น 0 ไม่มีท่อควรจะวาดและผลผลิตที่ควรจะเป็นที่ว่างเปล่า5*wโดย5*hภาพ (เช่นสีเบจทั้งหมด) เมื่อsคือ 1 ท่อต้นขั้วเดียว (ขนาดจริง: …

5
การแปลงอย่างราบรื่นจากสแควร์ถึงหกเหลี่ยม
สำหรับเกมจำนวนมากที่เล่นบนกริดรูปหกเหลี่ยมคือ Clearly Superior Choice ™ น่าเสียดายที่เว็บไซต์ศิลปะเกมฟรีหลายแห่งมีชุดไพ่เรียงต่อเนื่องสำหรับแผนที่สี่เหลี่ยมเท่านั้น ในโครงการที่ผ่านมาฉันใช้สิ่งเหล่านี้และแปลงเป็นรูปหกเหลี่ยมด้วยตนเอง อย่างไรก็ตามฉันขี้เกียจในวัยชราของฉัน มันควรจะง่ายต่อการทำให้เป็นกระบวนการอัตโนมัติด้วยสคริปต์ขนาดเล็ก อย่างไรก็ตามฉันขี้เกียจในวัยชราของฉัน ดังนั้นฉันจ้างให้คุณและปลอมมันเป็นความท้าทายรหัสกอล์ฟ1 อินพุต อินพุตเป็นรูปภาพสี่เหลี่ยมจัตุรัสในรูปแบบภาพทั่วไปที่สามารถใช้สี RGB 24 บิต คุณอาจใช้ชื่อไฟล์เป็นอินพุตแทนข้อมูลภาพเอง คุณอาจจะถือว่าภาพเป็นรูปสี่เหลี่ยมจัตุรัสและความยาวด้านนั้นเป็นเท่าของสี่ เอาท์พุต เอาท์พุทเป็นไทล์ของอินพุต แต่แปลงเป็นรูปหกเหลี่ยม (รูปภาพเองจะเป็นสี่เหลี่ยมจัตุรัสมีพื้นที่โปร่งใส) คุณสามารถบันทึกเป็นไฟล์หรือแสดงไปที่หน้าจอ รูปแบบภาพทั่วไปจะทำเช่นเดียวกัน หากรูปแบบที่คุณใช้สนับสนุนความโปร่งใสพื้นที่พื้นหลังจะต้องโปร่งใส หากไม่เป็นเช่นนั้นคุณอาจใช้ color # FF00FF (สีแดงอมม่วงอันน่ากลัว) เป็นสแตนอิน วิธี แล้วเราจะทำอย่างไร วิธีที่ฉันใช้2ทำให้ภาพแตกในแนวตั้งเล็กน้อย แต่โดยรวมแล้วมันดูค่อนข้างดีสำหรับทุกสิ่ง เราจะทำตัวอย่างกับภาพอินพุตนี้: มาตราส่วน:ปรับอัตราส่วนภาพเป็นอัตราส่วน 3: 2 เนื่องจากรูปภาพของเราจะเป็นสี่เหลี่ยมจัตุรัสหมายความว่าคุณเพียงแค่ปรับให้กว้างถึง 75% และสูง 50% ตัวอย่างอินพุตของเราคือ 200x200 ดังนั้นเราจึงจบด้วยรูปภาพ 150x100 นี้: ไทล์:วางสำเนาของภาพที่ปรับขนาดของคุณลงในตาราง 2x2: …

10
* * * * * * * * Overwrit ป้าย
หากคุณเคยลองเพิ่มป้ายกำกับในพล็อตที่มีความหนาแน่นจริง ๆ คุณจะรู้ว่าบางครั้งป้ายกำกับอาจทับซ้อนกันทำให้อ่านได้ยาก เรากำลังจะทำสิ่งที่คล้ายกัน แต่ใน 1D อินพุตจะเป็นลำดับของ(label, x-coordinate)คู่และเอาต์พุตจะเป็นผลลัพธ์ของการวาดแต่ละจุดและฉลากตามลำดับที่กำหนด เครื่องหมายดอกจันที่*เป็นตัวแทนของจุดควรอยู่ที่พิกัด x ที่กำหนดและฉลากควรเป็นไปตาม อักขระที่มีอยู่ใด ๆ จะถูกเขียนทับ ตัวอย่างเช่นถ้าอินพุตเป็น Hello 0 World 8 Fizz 3 Buzz 5 PPCG 16 X 9 จากนั้นต่อไปนี้จะเกิดขึ้น: *Hello *Hello *World *He*Fizz*World *He*F*Buzzorld *He*F*Buzzorld *PPCG *He*F*Buz*Xrld *PPCG บรรทัดสุดท้ายควรถูกเอาท์พุท กฎ I / O อินพุตอาจประกอบด้วยจำนวนคู่ใด ๆ แต่ละป้ายจะประกอบด้วยตัวอักษรตัวพิมพ์ใหญ่และตัวพิมพ์เล็กเท่านั้นและความยาวของฉลากจะมีได้ไม่เกิน 127 ตัวอักษร แต่ละพิกัด x จะอยู่ระหว่าง …
23 code-golf  string 

5
แปลง Chevrons เป็น Soliduses
เขียนโปรแกรมที่ใช้ในสตริงที่มีช่องว่างเฉพาะบรรทัดใหม่และวงเล็บเหลี่ยม: <, >( เครื่องหมายบั้ง ) เอาท์พุทสตริงของช่องว่างการขึ้นบรรทัดใหม่และทับ: /, \( โซลิด ) ที่มีรูปร่างสอดคล้องกับอินพุตแต่หมุนหนึ่งในสี่รอบตามเข็มนาฬิกาโดยมีคอลัมน์ของช่องว่างที่แทรกระหว่างแต่ละแถวของอินพุตต้นฉบับ (เพื่อความสวยงาม) ตัวอย่างเช่นหากอินพุตคือ: <> ผลลัพธ์จะเป็นดังนี้: /\ \/ หากอินพุตคือ: ><<<> <>< ผลลัพธ์จะเป็นดังนี้: \/ /\ /\ \/ /\ /\ /\ \/ หากอินพุตคือ: >> << <> <> < >< ผลลัพธ์จะเป็นดังนี้: /\ \/ \/ \/ \/ /\ /\ /\ /\ \/ /\ สังเกตว่ามีช่องว่างคอลัมน์เดียวระหว่างแถวอินพุตต้นฉบับในสองตัวอย่างสุดท้ายอย่างไร คุณสามารถเขียนโปรแกรมเต็มรูปแบบที่รับอินพุตด้วยวิธีปกติ …

20
N Slab Slanted Slash Cake
เขียนโปรแกรมหรือฟังก์ชั่นที่รับจำนวนเต็มบวก N เมื่อ N คือ 1 เอาต์พุต /\ \/ เมื่อ N คือ 2 เอาต์พุต /\/\ \/ / / / \/ เมื่อ N คือ 3 เอาต์พุต /\/\/\ \/ / / / / / \/ / / / \/ เมื่อ N คือ 4 เอาต์พุต /\/\/\/\ \/ / / / / / / …

30
สร้างกระดานหมากรุก
เห็นสิ่งนี้ในความท้าทาย PHP มีวัตถุประสงค์เพื่อสร้างกระดานหมากรุกที่มี 64 ช่องสี่เหลี่ยม (8 * 8) ด้วยรหัสขั้นต่ำ ง่ายพอฉันสร้างของฉันใน PHP ที่ 356 ไบท์ (ไม่น่าประทับใจฉันรู้) และฉันอยากจะเห็นเรื่องอื่น ๆ สิ่งนี้สามารถทำในภาษาที่คุณเลือกตราบใดที่คุณเก็บมันวานิลลาดังนั้นจึงไม่มีการนำเข้า จำนวนไบต์ที่เล็กที่สุดชนะ ผลลัพธ์ควรมีลักษณะดังนี้: และรหัสของฉัน: <table><?php $c='black';function p($c,$n){echo'<td style="width:50px;height:50px;background:'.$c.'"></td>';if($n==1){echo"<tr>";}}for($i=1;$i<=64;$i++){if($i%8==0&&$c=="black"){$c="white";$n=1;}elseif($i%8==0&&$c=="white"){$c="black";$n=1;}elseif(isset($n)&&$n==1){$n=0;}elseif($c=="black"){$n=0;$c="white";}elseif($c=="white"){$n=0;$c="black";}p($c,$n);} หรืออ่านได้: <table><tr> <?php $color = 'black'; function printcolor($color, $nl) { echo '<td style="width:50px; height:50px; background:' . $color . '"></td>'; if ($nl == true) { echo …

18
ลูกศรพิมพ์ง่าย
สำหรับการฝึกตีกอล์ฟฉันได้ทำภารกิจในอินโทร Intro ของชั้นแฟนของฉัน ฉันพบว่าสำหรับการมอบหมายนี้มีหลายกลยุทธ์ที่เข้ามาใกล้มากในการนับตัวละครและฉันแน่ใจว่าผู้คนที่นี่สามารถหาวิธีที่ดียิ่งขึ้น แม้ว่าฉันจะสนใจวิธีการทำสิ่งนี้มากที่สุดใน Python ฉันต้องการทราบว่าโปรแกรมนี้สามารถรับ golfed ได้มากที่สุดดังนั้นนี่คือ code golf และคำตอบที่สั้นที่สุดชนะ กฎระเบียบ: งานที่ได้รับมอบหมายระบุไว้ด้านล่าง ผู้ใช้ควรได้รับการขอให้ป้อนข้อมูลสองครั้งแม้ว่าข้อความแจ้งไม่จำเป็นต้องพูดอะไรและสามารถเรียงลำดับอื่นได้ ช่องโหว่มาตรฐานใช้ การบ้าน 3: ลูกศร เขียนโปรแกรมที่พร้อมท์ให้ผู้ใช้ใส่จำนวนคอลัมน์และพิมพ์ลวดลายตามที่เห็นด้านล่าง คุณสามารถสันนิษฐานได้ว่าผู้ใช้จะใส่ตัวเลขบวก โปรแกรมของคุณควรจัดการกับลูกศรซ้ายและขวา นี่คือตัวอย่างการทดสอบสองสามตัวอย่าง: How many columns? 3 Direction? (l)eft or (r)ight: r * * * * * How many columns? 5 Direction? (l)eft or (r)ight: l * * * * …


23
ค้นหาโดยไม่มีข้อความสั่งแบบมีเงื่อนไข
ความท้าทายนี้ได้รับแรงบันดาลใจจากการเขียนโปรแกรมไมโครคอนโทรลเลอร์ Arduino ฉันมีไฟ LED 6 ดวงและปุ่ม 6 ปุ่มเชื่อมต่อกับหมุดต่าง ๆ บนกระดาน ในรหัสแต่ละปุ่มและ LED จะถูกกำหนดหมายเลข ID (1-6) หมายเลขพิน (ตั้งแต่ 0-13) ที่สอดคล้องกับหมายเลข ID จะค้นหาโดยใช้switchคำสั่ง เพื่อความสนุกฉันสงสัยว่าswitches เหล่านี้สามารถหลบเลี่ยงด้วยฟังก์ชันเลขคณิต / ฟังก์ชันอื่น ๆ เพื่อผู้ดูแลรหัสในอนาคตที่น่ากลัว ความท้าทาย จัดเตรียมฟังก์ชัน / ฟังก์ชั่นที่ใช้หมายเลข ID (จำนวนเต็ม) เป็นพารามิเตอร์และส่งกลับหมายเลขพิน (จำนวนเต็ม) สำหรับปุ่ม LED 6 ดวงและ / หรือปุ่ม 6 โดยไม่ต้องใช้คำสั่งแบบมีเงื่อนไข (no if, no switchand no ternary) คืนค่าสำหรับไฟ …

14
สีสันของสี
คุณจะได้รับค่า RGB ของสี งานของคุณง่ายมาก: เพื่อคำนวณค่าในคำจำกัดความที่ง่ายที่สุด พูดว่าช่องที่มีค่าสูงสุดกลางและต่ำสุดคือ X, Y, Z (ซึ่งมีทั้งสีแดงสีเขียวหรือสีน้ำเงิน) และค่าของมันคือ x, y, z สีสันของสีนี้คือ (h (X) -h (Y)) * (1 + (xy) / (xz)) / 2 + h (Y) โดยที่: h(red) = 0 (or 360 if one of X or Y is blue) h(green) = 120 h(blue) = 240 …
23 code-golf 

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