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

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

27
หยุดยืนอยู่ตรงที่คุณอยู่!
ท้าทาย เขียนฟังก์ชั่นซึ่งจะใช้เวลาหนึ่งพารามิเตอร์: tจำนวนเต็ม ฟังก์ชั่นของคุณจะต้องหยุดโปรแกรมของคุณเป็นtเวลาไม่กี่วินาทีก่อนดำเนินการต่อคล้ายกับtime.sleep(t)ใน Python และWAIT tใน BBC BASIC คุณต้องไม่ใช้ฟังก์ชั่นการรอในตัวหรือฟังก์ชั่นในตัวใด ๆ สำหรับการเรียกใช้โค้ดหลังจากระยะเวลาหนึ่งและโปรแกรมของคุณจะต้องทำงานต่อหลังจากtวินาที สำหรับการทดสอบฟังก์ชั่นของคุณนั้นมีความคลาดเคลื่อนที่ยอมรับได้น้อยกว่า 0.1 วินาทีtในเครื่องของคุณ: ความแตกต่างระหว่างคอมพิวเตอร์นั้นดี ถ้าคำตอบของคุณจะถูกท้าทายโดยทุกคนที่คุณจะต้องให้การถ่ายภาพ (screenshotted) พิสูจน์ให้เห็นว่าการทำงานของคุณทำงานอย่างถูกต้องสำหรับt=1, และt=5 t=25คุณอาจให้รายละเอียดของคอมพิวเตอร์ของคุณเพื่อให้ผู้อื่นสามารถลองทำซ้ำบนเครื่องของตนเอง โปรแกรมของคุณควรและจะทำงานบนคอมพิวเตอร์ที่มีความเร็วสัญญาณนาฬิกา 1.6 GHz หรือสูงกว่า การชนะ โปรแกรมที่สั้นที่สุดชนะ เงินรางวัล เงินรางวัลจะออกไปที่โปรแกรมที่สั้นที่สุดซึ่งหยุดโปรแกรมโดยไม่ต้องใช้การตรวจสอบลูปว่าเวลาผ่านไปนานเท่าใด หากคุณกำลังวิ่งเพื่อรับรางวัลนี้เพิ่มเชิงอรรถที่บอกว่าคำตอบของคุณคือการให้รางวัล ลีดเดอร์บอร์ด /* Configuration */ var QUESTION_ID = 55293; // Obtain this from the url // It will be like http://XYZ.stackexchange.com/questions/QUESTION_ID/... …
35 code-golf  date 

8
คลาเรนซ์พิมพ์ช้า
บทนำ Clarence เป็นพนักงานป้อนข้อมูลที่ทำงานกับผู้ให้บริการอินเทอร์เน็ต หน้าที่ของเขาคือป้อนที่อยู่ IP ของลูกค้า ISP ทั้งหมดลงในฐานข้อมูลด้วยตนเอง เขาทำสิ่งนี้โดยใช้แป้นพิมพ์ที่มีเค้าโครงดังต่อไปนี้: 123 456 789 .0 ระยะห่างระหว่างจุดศูนย์กลางของปุ่มในแนวนอนหรือแนวตั้งคือหนึ่งเซนติเมตร ตัวอย่างเช่นระยะห่างระหว่างศูนย์กลางของ3และ9จะเป็นสองเซนติเมตร ระยะห่างระหว่างศูนย์กลางของ3และ5จะเป็น√2cm ทฤษฎีบทพีทาโกรัสนั้นเพียงพอที่จะคำนวณระยะห่างระหว่างปุ่มสองปุ่มใด ๆ Clarence ดังที่คุณคาดหวังจากผู้ที่ทำงานใน ISP ใช้ระบบการพิมพ์ที่ช้าและไม่มีประสิทธิภาพ เขาใช้นิ้วเดียวและค้นหากุญแจจากนั้นย้ายนิ้วของเขาไปที่คีย์จากนั้นกดมันและทำซ้ำตัวเลขทั้งหมดในตัวเลข คุณอาจรู้จักรูปแบบนี้ในฐานะ "ระบบค้นหานกอินทรี" เนื่องจากนิ้วค้นหาบนแป้นพิมพ์เพื่อหากุญแจที่ถูกต้องก่อนกดลงเพื่อกดปุ่มกดเช่นเดียวกับที่เหยี่ยวลงเพื่อฆ่า ตัวอย่างเช่นนี่คือวิธีที่คลาเรนซ์จะพิมพ์หมายเลข7851: เขาเริ่มนิ้วของเขาที่7และกดปุ่ม เขาเลื่อนนิ้วของเขาไปทางขวา 1 ซม. 8และกดปุ่ม เขาเลื่อนนิ้วของเขาขึ้นไป 1 ซม. 5และกดปุ่ม เขาเลื่อนนิ้วของเขาขึ้นตามแนวทแยงมุมขึ้นไปและทิ้งไว้√2ซม. 1แล้วกดปุ่ม ดังนั้นระยะทางทั้งหมดที่คลาเรนซ์ขยับนิ้วของเขาเพื่อพิมพ์7851นั้นอยู่1 + 1 + √2ที่ประมาณ 3.41 ซม. งานของคุณคือการเขียนโปรแกรมที่คำนวณระยะทางคลาเรนซ์จะต้องเลื่อนนิ้วของเขาเพื่อพิมพ์ในที่อยู่ IP โดยพลการ ป้อนคำอธิบาย อินพุตเป็นสตริงที่จะอยู่ในรูปแบบ …
35 code-golf 

