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

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

3
สวิตช์ใดเปิดอยู่
บทนำ คุณกำลังนั่งอยู่กับเพื่อนร่วมงานของคุณทานอาหารกลางวันและคุยโม้กับเขาเกี่ยวกับโปรเจ็กต์ล่าสุดและที่ยิ่งใหญ่ที่สุดที่คุณคาดไม่ถึง เจ็บป่วยและเบื่อกับการแสดงความเห็นแก่ตัวอย่างต่อเนื่องเขา / เธอจะให้ความท้าทายแก่คุณดังนั้นคุณจะต้องปิดตัวลง แน่นอนว่าคุณเป็นคนที่เห็นแก่ตัวและมีความสุขไปด้วยโชคคุณยอมรับ (เพราะคุณต้องยอมรับความท้าทายแต่ละอย่างและทุกครั้ง) ความท้าทายในขณะที่เขา / เธออธิบายมันคือได้รับการป้อนข้อมูลของบล็อกของข้อความที่มี 1 หรือมากกว่าของตัวละครแต่ละตัวใน!@#$^&*, การส่งออกในรูปแบบที่เหมาะสมใด ๆ พิกัดของสวิทช์ (e) ที่มี / มี "กับ" ตามที่เพื่อนร่วมงานของคุณสวิตช์เป็น$และสวิตช์ถูกจัดประเภทเป็น "เปิด" ถ้าและถ้าตรงตามเกณฑ์อย่างน้อย 1 ในเกณฑ์ต่อไปนี้: ^ล้อมรอบด้วยทั้งหมด ดังนั้น... ^^^ ^$^ ^^^ ผลลัพธ์ในสวิตช์ "เปิด" &ล้อมรอบด้วยทั้งหมด ดังนั้น... &&& &$& &&& ผลลัพธ์ในสวิตช์ "เปิด" มันมีการครอบคลุมอย่างน้อย*สองด้านด้วย ตัวอย่างเช่น *** &$& *** ส่งผลให้สวิตช์ "เปิด" แต่ &*& &$& &*& …
12 code-golf  string 

10
การเรียงสับเปลี่ยนกับรายการที่แยกไม่ออก
ให้ลิสต์ของจำนวนเต็มเอาท์พุทจำนวนพีชคณิตของจำนวนเต็มกับพีชคณิตเรียงกันไม่ได้นับครั้งเดียว หากมีnจำนวนเต็มและแต่ละกลุ่มของตัวเลขที่แยกไม่ออกมีความยาวn_iนี่คือn! / (n_1! * n_2! * ...) กฎระเบียบ อินพุตจะเป็นรูปแบบของรายการบางรายการเป็นอาร์กิวเมนต์ของฟังก์ชันหรือโปรแกรมที่มีจำนวนเต็ม 1 ถึง 12 ที่ไม่ใช่ค่าลบ ผลลัพธ์จะเป็นการพิมพ์หรือคืนจำนวนการเรียงสับเปลี่ยนตามที่อธิบายไว้ข้างต้น ไม่มีช่องโหว่มาตรฐานหรือฟังก์ชั่นในตัว (สร้างการเรียงสับเปลี่ยนชุดค่าผสม ฯลฯ ) อนุญาตให้ใช้แฟกทอรี กรณีทดสอบ ปัจจัยการผลิต: 1, 3000, 2, 2, 8 1, 1, 1 2, 4, 3, 2, 3, 4, 4, 4, 4, 4, 1, 1 ขาออก: 60 1 83160

