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

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

4
บำบัดกลุ่ม: ระบุกลุ่ม
เขียนโปรแกรมที่กำหนดว่าตารางการคูณของแมกมาไฟต์ที่กำหนดนั้นแสดงถึงกลุ่มหรือไม่ magma เป็นชุดที่มีการดำเนินการแบบไบนารีที่ปิดนั่นหมายความว่า สำหรับทั้งหมด a, b ใน G, a * b กลับเป็น g (ปิด) อีกครั้ง ให้ (G, *) เป็นแมกมา (G, *) เป็นกลุ่มถ้า สำหรับ a, b, c ใน G, (a * b) * c = a * (b * c) (ความเกี่ยวข้อง) มีองค์ประกอบ e ใน G เช่นนั้น e * a = a …

16
สร้าง MathJax สำหรับอัตราส่วนทองคำอย่างต่อเนื่อง
ในความคาดหมายของMathJax ที่ถูกปิดใช้งานชั่วคราว MathJax ที่แสดงผลในคำถามนี้จะถูกแทนที่ด้วยรูปภาพ คุณยังคงยินดีที่จะโพสต์ตอบ แต่คุณจะต้องไปดูการแสดงผล MathJax บนเว็บไซต์อื่น PPCG เพิ่งได้ MathJax ! ซึ่งหมายความว่าตอนนี้เราสามารถรวมสูตรทางคณิตศาสตร์ที่มีรูปแบบที่ดีไว้ในโพสต์ได้อย่างง่ายดาย ( บทช่วยสอน MathJax ที่มีประโยชน์ ) ตัวอย่างเช่นนี่คืออัตราส่วนทองคำที่แสดงเป็นเศษส่วนต่อเนื่องที่ไม่มีที่สิ้นสุด: รหัส MathJax สำหรับสมการนี้คือ $$\varphi=1+\cfrac1{1+\cfrac1{1+\cfrac1{1+\cfrac1{1+\ddots}}}}$$ คุณสามารถค้นหาโดยคลิกขวาสูตรและต่อไปนี้แสดงคณิตศาสตร์ในฐานะ → เท็กซ์คำสั่ง หมายความว่ามันจะปรากฏบนตัวของมันเองอยู่ในใจกลางของหน้าแทนแบบอินไลน์ ใช้ซิงเกิ้ลสำหรับอินไลน์$$$ ท้าทาย เขียนโปรแกรมที่ใช้จำนวนเต็มไม่ใช่ลบ n และเอาท์พุทรหัส MathJax สำหรับ "ขั้นตอน" หลายส่วนของเศษส่วนต่อเนื่องสำหรับอัตราส่วนทองคำ เพื่อให้สิ่งที่มาตรฐานในคำตอบที่คุณต้องใช้นี้แน่นอนไวยากรณ์ MathJax: สำหรับ n = 0, $$\varphi=1+\dots$$เอาท์พุทจะต้องเป็น ซึ่งแสดงผลเป็น: สำหรับ n = 1, $$\varphi=1+\cfrac1{1+\ddots}$$เอาท์พุทจะต้องเป็น ซึ่งแสดงผลเป็น: …

30
พิมพ์ตัวอักษรตัวแรกของคำตอบก่อนหน้า
ผู้ชนะได้รับการยอมรับเป็น isaacg กับเขาคำตอบ ASCII 7 บิต อย่างไรก็ตามความท้าทายยังไม่จบ - รางวัลนี้มอบให้กับคำตอบที่สั้นที่สุด ถ้าอย่างใดคุณจะได้รับอักขระแรกของคำตอบอื่น ๆ ทั้งหมดลงไป 10 ไบต์คุณจะได้รับรางวัล ซึ่งรวมถึงตัวละครทั้งหมดจากคำตอบ GolfScript ของ Round 2 (รวมถึงคำตอบที่เพิ่มเข้ามาด้วย) นี่เป็นครั้งเดียวที่ฉันจะให้คุณออกคำสั่ง - หากคุณมีการคัดค้านใด ๆ นี้แจ้งให้เราทราบในความคิดเห็น ฉันต้องการให้เครดิตกับ randomra ซึ่งช่วยฉันด้วยความคิดเก่าของฉันและมอบสิ่งใหม่ให้ฉัน ผู้ชนะก่อนหน้า รอบที่ 1: isaacg กับ ASCII 7 บิต Next bytes: 30 (or 10 if you want that sweet, sweet rep) คุณรู้ไหมว่าการตีกอล์ฟเป็นสิ่งที่ยอดเยี่ยมจริงๆ ผู้คนท้าทายและช้าลงเรื่อย …