4
เขาวงกตไม่มีที่สิ้นสุด
พื้นหลัง คุณเป็นเด็กฝึกหัดของพ่อมดทรงพลังและอาจารย์ของคุณกำลังพัฒนาคาถาสำหรับการสร้างเขาวงกตระหว่างมิติเพื่อดักจับศัตรูของเขาเขาต้องการให้คุณเขียนโปรแกรมคอมพิวเตอร์ที่ขับเคลื่อนด้วยไอน้ำเพื่อวิเคราะห์รูปแบบที่เป็นไปได้ การเขียนโปรแกรมเครื่องโหดร้ายนี้อันตรายมากดังนั้นคุณจะต้องทำให้รหัสสั้นที่สุดเท่าที่จะทำได้ อินพุต อินพุตของคุณคือตารางสองมิติของช่วงเวลา.และแฮช#แสดงถึงพื้นที่ว่างและกำแพงซึ่งกำหนดเป็นสตริงที่คั่นด้วยบรรทัดใหม่ จะมีอย่างน้อยหนึ่ง.และหนึ่ง#และคุณสามารถตัดสินใจได้ว่ามีการขึ้นบรรทัดใหม่หรือไม่ กริดนี้เป็นพิมพ์เขียวของเขาวงกตที่ไม่มีที่สิ้นสุดซึ่งสร้างขึ้นโดยการจัดตำแหน่งกริดจำนวนมากที่อยู่ติดกัน เขาวงกตแบ่งออกเป็นช่องว่างซึ่งเป็นส่วนประกอบที่เชื่อมต่อกับพื้นที่ว่าง (ช่องว่างที่อยู่ติดกันในแนวทแยงมุมไม่ได้เชื่อมต่อ) ตัวอย่างเช่นตาราง ##.#### ...##.. #..#..# ####..# ##...## ส่งผลให้เขาวงกตต่อไปนี้ (ต่อไปอย่างไม่มีที่สิ้นสุดในทุกทิศทาง): ##.######.######.#### ...##.....##.....##.. #..#..##..#..##..#..# ####..#####..#####..# ##...####...####...## ##.######.######.#### ...##.....##.....##.. #..#..##..#..##..#..# ####..#####..#####..# ##...####...####...## ##.######.######.#### ...##.....##.....##.. #..#..##..#..##..#..# ####..#####..#####..# ##...####...####...## เขาวงกตนี้โดยเฉพาะมีโพรงของพื้นที่ไม่มีที่สิ้นสุด ในทางตรงกันข้ามพิมพ์เขียวนี้ส่งผลให้เขาวงกตที่มีเพียงช่องว่างที่ จำกัด : ##.#### ##..### ####... ..####. #..#### เอาท์พุต ผลลัพธ์ของคุณจะเป็นค่าความจริงหากเขาวงกตมีช่องที่ไม่มีที่สิ้นสุดและค่าเท็จถ้าไม่ โปรดทราบว่าเขาวงกตอาจมีทั้งช่อง จำกัด และช่องว่างไม่ จำกัด ในกรณีนั้นผลลัพธ์จะเป็นจริง กฎระเบียบ คุณสามารถเขียนโปรแกรมเต็มรูปแบบหรือฟังก์ชั่น …

