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

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

7
วันนี้เป็นวันอะไร (หรือวันอื่น ๆ )?
งาน เขียนโปรแกรมหรือฟังก์ชันที่คำนวณชื่อสัปดาห์ของวันที่ซึ่งผู้ใช้ป้อน อินพุตและเอาต์พุต อินพุตเป็นสตริง, YYYYMMDD. ตัวอย่างของค่าอินพุต: 20110617: 17 มิถุนายน 2554 19040229: 29 กุมภาพันธ์ 2447 06661225: 25 ธันวาคม 666 00000101: 1 มกราคม 0 99991231: 31 ธันวาคม 9999 คุณอาจจะสมมติว่าอินพุตทั้งหมดนั้นถูกต้อง โปรดทราบว่าปีศูนย์นั้นถูกต้อง เอาท์พุทเป็นจำนวนเต็มระหว่างและ0 6จำนวนเต็มแต่ละค่าแทนชื่อวันในสัปดาห์ คุณสามารถตัดสินใจได้อย่างอิสระว่าจำนวนเต็มใดที่แสดงถึงชื่อวันต่อสัปดาห์ 0: วันจันทร์ 1: วันอังคาร 2: วันพุธ ... 6: วันอาทิตย์ (ตามลำดับ) หรืออันนี้ 0: วันจันทร์ 1: วันพุธ 2: วันอาทิตย์ ... 6: …
12 code-golf  date 

22
JAxH วิธีที่ทำให้สับสน, ไม่ใช่ข้อความ [ปิด]
ปิด คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้มุ่งเน้นที่ปัญหาเดียวโดยแก้ไขโพสต์นี้ ปิดให้บริการใน2 ปีที่ผ่านมา JAPH เป็นประเพณีที่ยิ่งใหญ่ของการสร้างโปรแกรมที่พิมพ์ "Just another Perl hacker" เรามีคำถามเกี่ยวกับJAPHในไซต์นี้แล้ว แต่พวกเขาดูเหมือนจะกังวลเกี่ยวกับการซ่อนข้อความมากขึ้น แต่ JAPH มักจะเพิ่มเติมเกี่ยวกับการซ่อนวิธีการที่ทำในสิ่งที่ทำ ดังนั้นฉันขอท้าให้คุณอวดคุณสมบัติเจ๋ง ๆ ของภาษาที่คุณชื่นชอบและไม่ต้องกังวลกับการซ่อนข้อความมากเกินไป (เว้นแต่คุณต้องการ) นี่คือของฉันใน Perl ซึ่งไม่ควรยากสำหรับนักศาสนวิทยาที่มีประสบการณ์ที่จะเข้าใจ แต่อาจน่าสนใจสำหรับผู้อื่น (*STORE,*TIESCALAR)=map{eval"sub{$_}"}qw'map{print&&sleep$|}split//,pop bless\$|++';tie$t,main;$t="Just another Perl hacker,\n" ตัดสินโดยการโหวตจากพวกคุณลองดูความคิดที่น่ากลัว!

5
การแก้ไขพหุนาม
เขียนโปรแกรมที่ดำเนินการแก้ไขโพลิโนเมียล โดยใช้จำนวนตรรกยะที่เที่ยงตรงแม่นยำ อินพุตมีลักษณะดังนี้: f (1) = 2/3 f (2) = 4/5 f (3) = 6/7 ... คุณอาจสมมติว่ามีช่องว่างหนึ่งช่องก่อนและหลัง=เครื่องหมายตัวเลขทั้งหมดเป็นเศษส่วนหรือจำนวนเต็ม คุณอาจจะคิดว่าเศษส่วนทั้งหมดในอินพุตนั้นลดลงไม่ได้ ไม่จำเป็นต้องทำการตรวจสอบข้อผิดพลาดคุณอาจสมมติว่าอินพุตนั้นถูกต้องและไม่มี x เพิ่มเป็นสองเท่าใน f (x) เอาต์พุตควรอยู่ในรูปแบบที่เข้ากันได้กับ LaTeX รหัส LaTeX ที่ปล่อยออกมาควรให้การแสดงกราฟิกแบบเดียวกับเอาต์พุตที่ให้ไว้ที่นี่ f (x) = 123x ^ 2 + \ frac {45} {2} x + \ frac {7} {4} เศษส่วนจะต้องลดลงให้ได้มากที่สุดเช่น สิ่งที่ชอบ\frac{2}{4} ไม่ได้รับอนุญาต หากตัวเลขเป็นจำนวนเต็มอย่าใช้เศษส่วน กฎพิเศษ: …