2
ทำ Strawpoll
Strawpollsนั้นยอดเยี่ยมและเราใช้มันในการแชทตลอดเวลาเพื่อรับความคิดเห็นในสิ่งต่าง ๆ แต่พวกเขาน่ารำคาญที่ต้องทำเนื่องจากคุณต้องการเว็บเบราว์เซอร์ที่จะทำให้พวกเขาและทุกคนรู้ว่าฉันเข้าถึง PPCG ผ่าน SE APIs และ curl เท่านั้น ดังนั้นฉันต้องการให้คุณเขียนรหัสที่ใช้API ของ Strawpollเพื่อสร้าง strawpoll พร้อมตัวเลือกที่กำหนด รายละเอียด ใช้รายการอินพุตในรูปแบบที่เหมาะสมของตัวเลือกเป็นสตริงและหัวเรื่องซึ่งเป็นสตริง จากนั้นใช้ API เพื่อสร้าง strawpoll ด้วยชื่อนั้นและตัวเลือกเหล่านั้นและส่งออก URL ไม่อนุญาตให้ใช้หลายรายการตรวจสอบซ้ำควรบังคับใช้และไม่จำเป็นต้องใช้แคปช ตัวอย่าง "My Awesome Poll" ["option 1", "I like pies", "I also like cakes"] ผลลัพธ์: http://strawpoll.me/7275997 นี่คือรหัส - กอล์ฟดังนั้นรหัสที่สั้นที่สุดในหน่วยไบต์ชนะ!

4
เคล็ดลับสำหรับบ็อต King of the Hill
คุณมีเคล็ดลับอะไรบ้างสำหรับการสร้างบอทเพื่อเข้าร่วมการแข่งขัน King of the Hill? คุณใช้กลยุทธ์อะไรในการพิจารณาความท้าทายในการสร้างบอทของคุณ โครงสร้างข้อมูลใดที่คุณคิดว่ามีประโยชน์มากที่สุด กรุณาโพสต์หนึ่งเคล็ดลับต่อคำตอบ

9
“ Stair-ify” สตริง
คุณต้องเขียนโปรแกรมหรือฟังก์ชั่นที่สร้างสตริง "stair-ified" นี่คือวิธีที่คุณ "stair-ify" สตริง: สำหรับอักขระแต่ละตัวในสตริง: หากตัวละครเป็นสระเสียงตัวใหญ่หรือตัวเล็กไม่รวม 'y' ให้เอาออกแล้วย้ายส่วนที่เหลือของสตริงขึ้นคอลัมน์ ถ้าตัวละครเป็นช่องว่างหรือแท็บให้เอาออกแล้วย้ายส่วนที่เหลือของสตริงลงโคลัม ถ้าตัวละครไม่ใช่ให้เอาท์พุทมันตามปกติ IO สามารถอยู่ในรูปแบบที่สมเหตุสมผล ข้อมูลที่ป้อนจะไม่มีบรรทัดใหม่ใด ๆ หากคุณต้องการคุณสามารถลบช่องว่างต่อท้ายได้ หากคุณเลือกที่จะส่งคืนสตริงแทนที่จะพิมพ์โปรดรวมโปรแกรมสั้น ๆ ที่จะพิมพ์สตริงของคุณเพื่อให้สามารถมองเห็นได้ นี่ไม่ใช่ข้อบังคับและจะไม่ไปสู่การนับไบต์ของคุณ นี่เป็นเพียงความสะดวกสบายสำหรับผู้ใช้ที่ไม่เข้าใจกอล์ฟหรือ esolangs (เช่นฉัน) เพื่อให้สามารถตรวจสอบผลลัพธ์หรือทิงเกอร์ด้วยรหัส ตัวอย่าง IO: เอาต์พุตสำหรับ "bcdef ghijkl": f jkl bcde ghi เอาท์พุทสำหรับ "การเขียนโปรแกรมปริศนาและรหัส - กอล์ฟ": lf -Go s nd de ng zzle A Co mmi Pu gra Pro …
12 code-golf  string 