8
เคลือบทุกแพนเค้ก
คุณมีแพนเค้กกองซ้อนบนจานที่มีน้ำเชื่อมอยู่ด้านบนหนาจนไม่สามารถไหลลงด้านข้างได้ คุณจะไม่มีความสุขที่จะกินจนกว่าใบหน้าทั้งสองของแพนเค้กแต่ละชิ้นจะสัมผัสกับน้ำเชื่อมอย่างน้อยตอนนี้ แต่ตอนนี้มีแพนเค้กบนใบหน้าเดียวเท่านั้น คุณรู้ว่าน้ำเชื่อมไม่เคยซึมผ่านแพนเค้กแม้แต่เดียว แต่มันสามารถถ่ายโอนไปเรื่อย ๆ ผ่านการสัมผัสแบบเผชิญหน้าระหว่างสองแพนเค้ก เมื่อใบหน้าของแพนเค้กได้สัมผัสกับน้ำเชื่อมมันจะถูกเคลือบด้วยน้ำเชื่อมตลอดกาลและจะทำให้ใบหน้าที่ไม่ได้เคลือบด้วยน้ำเชื่อมสัมผัสกับน้ำเชื่อมที่เคลือบด้วย มันเป็นไปได้ที่จะถ่ายโอนน้ำเชื่อมไปและกลับจากด้านบนของจานเช่นกัน คุณดำเนินการที่จะขนทุกใบหน้าแพนเค้กกับน้ำเชื่อมโดยใส่ไม้พายด้านล่างหนึ่งหรือมากกว่าแพนเค้กและพลิกพวกเขาทั่วทุกมุมตรงตามที่จะทำในแพนเค้กเรียงลำดับ (น่าเสียดายที่ไม้พายชนิดนี้ทนต่อน้ำเชื่อมและไม่ได้ช่วยแจกจ่ายน้ำเชื่อมโดยการแตะใบหน้าแพนเค้ก) น่าเศร้าที่คุณสูญเสียการติดตามใบหน้าแพนเค้กที่สัมผัสกับน้ำเชื่อม แต่คุณจำได้ว่าคุณทำพลิกแล้ว เมื่อพิจารณาการพลิกที่ผ่านมาคุณสามารถระบุได้ว่าแพนเค้กของคุณเคลือบด้วยน้ำเชื่อมหรือยัง? ท้าทาย เขียนโปรแกรมที่ใช้จำนวนเต็มบวก N สำหรับจำนวนแพนเค้กและรายการจำนวนเต็มบวก (ทั้งหมด <= N) สำหรับการพลิกที่คุณทำมาจนถึงตอนนี้ แต่ละหมายเลขในรายการแสดงถึงจำนวนของแพนเค้กที่พลิก เอาท์พุทค่าความจริงถ้าแพนเค้กเสร็จแล้วจะถูกเคลือบและค่าเท็จถ้าไม่ ( คำจำกัดความความจริง / เท็จ ) อินพุตควรมาจาก stdin หรือบรรทัดคำสั่งและเอาต์พุตควรไปที่ stdout (หรือทางเลือกที่ใกล้เคียงที่สุด) ไม่เป็นไรถ้าอินพุตของคุณต้องการการจัดรูปแบบเพิ่มเติมเล็กน้อยเช่น[1, 1, 2, 2]แทน1 1 2 2รายการ ตัวอย่าง สมมติว่า N = 2 ดังนั้นเราจึงมีแพนเค้กสองกองบนจานเริ่มต้นด้วยน้ำเชื่อมด้านบน หากรายการ1 1 2 …
35 code-golf  stack 