8
ค้นหาเส้นทางสูงสุด
เมื่อกำหนดจำนวนสี่เหลี่ยมบวกจำนวนที่เป็นธรรมชาติเขียนโปรแกรมหาเส้นทางแนวนอนและแนวตั้งที่มีผลรวมของตัวเลขตามพวกเขาเป็นสูงสุด แนวเส้นทางไปจากคอลัมน์แรกที่ผ่านมาและมีการเพิ่มตำแหน่งของคอลัมน์โดยหนึ่งในแต่ละขั้นตอน แนวเส้นทางไปจากแถวแรกที่ผ่านมาและมีการเพิ่มตำแหน่งของแถวโดยหนึ่งในแต่ละขั้นตอน นอกจากนี้ตำแหน่งแถวในเส้นทางแนวนอนอาจยังคงเหมือนเดิมหรือเปลี่ยนแปลงทีละตำแหน่งในทิศทางใดทิศทางหนึ่งเช่นเดียวกันกับเส้นทางแนวตั้ง เพื่อแสดงให้เห็นต่อไปนี้อาจเป็นเส้นทางที่ถูกต้อง: เส้นทางต่อไปนี้จะไม่ถูกต้องเนื่องจากเป็นขั้นตอนย้อนหลัง (และยังคงอยู่ในแถวเดียวกันในบางแห่ง): เส้นทางต่อไปนี้จะไม่ถูกต้องเท่ากันเนื่องจากจะเปลี่ยนตำแหน่งแถวมากกว่าหนึ่งในขั้นตอนเดียว: หมายเหตุ: การแก้ปัญหาควรทำงานในระยะเวลาที่ยอมรับได้ อินพุต nเส้นของการป้อนข้อมูลด้วยnจำนวนเต็มบวกพื้นที่แยกแต่ละจะได้รับในการป้อนข้อมูลมาตรฐาน 2 ≤ n ≤ 40. ทุกบรรทัดถูกยกเลิกโดยตัวแบ่งบรรทัด ตัวเลขมีขนาดเล็กพอที่ผลรวมสูงสุดจะพอดีกับจำนวนเต็มแบบ 32 บิต เอาท์พุต จำนวนเงินสูงสุดของเส้นทางแนวนอนและแนวตั้ง (ตามลำดับนั้น) คั่นด้วยช่องว่างเดียว ตัวอย่างอินพุต 1 1 2 1 2 ตัวอย่างผลลัพธ์ 1 3 4 ตัวอย่างอินพุต 2 1 1 1 1 1 1 1 1 1 1 1 1 1 …
12 code-golf 

8
Quine Challenge I
ท้าทาย ในภารกิจนี้คุณต้องเขียนโปรแกรมที่จะป้อนจำนวนเต็ม N (-1e9 <= N <0 && 0 <N <= + 1e9)จากนั้นคำนวณT = (abs (N)% M + 1)ถ้า N เป็นค่าบวกจากนั้นส่งออกอักขระ T-th จากจุดเริ่มต้นและส่งออกอักขระ T-th จากส่วนท้ายของแหล่งที่มาของคุณ M คือขนาดของแหล่งที่มาของคุณเป็นไบต์ ตัวอย่าง:หากแหล่งที่มาของคุณคือ:abcd efg/hi การป้อนข้อมูล: 2 เอาท์พุท: c อินพุต : -3 เอาท์พุท: g อินพุต : -9249678 เอาท์พุท: b อินพุต : -11 เอาท์พุท: i ข้อ จำกัด …
12 code-golf  quine 