4
แก้สมการเชิงเส้น
ความท้าทายนี้แต่ด้วยสเป็คที่ดีกว่า สเป็ค โปรแกรมของคุณจะใช้สมการเชิงเส้นที่มีตัวแปรเดียวและเอาท์พุทค่าของxx อินพุต / แยกวิเคราะห์ ข้อมูลที่ป้อนจะมีเฉพาะตัวเลขตัวดำเนินการวงเล็บ ( ()) xและ=เครื่องหมาย (ซึ่งหมายความว่าไม่มีช่องว่าง) วงเล็บจะมีความสมดุลเสมอ จะต้องมีอย่างน้อย 1 xเสมอ xอาจจะนำหน้าด้วยตัวเลข สมการทั้งหมดจะมีผลลัพธ์เดียว จำนวนสามารถกำหนดได้โดยทำตามขั้นตอนเหล่านี้ จำนวนสามารถกำหนดได้โดย regex -?(\d+(\.\d+)?|\.\d+)นี้: หากคุณไม่ได้พูด regex: ตัวเลขถูกกำหนดเป็น 0-9 มันอาจจะมี-จุดเริ่มต้นของมันหมายถึงเชิงลบ จากนั้นอาจมีตัวเลขบางตัว หากไม่ใช่ตัวเลขใด ๆ จะมีจุดทศนิยม หากจุดทศนิยมมีอยู่อย่างน้อยหนึ่งหลักจะตามมา จำนวน / มูลค่าที่ใหญ่ที่สุดจะถูกกำหนดโดยความสามารถของภาษาของคุณ ประกอบการใด ๆ ของ: +-*/พวกเขามักจะปรากฏระหว่างตัวเลขและหรือวงเล็บ วิธี(5)(5)นี้ไม่ได้เป็นอินพุตที่ถูกต้องเพื่อประโยชน์ของความเรียบง่าย วงเล็บจะมีนิพจน์ที่ถูกต้องเสมอ (การรวมตัวเลขและ / หรือโอเปอเรเตอร์ที่ถูกต้อง) ไว้ภายใน เครื่องหมายวงเล็บแบบ "สมดุล" ถูกกำหนดเนื่องจากทุกคน(จะมีการปิดที่เกี่ยวข้อง) การประเมินผล ควรปฏิบัติตามลำดับของการดำเนินการและลำดับความสำคัญคือ (สูงสุดไปต่ำสุด): …