9
ก่อวินาศกรรมมาตรฐานการเข้ารหัส [ปิด]
มีมาตรฐานการเข้ารหัสที่บังคับใช้กับ บริษัท ซอฟต์แวร์ต่าง ๆ ซึ่งมีเป้าหมายในการเพิ่มความน่าเชื่อถือของรหัสความสามารถในการพกพาและที่สำคัญที่สุดคือความสามารถในการอ่านรหัสที่เขียนร่วมกันโดยผู้พัฒนาซอฟต์แวร์ สองตัวอย่างที่โดดเด่นเป็นMISRA Cและ C ++ มาตรฐานการพัฒนาสำหรับโครงการ JSF เหล่านี้มักจะอยู่ในรูปแบบต่อไปนี้หลังจากระบุอย่างระมัดระวังคำว่า "ต้อง", "จะ", "ควร", "ควร", "อาจ" ฯลฯ หมายถึง: ตัวอย่าง: กฎข้อที่ 50: ตัวแปรจุดลอยตัวจะต้องไม่ถูกทดสอบเพื่อความเท่าเทียมหรือความไม่เท่าเทียมที่แน่นอน เหตุผล:เนื่องจากตัวเลขจุดลอยตัวอาจมีข้อผิดพลาดในการปัดเศษและการตัดปลายดังนั้นจึงอาจไม่สามารถสร้างความเท่าเทียมกันได้แม้จะเป็นไปตามที่คาดไว้ก็ตาม มาตรฐานการเข้ารหัสเหล่านี้ก่อให้เกิดข้อ จำกัด ซึ่งโดยทั่วไปจะเป็นรหัสซึ่งจะถูกกฎหมายจากมุมมองของคอมไพเลอร์ แต่เป็นอันตรายหรืออ่านไม่ได้ดังนั้นจึงถือว่าเป็นอันตราย ตอนนี้มาทำสิ่งนี้กันเถอะ! คุณได้รับการยอมรับในฐานะสมาชิกของคณะกรรมการมาตรฐานขนาดเล็กที่ บริษัท ของคุณซึ่งมีวัตถุประสงค์เพื่อออกแบบมาตรฐานการเข้ารหัสใหม่ที่นักพัฒนาทุกคนใน บริษัท จะต้องใช้ ไม่เป็นที่รู้จักกับคนอื่น ๆ คุณแอบอยู่ในการจ้างงานขององค์กรที่ชั่วร้ายและมีภารกิจในการก่อวินาศกรรม บริษัท คุณต้องเสนอหนึ่งรายการขึ้นไปกับมาตรฐานการเข้ารหัสซึ่งจะขัดขวางนักพัฒนาในภายหลัง อย่างไรก็ตามคุณจะต้องระมัดระวังที่จะไม่ทำให้เรื่องนี้ชัดเจนในทันทีมิฉะนั้นคุณเสี่ยงที่จะไม่ได้รับการยอมรับในมาตรฐาน กล่าวอีกนัยหนึ่งคุณจะต้องแนะนำกฎเกณฑ์ให้กับมาตรฐานการเข้ารหัสซึ่งมีลักษณะที่ถูกต้องตามกฎหมายและมีโอกาสที่ดีในการได้รับการยอมรับจากสมาชิกของคณะกรรมการอื่น ๆ หลังจากที่โครงการเริ่มต้นขึ้นและมีการลงทุนจำนวนชั่วโมงในรหัสคุณควรจะสามารถใช้กฎเหล่านี้ในทางที่ผิด (ตัวอย่างเช่นโดยเทคนิคหรือโดยมากการตีความตามตัวอักษร) เพื่อตั้งค่าสถานะรหัสอื่นที่มีคุณภาพดีและไม่เป็นไปตามมาตรฐาน ดังนั้นพวกเขาจึงต้องใช้ความพยายามอย่างมากในการออกแบบใหม่และกฎจะขัดขวางพวกเขาจากจุดนี้ แต่เมื่อกฎมีการใช้งานมาระยะหนึ่งแล้วโมเมนตัมบริสุทธิ์จะทำให้บทบาทเหล่านี้มีชีวิตอยู่และเนื่องจากมีความขัดแย้งที่สำคัญ ผลประโยชน์ระหว่างระดับการจัดการที่แตกต่างกันผู้จัดการคนอื่นอาจจะรักษากฎชีวิตไว้ (พวกเขาจะโง่เขลาที่จะยอมรับความผิดพลาดของพวกเขา!) ดังนั้นขัดขวาง …

29
วาดสายฟ้าสายฟ้า ASCII
บทนำ ส่วนหนึ่งได้รับแรงบันดาลใจจากคำถาม StackOverflowลองวาดสายฟ้าสายฟ้า ASCII เขียนโปรแกรมที่รับจำนวนเต็มบวกnผ่าน STDIN หรือบรรทัดคำสั่งแล้วส่งเอาต์พุตสายฟ้าแบบ ASCII ด้านล่าง อินพุต จำนวนเต็มบวกnแสดงจำนวนชั้นของฟ้าผ่าแบบซิกแซกที่จะวาด ตัวอย่างผลลัพธ์ n = 1 __ \ \ \ \ \ \ \/ n = 2 __ \ \ \ \ __\ \ \ __\ \ \ \ \ \/ n = 3 __ \ \ \ \ __\ \ …