9
แยกแฟกทอเรียล
กอล์ฟนี้ต้องการการคำนวณแบบแฟคทอเรียลแยกเป็นหลายกลุ่มหรือหลายกระบวนการ บางภาษาทำให้การประสานงานนี้ง่ายกว่าภาษาอื่นดังนั้นจึงเป็นภาษาที่ไม่เชื่อเรื่องพระเจ้า มีการจัดเตรียมโค้ดตัวอย่างที่ไม่ได้รับการปรุงแต่ง แต่คุณควรพัฒนาอัลกอริทึมของคุณเอง เป้าหมายของการแข่งขันคือการดูว่าใครสามารถเกิดอัลกอริธึมมัลติคอร์แฟคทอเรียลที่สั้นที่สุด (เป็นไบต์ไม่กี่วินาที) สำหรับการคำนวณ N! วัดจากคะแนนโหวตเมื่อการประกวดปิด ควรมีข้อได้เปรียบแบบมัลติคอร์ดังนั้นเราจึงต้องการให้ใช้งานได้กับ N ~ 10,000 ผู้ลงคะแนนควรออกเสียงลงคะแนนหากผู้เขียนไม่สามารถให้คำอธิบายที่ถูกต้องเกี่ยวกับวิธีการเผยแพร่งานระหว่างโปรเซสเซอร์ / คอร์และลงคะแนนตามความกระชับของกอล์ฟ สำหรับความอยากรู้อยากเห็นกรุณาโพสต์ตัวเลขประสิทธิภาพบางอย่าง อาจมีคะแนนการปฏิบัติงานเทียบกับการแลกเปลี่ยนคะแนนของกอล์ฟในบางประเด็นไปกับการเล่นกอล์ฟตราบใดที่ตรงตามความต้องการ ฉันอยากรู้ว่าจะเกิดอะไรขึ้น คุณสามารถใช้ไลบรารีจำนวนเต็มแกนเดี่ยวขนาดใหญ่ที่มีอยู่ตามปกติ ตัวอย่างเช่น Perl มักจะติดตั้งด้วย bigint อย่างไรก็ตามโปรดทราบว่าเพียงแค่เรียกระบบที่มีฟังก์ชั่นแฟกทอเรียลจะไม่แยกงานออกเป็นหลายคอร์ คุณต้องยอมรับจาก STDIN หรือ ARGV อินพุต N และเอาต์พุตเพื่อ STDOUT ค่า N! คุณอาจเลือกใช้พารามิเตอร์อินพุตลำดับที่ 2 เพื่อระบุจำนวนตัวประมวลผล / แกนประมวลผลให้กับโปรแกรมดังนั้นจึงไม่ทำสิ่งที่คุณเห็นด้านล่าง :-) หรือคุณอาจออกแบบอย่างชัดเจนสำหรับ 2, 4 สิ่งที่คุณมีอยู่ ผมจะโพสต์ตัวอย่างลูกบอลในกอล์ฟ Perl ของตัวเองด้านล่างส่งมาก่อนหน้านี้ในกองมากเกินภายใต้ปัจจัยอัลกอริทึมในต่างภาษา มันไม่ใช่กอล์ฟ ตัวอย่างอื่น …
12 code-golf 