7
เรียงลำดับรายการตามการพึ่งพา
เป้าหมาย เรียงรายการของไอเท็มเพื่อให้แน่ใจว่าแต่ละไอเท็มถูกแสดงหลังจากการอ้างอิงที่ระบุ อินพุต Array (ต้องระบุ) อาร์เรย์ของอาร์เรย์ของจำนวนเต็มโดยที่จำนวนเต็มแต่ละค่าจะระบุดัชนีเป็นดัชนี 0 หรือ 1 ตามรายการอื่นที่ไอเท็มนี้ต้องมาภายหลัง อินพุตอาจเป็นอาร์เรย์หรือสตริงหรือสิ่งอื่นที่มนุษย์สามารถอ่านได้ ตัวอย่างเช่นอินพุต 0-based: [ [ 2 ], // item 0 comes after item 2 [ 0, 3 ], // item 1 comes after item 0 and 3 [ ], // item 2 comes anywhere [ 2 ] // item 3 …

7
บนขอบของ hypercube
งานของคุณจะได้รับการเขียนฟังก์ชั่นหรือโปรแกรมที่จะนำจำนวนเต็มn>0เป็น input และ output รายการขอบของที่nมิติhypercube ในทฤษฎีกราฟขอบถูกกำหนดเป็น 2-tuple ของจุดยอด (หรือมุมถ้าคุณต้องการ) ที่เชื่อมต่อ ตัวอย่างที่ 1 hypercube 1 มิติคือเส้นและมีสองจุดซึ่งเราจะเรียกและab ดังนั้นผลลัพธ์จะเป็น: [[a, b]] ตัวอย่างที่ 2 hypercube 4 มิติ (หรือ tesseract) ประกอบด้วย 32 edge และกราฟมีลักษณะเช่นนี้ และผลลัพธ์อาจมีลักษณะเช่นนี้ [[a, b], [a, c], [a, e], [a, i], [b, d], [b, f], [b, j], [c, d], [c, g], [c, k], …

2
ตัวช่วยค้นหาคำ
ฉันได้ทำการค้นหาคำเร็ว ๆ นี้และผมคิดว่ามันจะเป็นเช่นนั้นง่ายมากถ้าทุกคำอ่านจากซ้ายไปขวา แต่การเขียนใหม่ทุกบรรทัดต้องใช้ความพยายามอย่างมาก! ดังนั้นฉันกำลังขอรหัสนักกอล์ฟเพื่อช่วย (ข้อจำกัดความรับผิดชอบ: เรื่องราวข้างต้นอาจหรืออาจไม่ถูกต้องจากระยะไกล) รหัสของคุณจะใช้กริดสี่เหลี่ยมและส่งออกบรรทัดทั้งหมดผ่านทั้งสองทิศทาง เอาต์พุตจะต้องประกอบด้วยการหมุนทั้งหมด 8 ตารางของตาราง (cardinals และ diagonals หลัก), 'read off' จากบนลงล่างจากซ้ายไปขวา (ซึ่งหมายความว่า "แถว" ทุกแถวจะถูกทำซ้ำ - ไปข้างหน้าหนึ่งครั้งและอีกครั้งหนึ่งย้อนหลัง) การแบ่งบรรทัดอาจเป็นช่องว่างหรือตัวแบ่งบรรทัด หากคุณเลือกช่องว่างส่วนการหมุนกริดจะต้องเป็นตัวแบ่งบรรทัด มิฉะนั้นแผนกการหมุนกริดต้องเป็นตัวแบ่งสองบรรทัด ตัวอย่างการป้อนข้อมูล (นำมาเป็นอาร์เรย์ของอักขระสตริงหลายบรรทัดหรือรูปแบบที่เหมาะสมอื่น ๆ ) ABCDE FGHIJ KLMNO PQRST ตัวอย่างเอาต์พุต (ใช้ตัวเลือกแรกสำหรับดิวิชั่น) ABCDE FGHIJ KLMNO PQRST E DJ CIO BHNT AGMS FLR KQ P EJOT DINS …

1
คำนี้มีกี่ตัวอักษร?
แรงบันดาลใจจากProject Euler # 17นี่คือความท้าทายของคุณ เขียนโปรแกรมหรือฟังก์ชั่นเต็มรูปแบบที่ใช้ตัวเลขเป็นอินพุตจากนั้นพิมพ์หรือส่งคืนจำนวนตัวอักษรที่ใช้ในการนับและรวมถึงตัวเลขนั้นเป็นภาษาอังกฤษ (เริ่มต้นที่หนึ่ง) คุณไม่ได้มีช่องว่างจุลภาคหรือยัติภังค์ andแต่คุณควรจะรวมถึงคำว่า ตัวอย่างเช่น. 342 Three Hundred and Forty-Twoสะกด: ความยาว 23 ตัวอักษร ข้อมูลที่คุณป้อนจะเป็นจำนวนเต็มบวก คุณไม่ต้องจัดการอินพุตที่ไม่ถูกต้อง ไม่อนุญาตให้ใช้บิวด์อินหรือไลบรารี่ที่แปลงตัวเลขเป็นภาษาอังกฤษ นี่คือกฎทั้งหมดสำหรับวิธีสะกดหมายเลข (หมายเหตุ: ฉันรู้ว่าบางคนใช้ชุดของกฎที่แตกต่างกันสำหรับวิธีการสะกดหมายเลขนี่จะเป็นกฎอย่างเป็นทางการสำหรับจุดประสงค์ของการท้าทายนี้) 1 ถึง 20 หนึ่ง, สอง, สาม, สี่, ห้า, หก, เจ็ด, แปด, เก้า, สิบเอ็ด, สิบสอง, สิบสาม, สิบสี่, สิบห้า, สิบห้า, สิบหก, สิบหก, สิบเจ็ด, สิบแปด, สิบเก้า, ยี่สิบ 21 ถึง 99 …
12 code-golf  math  number 

3
อัศวินและมีด
นี่คือรหัสกอล์ฟ ในความท้าทายนี้เราจะเขียนโปรแกรม / ฟังก์ชั่นที่แก้ปริศนา " Knights and Knaves " พื้นหลัง คุณพบว่าตัวเองบนเกาะ ... ฯลฯ ... ทุกคนบนเกาะยกเว้นสำหรับคุณเป็นทั้งอัศวินหรือคนพาล อัศวินสามารถสร้างข้อความที่แท้จริงได้เท่านั้น Knaves สามารถสร้างข้อความเท็จได้เท่านั้น ฉันไม่ต้องการกำหนด "คำสั่ง" อย่างจริงจัง แต่เราจะพูดว่าข้อความใด ๆ ที่เป็น "จริง" หรือ "เท็จ" โปรดทราบว่าสิ่งนี้ไม่รวมถึงประโยคขัดแย้ง สำหรับจุดประสงค์ของการท้าทายนี้คุณจะเจอกลุ่มชาวเกาะ พวกเขาจะทำงบกับคุณ งานของคุณคือการตัดสินว่าใครคืออัศวินและใครเป็นคน knave การป้อนข้อมูล: คุณจะได้รับ (ในรูปแบบที่เหมาะสม) ข้อมูลต่อไปนี้: รายการของผู้คนในปัจจุบัน พวกเขาจะถูกตั้งชื่อด้วยตัวอักษรตัวพิมพ์ใหญ่ "AZ" ขีด จำกัด ของจำนวนคนที่กำหนดโดยสิ่งนี้จะไม่เกิน งบที่แต่ละคนทำ ดูด้านล่างสำหรับรายละเอียดที่สำคัญเกี่ยวกับเรื่องนี้ เอาท์พุต จากนั้นคุณจะแสดงผล (ในรูปแบบที่สมเหตุสมผล) ว่าแต่ละคนคืออะไร ตัวอย่างเช่นหากมีผู้เล่นA B …
12 code-golf 

21
การคูณตามลำดับ
วัตถุประสงค์ของคุณคือการเขียนโปรแกรมที่รับอินพุตและเมื่อถูกล่ามโซ่ไว้ด้วยกันNเวลาจะทำการ "การคูณตามลำดับ" การคูณตามลำดับคืออะไรคุณอาจถาม มันเป็นลำดับที่มีเมล็ดaกำหนดดังนี้: f(0) = a f(n+1) = f(n)*(f(n)-1) a = 5ดังนั้นขอ ดังนั้นf(0) = 5, และf(1) = f(0)*(f(0)-1) = 5*4 = 20f(2) = f(1)*(f(1)-1) = 20*19 = 380 ถ้าโปรแกรมของคุณเป็นABCแล้วABCควรจะใช้การป้อนข้อมูลและการส่งออกa f(1)โปรแกรมABCABCควรส่งออกf(2)เป็นต้นชุดโปรแกรมของคุณควรรับข้อมูลหนึ่งครั้งและส่งออกครั้งเดียวเท่านั้น นี่คือรหัสกอล์ฟดังนั้นโปรแกรมที่สั้นที่สุดในหน่วยไบต์ชนะ ช่องโหว่มาตรฐานถูกแบน

6
จำนวนขั้นตอนสำหรับการค้นหาแบบไบนารี
กำหนดอินพุตของจำนวนเต็มบวกเอาท์พุทจำนวนขั้นตอนที่ใช้ในการค้นหาอินพุตผ่านการค้นหาไบนารีเริ่มต้นที่ 1 เรากำลังจำลองการค้นหาแบบไบนารีสำหรับจำนวนเต็มที่ได้รับเป็นอินพุตซึ่งผู้ค้นหาแบบจำลองสามารถเดาเลขจำนวนเต็มซ้ำ ๆ และได้รับการบอกว่ามันสูงเกินไปต่ำเกินไปหรือถูกต้อง กลยุทธ์สำหรับการค้นหาจำนวนเต็มมีดังนี้: ให้ n เป็นจำนวนเต็มที่ระบุเป็นอินพุตที่เราพยายามค้นหา เริ่มต้นด้วยการเดา 1 (สำหรับทุกการเดาให้เพิ่มจำนวนขั้นตอน (โดยไม่คำนึงว่าถูกต้องหรือไม่) และหยุดทันทีและส่งออกจำนวนขั้นตอนทั้งหมดหากเดาถูกต้อง) เพิ่มการเดาซ้ำสองครั้งจนกว่าการคาดเดาจะมากกว่า n (หมายเลขเป้าหมาย) (หรือถ้ามันถูกต้อง แต่กฎนี้ถูกครอบคลุมโดยกฎการเดาที่ถูกต้องของเราที่กล่าวถึงข้างต้น) ทีนี้ตั้งขอบเขตบนของกำลังแรกของ 2 ที่มากกว่า n (เช่นจำนวนที่เดาได้) และตั้งขอบเขตล่างของกำลัง 2 ตรงด้านล่าง เดาค่าเฉลี่ย (ปัดเศษลง) ของขอบเขตบนและขอบเขตล่างซ้ำ ๆ หากสูงเกินไปให้ตั้งเป็นขอบเขตบน หากต่ำเกินไปให้ตั้งเป็นขอบเขตล่าง ขั้นตอนนี้รับประกันว่าจะส่งผลให้เดาถูกต้อง นี่คือตัวอย่างสำหรับการป้อนข้อมูลของ n = 21: 1 -> 2 -> 4 -> 8 -> 16 -> 32 -> …

4
ช่วยคำนวณตัวแทนของคุณอีกครั้ง!
สองสามเดือนที่ผ่านมาเราได้อภิปรายเกี่ยวกับเมตาดาต้าเกี่ยวกับการเพิ่มชื่อเสียงที่ได้รับจากการโหวตคำถาม นี่คือพื้นฐานของระบบชื่อเสียงของเราในปัจจุบันสำหรับการลงคะแนน: 1 การโหวตคำถามUมีค่า 5 ชื่อเสียง คำตอบ upvote uมีค่า 10 ชื่อเสียง คำถามหรือคำตอบ downvote dมีค่า -2 ชื่อเสียง มีข้อเสนอแนะที่แตกต่างกันมากมายสำหรับระบบใหม่ แต่ปัจจุบันได้รับความนิยมมากที่สุดเหมือนกับข้างต้น แต่มี upvotes คำถามปรับสัดส่วนเป็น +10 ตัวแทน ความท้าทายนี้เกี่ยวกับการคำนวณจำนวนตัวแทนที่คุณจะได้รับหากใช้ระบบนี้ ลองดูตัวอย่าง หากกิจกรรมการลงคะแนนเป็นUUUUuuuuUUUUUduuudUUเช่นนั้นคุณจะได้รับ 121 ภายใต้ระบบปัจจุบัน: U x 4 x 5 = 20 = 20 u x 4 x 10 = 40 = 60 U x 5 x …

14
การเตรียมการทดสอบแบบปรนัย
บทนำ หมายเหตุ: นี่ไม่ใช่วิธีการที่จะส่งเสริมการโกง ในฐานะที่เป็นCᴏɴᴏʀO'Bʀɪᴇɴแล้วกล่าวว่าการศึกษาเป็นทางออกที่ดีที่สุดสำหรับการส่งผ่านการทดสอบ: 3 ลองพิจารณาคำตอบต่อไปนี้สำหรับการทดสอบแบบปรนัย: ABCBCAAB นี่คือตารางที่ระบุว่าคำตอบตรงกันหรือไม่: A B C B C A A B A 1 0 0 0 0 1 1 0 B 0 1 0 1 0 0 0 1 C 0 0 1 0 1 0 0 0 สิ่งนี้ทำให้เรามีตัวเลขดังต่อไปนี้: 10000110, 01010001, 00101000 ความท้าทายคือการพิมพ์เลขฐานสองเหล่านี้ แต่สิ่งสำคัญคือต้องดูว่าใช้ตัวอักษรใดในการทดสอบแบบปรนัย ตัวอย่างเช่น: …

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