30
สุ่มกอล์ฟประจำวัน # 1: สุ่มสลับแถว
เกี่ยวกับซีรี่ส์ ฉันจะใช้ชุดเล็ก ๆ ของความท้าทายรหัสกอล์ฟหมุนรอบรูปแบบของการสุ่ม โดยทั่วไปจะเป็นสนามกอล์ฟ9-Hole แต่กระจายออกไปหลายคำถาม คุณสามารถเข้าร่วมการท้าทายใด ๆ เป็นรายบุคคลราวกับว่ามันเป็นคำถามปกติ อย่างไรก็ตามฉันจะรักษากระดานผู้นำในทุกความท้าทาย ซีรีส์นี้จะมีการแข่งขันมากกว่า 9 รายการ (สำหรับตอนนี้) โดยจะมีการโพสต์หนึ่งรายการทุกสองวัน ผู้ใช้ทุกคนที่เข้าร่วมในการท้าทายทั้ง 9 รายการมีสิทธิ์ได้รับรางวัลทั้งชุด คะแนนโดยรวมของพวกเขาคือผลรวมของการส่งที่สั้นที่สุดของพวกเขาในแต่ละการท้าทาย (ดังนั้นหากคุณตอบคำถามที่ท้าทายสองครั้งจะมีเพียงการนับคำตอบที่ดีกว่าเท่านั้นต่อคะแนน) หากใครมีอันดับสูงสุดในกระดานผู้นำโดยรวมนี้เป็นเวลา28 วันฉันจะให้รางวัลแก่พวกเขาเป็นจำนวน500คน แม้ว่าฉันจะมีไอเดียมากมายสำหรับซีรีส์ แต่ความท้าทายในอนาคตยังไม่เกิดขึ้น หากคุณมีข้อเสนอแนะใด ๆ โปรดแจ้งให้เราทราบเกี่ยวกับการโพสต์ Sandbox ที่เกี่ยวข้อง หลุมที่ 1: สุ่มอาเรย์ งานแรกนั้นค่อนข้างง่าย: กำหนดอาเรย์ของจำนวนเต็มแบบไม่ว่างเปล่าสุ่มแบบสุ่ม มีกฎบางอย่างที่: การสับเปลี่ยนที่เป็นไปได้ทุกครั้งจะต้องส่งคืนด้วยความน่าจะเป็นแบบเดียวกัน (ดังนั้นการสับเปลี่ยนควรมีการแจกแจงแบบเดียวกัน) คุณสามารถตรวจสอบว่าอัลกอริทึมของคุณเป็นชุด / เป็นกลางโดยการใช้ใน JavaScript บนมันจะสลับซึ่งจะผลิตเมทริกซ์ของอคติที่ - ผลควรมีลักษณะเป็นเครื่องแบบเป็นของตัว ins Fisher-Yatesหรือเรียงลำดับ (ลำดับแบบสุ่ม) คุณต้องไม่ใช้วิธีการใด ๆ ในตัวหรือของบุคคลที่สามเพื่อสับเปลี่ยนอาร์เรย์หรือสร้างการเรียงสับเปลี่ยนแบบสุ่ม …

14
อัดซูโดกุ
งานของคุณคือการเขียนโปรแกรม (หรือสองโปรแกรมแยกต่างหาก) ในภาษาใด ๆ ที่: สามารถนำกระดาน Sudoku ที่เสร็จสมบูรณ์เป็นอินพุต (ในรูปแบบโลจิคัลใด ๆ ) และบีบอัดลงในชุดอักขระ สามารถใช้การบีบอัดสตริงเป็น input และขยายมันจะได้รับที่แน่นอนเดียวกันคณะกรรมการซูโดกุเสร็จ (การส่งออกในรูปแบบใด ๆ ของตรรกะ 9 แถว) หมายเหตุ:ใช้กฎของ Sudoku เพื่อประโยชน์ของคุณ นั่นคือแนวคิดเบื้องหลังการท้าทายนี้ กฎของ Sudoku เกี่ยวกับ Wikipedia กฎระเบียบ อนุญาตเฉพาะอักขระ ASCII ที่พิมพ์ได้ (32 - 126) ในเอาต์พุตที่บีบอัด (เช่นไม่มีอักขระหลายไบต์ ) คุณสามารถสันนิษฐานได้ว่าอินพุตเป็นบอร์ด Sudoku 3x3 ที่ถูกต้อง (กฎปกติไม่มีการเปลี่ยนแปลง) ฉันจะไม่กำหนดเวลา แต่อย่าสร้างอัลกอริธึมที่ดุร้าย หรือผู้ส่งควรทดสอบการส่งของตนก่อนโพสต์ (ขอบคุณ Jan Dvorak) หากคุณมีคำถามหรือข้อสงสัยใด …