1
ทำลายตัวเลขที่หัก
ฉันได้ออกแบบตัวสร้างแบบสุ่มอย่างง่ายที่วนสองตัวเลขด้วยวิธีที่วุ่นวายโดยใช้วิธีการคูณและโมดูลัส มันใช้งานได้ดีสำหรับการที่ ถ้าฉันจะใช้มันเป็นเครื่องกำเนิดไฟฟ้ารหัส แต่มันจะมีความเสี่ยงต่อการโจมตีธรรมดาที่รู้จักเนื่องจากผู้โจมตีสามารถย้อนกลับวิศวกรเมล็ดจากชุดของตัวเลขสุ่มในลักษณะที่มีประสิทธิภาพในการคำนวณ หากต้องการพิสูจน์ตัวเลขที่เสียหายให้ค้นหาคู่ค่าทางกฎหมายที่สร้างค่า 7 ศูนย์ในหนึ่งแถวในช่วง [0; 255] โดยใช้พลังงานเพียงเล็กน้อยเวลา CPU ฯลฯ เท่าที่จะทำได้ นี่คือตัวสร้างแบบสุ่มที่เขียนใน JavaScript: function seed(state1,state2){ //Constants var mod1=4294967087 var mul1=65539 var mod2=4294965887 var mul2=65537 function random(limit){ //Cycle each state variable 1 step state1=(state1*mul1)%mod1 state2=(state2*mul2)%mod2 //Return a random variable return (state1+state2)%limit } //Return the random function return random } …

5
กดแยกจากกัน
http://en.wikipedia.org/wiki/Dissociated_press Dissociated Press เป็นอัลกอริทึมที่สร้างข้อความสุ่มจากข้อความที่มีอยู่ อัลกอริทึมเริ่มต้นด้วยการพิมพ์คำใด ๆ ที่ต่อเนื่องกัน (หรือตัวอักษร) ในข้อความ จากนั้นในทุกขั้นตอนมันจะค้นหาสิ่งที่เกิดขึ้นแบบสุ่มในข้อความต้นฉบับของคำสุดท้าย N (หรือตัวอักษร) ที่พิมพ์ไปแล้วจากนั้นพิมพ์คำหรือตัวอักษรถัดไป ติดตั้ง Dissociated Press ไม่ว่าจะเป็นฟังก์ชั่นหรือโปรแกรมทั้งหมด รหัสที่สั้นที่สุดชนะ อย่าใช้บรรทัดคำสั่งหรือสคริปต์ emacs เพื่อเรียกโปรแกรม Dissociated Press ต้นฉบับ อย่าใช้ไลบรารีภายนอก

13
ทำตัวเลข palindrome
เขียนฟังก์ชั่นที่ใช้ตัวเลขเป็นอาร์กิวเมนต์และทำให้เป็น palindrome โดยต่อท้ายจำนวนหลักขั้นต่ำ จำนวนจะต้องไม่เกิน 100 หลัก Sample Inputs 12 122 232 2323 1012121 Sample Outputs 121 1221 232 23232 101212101

3
เขียนตัวตรวจสอบ JSON
จงเขียนโปรแกรมที่กำหนดว่าการป้อนข้อมูลของมันคือการที่ถูกต้องJSON อินพุต:ข้อความ ASCII:[\x00-\x7F]* หมายเหตุ: หาก ASCII มีปัญหาคุณสามารถใช้การเข้ารหัสอื่นได้ แต่ระบุไว้ในโพสต์ของคุณ ขาออก หรือValid Invalidอาจขึ้นบรรทัดใหม่ที่ส่วนท้าย ตัวอย่าง: $ echo '{"key": "value"}' | ./json-validate Valid $ echo '{key: "value"}' | ./json-validate Invalid กฎ: อย่าใช้ไลบรารีการแยกวิเคราะห์ JSON อนุญาตโซลูชันที่ถูกต้องเพียงบางส่วน แต่ยังขมวดคิ้วอยู่ โพสต์คะแนนชุดทดสอบของคุณ (ดูด้านล่าง) ที่สั้นที่สุดที่ถูกต้องชนะการแก้ปัญหา โปรดเรียกใช้json-validate-test-suite.shในโปรแกรมของคุณและโพสต์คะแนนของคุณ ตัวอย่าง: $ ./json-validate-test-suite.sh ./buggy-prog fail: should be invalid: [ 0.1e ] fail: should be invalid: …
12 code-golf 

7
คุณได้รับหิมะมากแค่ไหน?
ฉันขอโทษสำหรับ wordiness เราสนุกกับมันในที่ทำงานที่สนามกอล์ฟภายในของเรา แต่มันต้องการอีเมลสองสามฉบับเพื่อขอความกระจ่างดังนั้นฉันหวังว่าฉันจะบันทึกส่วนใหญ่เป็นครั้งแรก ปัญหา รับสแนปชอตของหิมะ“ จำลอง” (เป็นสตริง, stdin หรือพารามิเตอร์ในฟังก์ชัน / วิธีการของคุณ) รายงานค่า 4 ค่า: ความลึกต่ำสุดความลึกสูงสุดความลึกเฉลี่ยและระยะเวลา นี่คือตัวอย่างที่จัดรูปแบบเพื่อแสดงอินพุต: * * ** ** * *** ** * * * -------- '*' เป็นเกล็ดหิมะและ '-' คือพื้น ลองนึกภาพ "เกล็ดหิมะ" ทั้งหมดที่ตกลงสู่พื้นดิน นี่คือ“ ภาพรวม” สุดท้าย: * * ** * ** ******** -------- คุณต้องรายงานเกี่ยวกับ: ความลึกต่ำสุด - นับ“ กอง” …
12 code-golf 

14
เสร็จสิ้นแผนที่สมมาตร
คุณได้รับหนึ่งในสี่ของแผนที่ที่มีความสมมาตรเหนือแกน x และ y เป็นอินพุต โปรแกรมควรพิมพ์แผนที่ที่สมบูรณ์ แผนที่สามารถมีอักขระต่อไปนี้: -+/\|.และควรจะเปิดตามที่คาดไว้ ข้อมูลในนั้นเป็นรูปสี่เหลี่ยมผืนผ้าและเล็กเสมอ ตัวอย่าง $ cat in +--- |./. |/.. $ ./solution < in +------+ |./..\.| |/....\| |\..../| |.\../.| +------+ รหัสที่สั้นที่สุดชนะ
12 code-golf  string 

14
พิมพ์ NxN หมุนวนของตัวเลขจากน้อยไปมาก [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัพเดตคำถามเพื่อให้เป็นไปตามหัวข้อสำหรับ Code Golf Stack Exchange ปิดให้บริการใน2 ปีที่ผ่านมา ควรพิมพ์ตัวเลขด้วยเลขศูนย์นำหน้าในฟิลด์ที่มีความยาว = (จำนวนหลัก N ^ 2) อินพุต (N): 4 เอาท์พุท: 01 12 11 10 02 13 16 09 03 14 15 08 04 05 06 07 ฉันสนใจในอัลกอริทึมและความสะอาดของการใช้งาน ดังนั้นพื้นที่สีขาวจะไม่นับและขีด จำกัด บนของ N คือ 42

1
เส้นทางที่สั้นที่สุดในกราฟ
เขียนโปรแกรมเพื่อใช้กราฟ (จากอินพุตมาตรฐานหรือไฟล์ที่คุณเลือก) และหาเส้นทางที่สั้นที่สุดในกราฟ กราฟถูกระบุโดยใช้รูปแบบต่อไปนี้: A---S F--T | / \ | | / 5 0 |/ \| D----3--E A-Z: nodes in the graph -|/\: edges in the graph 0-9: weights on the edges <space>: all the holes ขอบทั้งหมดไม่ได้ถูกบอกทิศทางและอยู่ในแนวเดียวกับ 8 ทิศทางสำคัญ (เช่นไม่มีการโค้ง) ขอบอาจเป็นทางเลือกที่มีน้ำหนักตั้งแต่ 0 ถึง 9 น้ำหนักจะไม่อยู่ในสัญลักษณ์สุดท้ายที่เชื่อมต่อขอบกับโหนด (เช่นขอบต้องมีอย่างน้อย 3 สัญลักษณ์เพื่อมีน้ำหนัก) ขอบที่ไม่ถ่วงมีน้ำหนักเริ่มต้นเท่ากับ 1 …

6
กำลังคำนวณพื้นที่
โค้ดที่เล็กที่สุดที่ให้พื้นที่ระหว่างเส้นโค้ง p (x) = a 0 + a 1 * x + a 2 * x 2 + ... , บรรทัด y = 0, บรรทัด x = 0 และบรรทัด x = C (เช่นบางสิ่งเช่นนี้: ) คุณสามารถสันนิษฐานได้ว่า p (x)> = 0 สำหรับ x <C (คะแนนโบนัสหากรหัสของคุณใช้กับค่าลบของ p (x)) อินพุต C, a, 0 , …
12 code-golf 

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