7
พาร์ติชันคำศัพท์ที่เรียงของตัวเลข
ความท้าทายนั้นง่ายมาก: เมื่อได้ตัวเลขคุณจะแบ่งตัวเลขออกเป็นอาเรย์ของตัวเลขที่เล็กลงซึ่งตัวเลขที่ได้จะไม่ลดลง การจับคือคุณต้องแยกมันให้ยาวที่สุด สับสน? คุณจะได้รับจำนวนเต็มบวกผ่าน STDIN (หรือทางเลือกที่ใกล้เคียงที่สุด) อาร์กิวเมนต์บรรทัดคำสั่งหรืออาร์กิวเมนต์ฟังก์ชันในรูปแบบอินพุตที่สะดวกและชัดเจน คุณต้องแบ่งตัวเลขทศนิยมให้เป็นกลุ่มที่ต่อเนื่องกัน อาร์เรย์ของตัวเลขที่แสดงโดยกลุ่มหลักเหล่านี้ควรเรียงลำดับ (ตามลำดับปกติไม่ลด) โดยไม่ต้องจัดเรียงกลุ่มใหม่ ในกรณีที่มีพาร์ติชั่นดังกล่าวมากกว่าหนึ่งตัวคุณต้องแบ่งพาร์ติชันอินพุตให้เป็นตัวเลขให้ได้มากที่สุด ในกรณีของความสัมพันธ์ให้ส่งคืนผลลัพธ์หนึ่งรายการ คุณสามารถส่งออกอาร์เรย์เพื่อ STDOUT (หรือทางเลือกที่ใกล้เคียงที่สุด) หรือเป็นค่าตอบแทนการทำงาน ในกรณีของ STDOUT (หรือทางเลือกที่ใกล้เคียงที่สุด) อาร์เรย์ควรพิมพ์ในรูปแบบรายการที่สะดวกและไม่คลุมเครือ ตัวเลขที่แยกไม่ควรมีเลขศูนย์นำหน้า ดังนั้นสำหรับตัวอย่างเช่น1002003ไม่สามารถพิมพ์ออกมาเป็นอย่างใดอย่างหนึ่ง[1, 002, 003]หรือและคำตอบที่ถูกต้องเพียงเพราะมันเป็น[1, 2, 3][100, 2003] กรณีทดสอบ: 123456 -> [1, 2, 3, 4, 5, 6] 345823 -> [3, 4, 5, 8, 23] 12345678901234567890 -> [1, 2, 3, …

2
ช่วยให้หุ่นยนต์ของเราไปถึงเครื่องเคลื่อนย้ายมวลสาร
UPDATE: เพิ่มเฟรมเวิร์ก Python เพื่อเริ่มต้น สถานีอวกาศถูกแซงโดยบ็อตคั้น คุณต้องนำบอทเทคราคาแพงและเปราะบางของเราจำนวนมากที่เรียกว่า "กระต่าย" ไปยังเทเลพอร์เตอร์ทางออกก่อนที่สถานีจะทำลายตัวเอง แต่บอทบ็อตกำลังลาดตระเว ณ ทางเดิน โปรแกรมของคุณจะได้รับแผนที่ ASCII และทุกเทิร์นจะได้รับการบอกตำแหน่งของ crusher-bots และกระต่ายปัจจุบันของคุณ โปรแกรมของคุณควรย้ายกระต่ายของคุณไปที่เครื่องเคลื่อนย้ายมวลสารทางออกในขณะที่หลีกเลี่ยงการบดขยี้บ็อต การกระทำ เรียกใช้คอนโทรลเลอร์ Python 2 ด้วย: python controller.py <mapfile> <turns> <seed> <runs> <prog>... <prog> can be <interpreter> <yourprog> or similar. seed เป็นจำนวนเต็มขนาดเล็กที่ใช้สำหรับเครื่องบดและโปรแกรม PRNG ของคุณเพื่อให้สามารถทำงานซ้ำได้ โปรแกรมของคุณควรทำงานอย่างสม่ำเสมอโดยไม่คำนึงถึงเมล็ดที่ใช้จริง หากเมล็ดเป็นศูนย์ตัวควบคุมจะใช้เมล็ดพันธุ์แบบสุ่มสำหรับการวิ่งแต่ละครั้ง ตัวควบคุมจะเรียกใช้โปรแกรมของคุณด้วยชื่อของไฟล์ข้อความแผนที่และ seed เป็นอาร์กิวเมนต์ เช่น: perl wandomwabbits.pl large.map 322 …

6
ติดตามเฉดสีของรูปภาพ
โหลดภาพในตัวอย่างสแต็กนี้แล้วเลื่อนเมาส์ไปวางเหนือภาพ เส้นโค้งสีดำที่ตามมุมสีเริ่มต้นที่จุดเคอร์เซอร์ของคุณจะถูกวาด: <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script><style>canvas{border:1px solid black;}</style>Load an image: <input type='file' onchange='load(this)'><br><br>Max length <input id='length' type='text' value='300'><br><br><div id='coords'></div><br><canvas id='c' width='100' height='100'>Your browser doesn't support the HTML5 canvas tag.</canvas><script>function load(t){if(t.files&&t.files[0]){var e=new FileReader;e.onload=setupImage,e.readAsDataURL(t.files[0])}}function setupImage(t){function e(t){t.attr("width",img.width),t.attr("height",img.height);var e=t[0].getContext("2d");return e.drawImage(img,0,0),e}img=$("<img>").attr("src",t.target.result)[0],ctx=e($("#c")),ctxRead=e($("<canvas>"))}function findPos(t){var e=0,a=0;if(t.offsetParent){do e+=t.offsetLeft,a+=t.offsetTop;while(t=t.offsetParent);return{x:e,y:a}}return void 0}$("#c").mousemove(function(t){function e(t,e){var a=ctxRead.getImageData(t,e,1,1).data,i=a[0]/255,r=a[1]/255,o=a[2]/255;return Math.atan2(Math.sqrt(3)*(r-o),2*i-r-o)}if("undefined"!=typeof img){var a=findPos(this),i=t.pageX-a.x,r=t.pageY-a.y;$("#coords").html("x = "+i.toString()+", y = "+r.toString());var o=parseInt($("#length").val());if(isNaN(o))return …

9
ประเมินห่วงโซ่ของความไม่เท่าเทียมกัน
เขียนโค้ดเพื่อประเมินว่าสายโซ่ของความไม่เท่าเทียมกันเป็นจริงหรือเท็จ ตัวอย่างอินพุตคือสตริง 3<=4!=9>3==3 สิ่งนี้เป็นจริงเพราะองค์ประกอบแต่ละอย่างเป็นจริง: (3<=4) and (4!=9) and (9>3) and (3==3) การป้อนข้อมูล: สตริงที่แสดงถึงสายโซ่ของความไม่เท่าเทียมกันอย่างน้อยหนึ่งรายการ ตัวดำเนินการเปรียบเทียบที่อนุญาตคือ == equals != does not equal > is greater than >= is greater than or equal to < is less than <= is less than or equal to ตัวเลขที่ได้รับอนุญาตเป็นตัวเลขหลักเดียวผ่าน0 9ไม่มีช่องว่างวงเล็บหรือสัญลักษณ์อื่น ๆ เอาท์พุท: ความถูกต้องของความไม่เท่าเทียมกันในฐานะที่สอดคล้องTruthy หรือ Falseyค่า ที่สอดคล้องกันหมายถึงทุกเอาท์พุท …
17 code-golf 

2
การขาดแคลนอาหารใน Snakepit
การขาดแคลนอาหารใน Snakepit เป็นครั้งแรกในรอบ 35 ปีที่ snakepit หมดอาหาร งูที่อาศัยอยู่ในขณะนี้จะต้องต่อสู้กันเพื่อให้สามารถอยู่รอดการขาดแคลนอาหารนี้ มีงูหนึ่งตัวเท่านั้นที่สามารถยืนอยู่บนห่วงโซ่อาหาร ลีดเดอร์บอร์ด ไม่ได้อยู่ที่นี่! อัปเดตล่าสุดเมื่อวันที่ 24 กุมภาพันธ์ ลิงก์ไปยังการสร้างภาพข้อมูลของการแข่งขันครั้งสุดท้าย ลักษณะ หากคุณต้องการต่อสู้เพื่อแอปเปิ้ล / เชอร์รี่ / สิ่งที่เหลืออยู่สุดท้ายคุณต้องเตรียมงูในรูปแบบของโปรแกรมที่รับอินพุตที่กำหนดและส่งกลับการเคลื่อนที่ครั้งต่อไป สิ่งเดียวที่ทำให้คุณไม่ได้อยู่คนเดียวในหลุม งูอีกตัวจะพยายามหาอาหารที่หายากด้วย! แต่มันมืดอยู่ข้างใน Snakepit ดังนั้นคุณจะเห็นได้แค่ตัวคุณและแอปเปิ้ลเท่านั้น การปะทะกับคู่ต่อสู้ของคุณจะส่งผลให้คุณเสียชีวิตเช่นกัดตัวเองหรือกระแทกกำแพง นอกจากนี้เนื่องจากแอปเปิ้ลเป็นของหายากในวันนี้คุณต้องอดอาหารถ้าคู่ต่อสู้ของคุณกินพอถึงความยาว 7 Snakepit เป็นแผนที่สองมิติที่มีความกว้างและความสูง 15 ในขณะที่กระเบื้องชั้นนอกสุดสร้างกำแพงที่ไม่สามารถใช้ได้: 0 1 2 . . . c d e 0 # # # # # # # …

3
คำในคำในคำที่อยู่ในคำ . .
ในฟอนต์ตัวหนังสือตัวอักษรตัวอักษรตัวพิมพ์ใหญ่ตัวอักษรทั้งหมดมีความกว้าง 5 หน่วยและสูง 5 ███ ████ ███ ████ █████ █████ ████ █ █ █████ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ ██ ██ █████ ████ █ █ █ ████ ████ █ ██ █████ …

8
การสร้างคำศัพท์ยาว ๆ
ความท้าทายนี้คือการค้นหาคำที่ยาวที่สุดของคำภาษาอังกฤษซึ่งอักขระ 3 ตัวแรกของคำถัดไปตรงกับอักขระ 3 ตัวสุดท้ายของคำสุดท้าย คุณจะใช้พจนานุกรมทั่วไปที่มีอยู่ในลีนุกซ์รุ่นลีนุกซ์ซึ่งสามารถดาวน์โหลดได้ที่นี่: https://www.dropbox.com/s/8tyzf94ps37tzp7/words?dl=0 ซึ่งมีคำภาษาอังกฤษ 99171 หากโลคัล Linux ของคุณ/usr/share/dict/wordsเป็นไฟล์เดียวกัน (มี md5sum == cbbcded3dc3b61ad50c4e36f79c37084) คุณสามารถใช้มันได้ คำสามารถใช้ได้เพียงครั้งเดียวในคำตอบ แก้ไข:ตัวอักษรต้องตรงกันทุกประการรวมถึงตัวพิมพ์ใหญ่ / ตัวพิมพ์เล็กและเครื่องหมายเน้นเสียง ตัวอย่างของคำตอบที่ถูกต้องคือ: idea deadpan panoramic micra craftsman mantra traffic fiche ซึ่งจะได้คะแนน 8 คำตอบที่มีคำที่ถูกต้องที่สุดจะเป็นผู้ชนะ ในกรณีที่เสมอกันคำตอบที่เร็วที่สุดจะเป็นฝ่ายชนะ คำตอบของคุณควรแสดงรายการคำที่คุณพบและ (แน่นอน) โปรแกรมที่คุณเขียนให้ทำ

3
เลือกรหัสภาษาของคุณเอง
ลองใช้กริดที่มีอักขระ ASCII ขนาด 16x16 ที่พิมพ์ได้ (รหัสคะแนน 0x20 ถึง 0x7E) มีเส้นทาง 30-select-15 จากด้านบนซ้ายไปที่มุมขวาล่างทำให้มีการเคลื่อนที่แบบมุมฉากเท่านั้นดังตัวอย่างต่อไปนี้: ##.............. .#.............. .######......... ......##........ .......##....... ........#....... ........#....... ........#....... ........###..... ..........###... ............#... ............#### ...............# ...............# ...............# แต่ละเส้นทางดังกล่าวประกอบด้วยอักขระ 31 ตัว โปรดทราบว่าตัวละครเหล่านั้นแต่ละตัวมีความแตกต่างกันในการต่อต้านแนวทแยงมุมทั้ง 31: 0123456789ABCDEF 123456789ABCDEFG 23456789ABCDEFGH 3456789ABCDEFGHI 456789ABCDEFGHIJ 56789ABCDEFGHIJK 6789ABCDEFGHIJKL 789ABCDEFGHIJKLM 89ABCDEFGHIJKLMN 9ABCDEFGHIJKLMNO ABCDEFGHIJKLMNOP BCDEFGHIJKLMNOPQ CDEFGHIJKLMNOPQR DEFGHIJKLMNOPQRS EFGHIJKLMNOPQRST FGHIJKLMNOPQRSTU นี่ไม่ใช่ตารางตัวอย่าง นี่คือการสร้างภาพของการต่อต้านแนวทแยงมุมทั้ง …

6
Bytecode ล่ามขนาดเล็กที่สุด / VM
กระดานผู้นำ - รวบรวม JIT (ด้านล่างดีกว่า) es1024 - 81.2 คะแนน (รวมถึงคอมไพเลอร์ที่ใช้งานได้!) Kieth Randall - 116 คะแนน Ell - 121 คะแนน กระดานผู้นำ - ตีความ (ด้านล่างดีกว่า) Martin Büttner - 706654 คะแนน (ประมาณ 2 ชั่วโมง) criptych - 30379 คะแนน (97 วินาที) ภารกิจของคุณคุณควรเลือกที่จะยอมรับมันคือการเขียน bytecode interpreter / VM ที่เล็กที่สุดที่เป็นไปได้ VM / interpreter ใช้สถาปัตยกรรม CISC ขนาดเล็ก (การดำเนินการอาจแตกต่างกันในขนาด) …

8
สัมพัทธ์กับแอบโซลูท
หากมีคนหันหน้าไปทางทิศเหนือ ณ จุด A ในตารางนี้ต้องการให้เส้นทางเดินไปตามเส้นทางสีเขียว (เพราะพวกเขาสามารถติดตามเส้นกริดได้เท่านั้น) ไปยังจุด B คุณอาจบอกได้ว่า: North, North, West, East, East, South, East, Eastไป หรือเทียบเท่า Forward, Forward, Left, Back, Forward, Right, Left, Forwardไป (ในกรณีที่คำสั่งของขวา , ซ้ายหรือกลับไปโดยปริยายหมายถึงการหันไปในทิศทางที่แล้วก้าวไปข้างหน้า.) เขียนฟังก์ชันด้วยอาร์กิวเมนต์หนึ่งตัวที่แปลระหว่างเส้นทางสัมบูรณ์และเส้นทางสัมพัทธ์เหล่านี้ไปตามเส้นทางเดียวกันไม่ใช่แค่ไปยังจุดเดียวกัน สมมติว่าผู้กำกับเริ่มหันหน้าไปทางทิศเหนือเสมอ หากอาร์กิวเมนต์เป็นสตริงของตัวอักษรNSEWให้ส่งคืนทิศทางสัมพัทธ์เทียบเท่า เช่นส่งกลับสตริงf("NNWEESEE")FFLBFRLF หากอาร์กิวเมนต์เป็นสตริงของตัวอักษรFBLRให้ส่งคืนทิศทางแบบสัมบูรณ์ที่เทียบเท่ากัน เช่นส่งกลับสตริงf("FFLBFRLF")NNWEESEE สตริงว่างให้ผลผลิตตัวเอง สมมติว่าไม่มีกรณีอินพุตอื่น หากภาษาของคุณไม่มีฟังก์ชั่นหรือสตริงใช้สิ่งที่ดูเหมือนเหมาะสมที่สุด รหัสที่สั้นที่สุดในหน่วยไบต์ชนะ
17 code-golf 

20
สร้างจำนวนเต็มแบบสุ่มใด ๆ
โปรแกรม / ฟังก์ชั่นของคุณควร เอาท์พุทว่าหนึ่งจำนวนเต็ม เอาต์พุตจำนวนเต็มใด ๆ ที่มีความน่าจะเป็นบวก เอาท์พุทจำนวนเต็มมากกว่า 1.000.000 หรือน้อยกว่า -1.000.000 อย่างน้อยกับความน่าจะเป็น 50% ตัวอย่างผลลัพธ์ (ต้องเป็นไปได้ทั้งหมด): 59875669123 12 -42 -4640055890 0 2014 12 24 -7190464664658648640055894646646586486400558904644646646586486400558904646649001 ชี้แจง: อนุญาตให้ใช้ตัวแบ่งบรรทัดต่อท้าย ไม่อนุญาตศูนย์นำหน้า -0 ได้รับอนุญาต รหัสที่สั้นที่สุดชนะ

4
ตั้งโปรแกรม AI 2048 โดยใช้ Framework ที่มีอยู่
แก้ไข: เมื่อเร็ว ๆ นี้คำถามของฉันได้รับการเสนอให้เป็นซ้ำของ2048 Bot ท้าทาย ฉันต้องการเน้นว่าคำถามนี้แตกต่างจากคำถามนั้นและจะต้องการคำตอบที่จะคิดต่างจากคำถามนั้น 2048 Bot Challenge ขอให้ผู้ใช้สร้างบอทและมันจะทำงานเป็นเวลาหนึ่งชั่วโมงโดยมีคะแนนสูงสุดเป็นคะแนนของผู้ใช้ นอกจากนี้มีขีด จำกัด ที่ 555 ไบต์ ความท้าทายของฉันใช้งานรหัสน้อยกว่ามากเพียง 3 ครั้งเท่านั้น คะแนนของคุณถูกคำนวณโดยใช้คะแนนเฉลี่ยของสามครั้งและหารด้วยความยาวอักขระของรหัสไม้ตีกอล์ฟของคุณ คำถามของฉันสนับสนุนให้รายการนั้น "ฉลาดกว่า" และอย่าพยายามและได้คะแนนสูงสุดด้วยกำลังดุร้าย - แก้ไข: วิธีการรับถูกเปลี่ยนเป็น getTile เพื่อหลีกเลี่ยงความขัดแย้งกับคำหลัก JS นอกจากนี้ส่วนคะแนนสูงถูกเพิ่มเข้ามา เมื่อเร็ว ๆ นี้ฉันสร้างเว็บไซต์ที่อนุญาตให้เกมยอดนิยม 2048 สามารถควบคุมได้โดยใช้ JavaScript ไซต์ของฉันเชื่อมโยงที่นี่: http://thatcoolidea.com/2048 วิธี: Ace Editor อยู่เหนือบอร์ด คุณวางรหัสไว้ในนั้นซึ่งจะทำงานหนึ่งครั้งทุก ๆ 250 มิลลิวินาทีหรือ 4 ครั้งต่อวินาที สิ่งนี้เรียกว่าวัฏจักร ใช้วิธีการต่อไปนี้เพื่อควบคุมบอร์ด …

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