30
เรียงลำดับตัวเลขตามการนับของไบนารี 1
เป้าหมาย เขียนฟังก์ชั่นหรือโปรแกรมเรียงลำดับอาร์เรย์ของจำนวนเต็มตามลำดับจากมากไปน้อยด้วยจำนวนของ 1 ในการเป็นตัวแทนไบนารีของพวกเขา ไม่จำเป็นต้องมีเงื่อนไขการเรียงลำดับรอง ตัวอย่างรายการที่เรียงลำดับ (ใช้จำนวนเต็ม 16 บิต) Dec Bin 1's 16375 0011111111110111 13 15342 0011101111101110 11 32425 0111111010101001 10 11746 0010110111100010 8 28436 0000110111110100 8 19944 0100110111101000 8 28943 0000011100011111 8 3944 0000011111101000 7 15752 0011110110001000 7 825 0000000011111001 6 21826 0101010101000010 6 อินพุต อาเรย์ของจำนวนเต็ม 32 บิต เอาท์พุต …

24
ตลาดหลักทรัพย์แลกเปลี่ยนกอง ~ แก้ไข [ปิด]
พื้นหลัง คุณเป็นผู้ค้าทั้งหมดสำหรับ บริษัท หลักทรัพย์ที่มีชื่อเสียงน้อยกว่าเล็กน้อย คุณทุกคนเป็นส่วนหนึ่งของกลุ่มผู้ค้าที่มุ่งเน้นเฉพาะหุ้นหนึ่ง ๆ ทุก ๆ ชั่วโมงผู้ซื้อขายแต่ละรายมีโอกาสที่จะซื้อหุ้น X หรือขายหุ้น X มี 50 ชั่วโมงต่อรอบและ 3 รอบต่อการแข่งขัน ในตอนท้ายของทุกรอบผู้ซื้อขายที่มีค่าเฉลี่ยสูงสุดชนะการเดินทางไปจาเมกา! เพลย์ แต่ละรอบมี 3 รอบ 50 รอบ ผู้ค้าแต่ละคนจะเริ่มรอบด้วย $ 5,000 และสุ่มจำนวนหุ้นระหว่าง 20 และ 30หุ้น ราคาของหุ้นเริ่มต้นที่ตัวเลขสุ่มระหว่าง 10 และ 150 แต่ละครั้งที่ผู้ซื้อขายแต่ละรายสามารถซื้อจำนวนหุ้นใดก็ได้ที่พวกเขาสามารถจ่ายได้หรือขายจำนวนหุ้นใด ๆ ที่พวกเขาถืออยู่ในปัจจุบันสำหรับแต่ละราคาปัจจุบันต่อหุ้น ราคาต่อหุ้นจะเพิ่มขึ้นเป็นตัวเลขสุ่มระหว่าง 1 ถึง 5 สำหรับแต่ละหุ้นที่ซื้อและลดลงด้วยมูลค่าสุ่มระหว่าง 2 และ 6 สำหรับแต่ละหุ้นที่ขาย ราคาขั้นต่ำคือ $ 1 …

17
เคล็ดลับการตีกอล์ฟใน GolfScript
อะไรโพสต์นี้ยังไม่มีอยู่? แน่นอนGolfScriptถูกสร้างขึ้นมาเพื่อการเล่นกอล์ฟดังนั้นคุณอาจคิดว่าไม่จำเป็นต้องมีเคล็ดลับเฉพาะ แต่เพื่อใช้ประโยชน์จากฟีเจอร์ของ GolfScript อย่างเต็มที่คุณต้องเรียนรู้เทคนิคที่ไม่ชัดเจน โพสต์นี้มีไว้เพื่อรวบรวมเคล็ดลับและเทคนิคที่เป็นประโยชน์ เริ่มต้นด้วยนี่คือหน้าอ้างอิง GolfScript อย่างเป็นทางการ คุณควรทำความคุ้นเคยกับสิ่งเหล่านี้ก่อน: เกี่ยวกับการสอน วากยสัมพันธ์ Built-in อ้างอิงด่วน โดยเฉพาะอย่างยิ่งฉันขอแนะนำให้อ่านหน้าตามลำดับนี้ - การอ้างอิงอย่างรวดเร็วนั้นมีการใช้เพียงเล็กน้อยจนกว่าคุณจะคุ้นเคยกับ built-in และการสอนมีรายละเอียดที่สำคัญบางอย่างซึ่งไม่ได้อธิบายไว้ในหน้าอื่น ๆ . ps เพื่อเป็นแรงบันดาลใจและความสนใจส่วนบุคคลต่อไปนี้เป็นคำถามที่ฉันต้องการดูคำตอบที่ดีสำหรับ: วิธีการทับศัพท์ จำกัด ใน GolfScript อย่างไร {FROM?TO=}%ใช้งานได้ถ้าคุณมั่นใจได้ว่าอินพุตทั้งหมดนั้นถูกค้นพบในFROM(หรือไม่รังเกียจพวกมันทั้งหมดถูกแมปไปยังองค์ประกอบสุดท้ายของTO) แต่วิธีการทั้งหมดที่ฉันเห็นสำหรับการทิ้งค่าที่ไม่ได้แมปไว้ไม่เปลี่ยนแปลง วิธีแปลงสตริงเป็นอาร์เรย์ของรหัส ASCII และย้อนกลับได้ดีที่สุด การดำเนินการใดที่ทำให้เกิดผลข้างเคียง อะไรคือวิธีที่ดีที่สุดในการถ่ายโอนอักขระในสตริงไปยังสแต็ก (เช่นเดียว~กับอาร์เรย์)

25
โปรแกรมที่จบลง แต่ไม่สิ้นสุด [ปิด]
เขียนโปรแกรมที่เริ่มตัวเองอีกครั้งเมื่อเสร็จสิ้น ไม่ควรมีมากกว่าหนึ่งอินสแตนซ์ของโปรแกรมที่ทำงานในเวลาเดียวกัน ไม่แม้แต่สักครู่ของเวลา คุณสามารถละเว้นอินสแตนซ์ใด ๆ ที่เริ่มต้นโดยผู้ใช้ด้วยตนเองในระหว่างรอบของคุณ แต่รหัสของคุณไม่ควรทำในรอบการรีสตาร์ทของคุณ โปรแกรมสามารถเริ่มหลังจากเวลาใดก็ได้ตราบใดที่มีการรับประกันว่าจะเริ่มอีกครั้ง วิธีเดียวที่จะหยุดวงจรคือการฆ่ากระบวนการ โซลูชันของคุณไม่ควรเกี่ยวข้องกับการรีสตาร์ทสภาพแวดล้อม (ซึ่งโปรแกรมกำลังทำงานอยู่รวมถึงระบบปฏิบัติการ, เครื่อง, VM, เชลล์ ฯลฯ ) เฉพาะโปรแกรมของคุณที่ได้รับอนุญาตให้รีสตาร์ท

19
1P5: ภาวะที่กลืนไม่เข้าคายไม่ออกของนักโทษที่ถูกย้ำ
งานนี้เป็นส่วนหนึ่งของครั้งแรกงวดพรีเมียร์โปรแกรมปริศนาผลักดันและมีวัตถุประสงค์เพื่อเป็นสาธิตของใหม่คิงของเนินเขาท้าทายชนิดข้อเสนอ ภารกิจคือเขียนโปรแกรมเพื่อเล่นภาวะที่กลืนไม่เข้าคายไม่ออกของนักโทษที่ทำซ้ำได้ดีกว่าผู้เข้าร่วมรายอื่น ดู Vinny เรารู้จักเพื่อนร่วมห้องของคุณ --- เขาชื่ออะไร? ใช่ McWongski, นักเลงนิปโป - ไอริช - ยูเครน - ขึ้นอยู่กับบางสิ่งและคุณรู้ว่ามันคืออะไร เราพยายามทำตัวให้ดีที่นี่วินนี ให้โอกาสคุณ Givin ถ้าคุณบอกเราว่าเขาวางแผนอะไรเราจะเห็นว่าคุณได้รับงานที่ดี และถ้าคุณไม่ ... กฎของเกม การประกวดประกอบด้วยการแข่งขันรอบเต็มรูปแบบ (การจับคู่ที่เป็นไปได้ทั้งหมด) ของผู้เข้าแข่งขันสองคนในเวลาเดียวกัน (รวมถึงการเล่นด้วยตัวเอง) มี 100 รอบการเล่นระหว่างแต่ละคู่ ในแต่ละรอบผู้เล่นแต่ละคนจะถูกขอให้เลือกระหว่างการร่วมมือกับผู้เล่นคนอื่นหรือทรยศพวกเขาโดยไม่ทราบเจตนาของผู้เล่นคนอื่นในเรื่องนี้แต่ด้วยความทรงจำเกี่ยวกับผลลัพธ์ของรอบก่อนหน้าที่เล่นกับคู่ต่อสู้นี้ คะแนนจะได้รับในแต่ละรอบขึ้นอยู่กับตัวเลือกที่รวมกัน หากผู้เล่นทั้งสองร่วมมือกันพวกเขาแต่ละคนจะได้รับ 2 คะแนน การหักหลังร่วมกันให้คะแนน 1 คะแนน ในกรณีที่ผสมผู้เล่นที่ถูกหักหลังจะได้รับ 4 คะแนนและผู้ประสานงานจะถูกลงโทษด้วย 1 การแข่งขัน "ทางการ" จะดำเนินการไม่ช้ากว่า 10 วันหลังจากโพสต์พร้อมกับผลงานทั้งหมดที่ฉันสามารถทำงานได้และใช้เพื่อเลือกผู้ชนะที่ "ยอมรับ" ฉันมีกล่อง Mac …

30
ตัวอักษรกึ่งแนวทแยง
ให้ตัวอักษรภาษาอังกฤษงานของคุณคือการสร้างตัวอักษรกึ่งแนวทแยงให้กับการป้อนข้อมูล วิธีสร้างตัวอักษรกึ่งแนวทแยง คำอธิบายสั้น ๆ : อันดับแรกคุณรับตำแหน่งของตัวอักษรในตัวอักษรP( Pมีการจัดทำดัชนี 1 ที่นี่) จากนั้นคุณพิมพ์ตัวอักษรแต่ละตัวจนกระทั่งอินพุต (รวม) บนบรรทัดนำหน้าP-1และทำซ้ำตัวอักษรPครั้งนั้นแทรกด้วยเว้นวรรค ตัวอย่าง : ได้รับFโปรแกรมของคุณควรส่งออก: BB CCC DDDD EEEEE FFFFFF ได้รับKโปรแกรมของคุณควรส่งออก: A BB CCC DDDD EEEEE FFFFFF GGGGGGG HHHHHHHH IIIIIIIII JJJJJJJJJJ KKKKKKKKKKK ได้รับAโปรแกรมของคุณควรส่งออก: A กฎระเบียบ คุณอาจเลือกตัวพิมพ์เล็กหรือตัวพิมพ์ใหญ่ แต่ควรสอดคล้องกัน คุณอาจมีช่องว่างที่ไม่เกี่ยวข้องดังต่อไปนี้: หนึ่งช่องว่างที่สอดคล้องกัน (ในแต่ละบรรทัด) ขึ้นบรรทัดใหม่หรือขึ้นบรรทัดใหม่ ช่องว่างต่อท้าย อินพุทและเอาท์พุทสามารถถ่ายได้ด้วยค่าเฉลี่ยมาตรฐานและใช้ช่องโหว่เริ่มต้น คุณได้รับอนุญาตให้ส่งออกรายการบรรทัดแทนตราบใดที่คุณยังให้บริการเวอร์ชันASCII นี่คือโค้ดกอล์ฟดังนั้นโค้ดที่สั้นที่สุดในหน่วยไบต์ชนะ! แรงบันดาลใจจากความท้าทายนี้

30
รหัสขั้นตอนวิธี 196 กอล์ฟ
เขียนโปรแกรมสั้นสำหรับ196 ขั้นตอนวิธี อัลกอริทึมเริ่มต้นจากจำนวนเต็มจากนั้นเพิ่มการย้อนกลับของมันจนกว่าจะถึง Palindrome เช่น input = 5280 5280 + 0825 = 6105 6105 + 5016 = 11121 11121 + 12111 = 23232 output = 23232 อินพุต จำนวนเต็มซึ่งไม่ได้เป็นจำนวน lyrchrel (นั่นคือในที่สุดมันก็ให้ผลเป็น palindrome ภายใต้อัลกอริทึมนี้แทนที่จะดำเนินการต่อไปเรื่อย ๆ ) เอาท์พุต ถึง palindrome

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