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

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

9
เขียนฟังก์ชั่นที่คืนค่าอดีตกาลของคำกริยาที่กำหนด
ท้าทาย เขียนฟังก์ชันที่รับอาร์กิวเมนต์ซึ่งเป็นคำกริยาและคืนค่าอดีตกาลของคำกริยา (สมมติว่าคำกริยาเป็นปกติ) อดีตกาล หมายเหตุ: พิจารณา y เป็นพยัญชนะหรือสระ โดยปกติเพียงเพิ่มedหลังจากสิ้นสุดคำกริยาทำให้กาลที่ผ่านมาของคำกริยา เช่นjump→ jumped, ask→asked อย่างไรก็ตามมีกฎอื่น ๆ ถ้าตัวอักษรตัวสุดท้ายของคำกริยาให้เป็นเพียงแค่เพิ่มed เช่นlove→ loved, move→moved ถ้าเป็นคำกริยาจะจบลงด้วยการ + พยัญชนะyแล้วเปลี่ยนyไปและเพิ่มied เช่นstudy→ studied, cry→cried แต่ถ้าเป็นคำกริยาจะจบลงด้วยการสระ + แล้วเพียงแค่เพิ่มyed เช่นplay→ played, stay→stayed หากคำกริยาลงท้ายด้วยสระและพยัญชนะให้เขียนพยัญชนะอีกครั้งแล้วเพิ่ม edหากคำกริยาจะจบลงด้วยการสระและพยัญชนะแล้วเขียนพยัญชนะอีกครั้งหนึ่งและเพิ่ม เช่นstop→ stopped, plan→planned แต่ถ้าเป็นคำกริยาจะจบลงด้วยการสระหลาย + พยัญชนะหรือสระเดี่ยว + edหลายพยัญชนะแล้วเพียงแค่เพิ่ม เช่นlook→ looked, jump→jumped มีกฎมากกว่า แต่ให้ใส่ใจกฎข้างต้นเท่านั้น ตัวอย่างเช่นตามกฎข้างต้นvisit→visitted → ผู้ชนะ เนื่องจากนี่คือรหัสกอล์ฟรหัสที่สั้นที่สุดที่ส่งกลับกาลเวลาในอดีตชนะอย่างถูกต้อง ตัวอย่าง …
14 code-golf  string 

5
จำลองหุ่นยนต์เซลลูล่าร์ 1D ใด ๆ
ความท้าทาย คุณต้องเขียนโปรแกรมที่สมบูรณ์ซึ่งใช้ตัวเลขเจ็ดตัวจาก STDIN และพิมพ์ประวัติสองมิติของหุ่นยนต์อัตโนมัติ (CA) ไปยัง STDOUT นี่คือรหัสกอล์ฟ การจัดรูปแบบ อินพุตอินพุตจะเป็นเจ็ดจำนวนเต็ม / สตริงคั่นด้วยเครื่องหมายจุลภาค หมายเลขแรกคือจำนวนของกฎตามรหัส Wolfram (ชื่อมาตรฐานสำหรับแต่ละกฎ) ประการที่สองคือการกำหนดค่าเริ่มต้นเริ่มต้น ที่สามและสี่อธิบายรูปแบบและจำนวนครั้งที่ควรผนวกเข้ากับด้านซ้ายของการกำหนดค่าเริ่มต้น เป็นช่องว่างภายใน ที่ห้าและหกทำเช่นเดียวกันสำหรับด้านขวา ตัวเลขสุดท้ายคือจำนวนรุ่นที่รันการจำลอง 90,11,0,4,0,4,5ดังนั้นตัวอย่างของการป้อนข้อมูลเป็น นี้ควรบอกโปรแกรมที่คุณกำลังเรียกใช้กฎ 90 นอกจากนี้ยังควรบอกโปรแกรมที่คุณต้องการกำหนดค่าเริ่มต้นที่จะ11มีสตริง0ผนวก 4 0000110000ครั้งเพื่อให้ปลายทั้งสองเพื่อให้รูปแบบเริ่มต้นที่เกิดขึ้นจริง นอกจากนี้ยังบอกให้โปรแกรมของคุณรันการจำลองนี้เป็นเวลา 5 ชั่วอายุ เอาท์พุทโปรแกรมของคุณควรพิมพ์อาร์เรย์ทั้งหมดของเซลล์แต่ละรุ่น (คั่นด้วยบรรทัดใหม่) เพื่อให้เอาต์พุตเป็นไดอะแกรมสเปซ - เวลาของ CA สำหรับแต่ละรุ่นสถานะของแต่ละเซลล์จะถูกกำหนดโดยสถานะและสถานะของเซลล์ไปทางซ้ายและขวาทันทีตามกฎที่ให้ไว้เป็นอินพุต การจำลองควรล้อมรอบขอบ สิ่งแรกที่พิมพ์ควรเป็นอาร์เรย์เริ่มต้นเป็น gen 0 อินพุต90,11,0,4,0,4,5ควรส่งผลให้ผลลัพธ์ต่อไปนี้ตรงตามที่เป็นไปได้ 0000110000 0001111000 0011001100 0111111110 1100000011 0110000110 โปรดสังเกตว่าสถานะเริ่มต้นจะไม่รวมอยู่ในห้าชั่วอายุคน สังเกตว่าการจำลองล้อมรอบขอบ ตัวอย่างเพิ่มเติม …

5
เขียนเด ธ โน้ตของคุณเอง
คิระต้องการความช่วยเหลือของคุณ! รูปแบบอินพุต: Date [and/or Time] Name Gender Reason รูปแบบผลลัพธ์: <Last Name, First Name> <will die/died> on the <DD><st/nd/rd/th> of <MMM, YYYY> [at <hh:mm:ss TT>]. <He/She> <will die/died> of <Reason>. รายละเอียดรายละเอียด: โปรแกรมของคุณควรมีรูปแบบการป้อนข้อมูลตามวันที่อย่างน้อย: 9 November 2003 9/11/2003 November 9, 2003 รูปแบบเวลา: hh tt hh TT hh:mm tt hh:mm TT hh:mm:ss tt hh:mm:ss …
14 code-golf 

2
รหัสหลามที่เร็วที่สุดเพื่อค้นหากลุ่มคำที่ชนะในเกมนี้
นี่คือเกมคำศัพท์จากชุดการ์ดกิจกรรมสำหรับเด็ก ด้านล่างกฎคือรหัสเพื่อค้นหา triplet ที่ดีที่สุดโดยใช้ / usr / share / dict / words ฉันคิดว่ามันเป็นปัญหาการเพิ่มประสิทธิภาพที่น่าสนใจและฉันสงสัยว่าผู้คนสามารถค้นหาการปรับปรุงได้หรือไม่ กฎระเบียบ เลือกตัวอักษรหนึ่งตัวจากแต่ละชุดด้านล่าง เลือกคำโดยใช้ตัวอักษรที่เลือก (และอื่น ๆ ) ทำคะแนนคำว่า ตัวอักษรแต่ละตัวจากชุดที่เลือกจะได้รับหมายเลขที่แสดงพร้อมชุด (รวมซ้ำ) AEIOU นับ 0 ตัวอักษรอื่น ๆ ทั้งหมดคือ -2 ทำซ้ำขั้นตอนที่ 1-3 ด้านบน (ไม่ใช้ตัวอักษรซ้ำในขั้นตอนที่ 1) อีกสองครั้ง คะแนนสุดท้ายคือผลรวมของคะแนนสามคำ ชุด (ชุดที่ 1 คะแนน 1 คะแนนชุดที่ 2 คะแนน 2 คะแนน ฯลฯ ) LTN RDS …


5
แก้ปัญหาเขาวงกตที่เป็นข้อความ
ให้เขาวงกตบน stdin และจุดเริ่มต้นเขียนโปรแกรมที่พิมพ์เส้นทางไปยังทางออกบน stdout เส้นทางใดก็ได้ที่ยอมรับได้ตราบใดที่โปรแกรมของคุณไม่สร้างเส้นทางที่ไม่สำคัญ (ผ่านทุกจุดในเขาวงกต) สำหรับเขาวงกตทุก ๆ ในการป้อนข้อมูลผนังจะมีเครื่องหมายเป็นและจุดเข้าด้วย# @คุณสามารถใช้อักขระใด ๆ เพื่อวาดเขาวงกตและเส้นทางในผลลัพธ์ตราบใดที่พวกมันแตกต่างกัน คุณอาจคิดว่า: จุดเข้าและออกอยู่ที่ขอบของอินพุต ทุกบรรทัดของอินพุตมีความยาวเท่ากัน เขาวงกตสามารถแก้ไขได้และไม่มีรอบ มีเพียงทางออกเดียวคือ การแก้ปัญหาที่สั้นที่สุดด้วยการนับตัวอักษร (Unicode) จะชนะ ตัวอย่าง (โปรดทราบว่าอินพุตมีการบุด้วยช่องว่าง) #### # # @ ##### # # # ####### #### # # @*##### #* # #****** ####### ### ################### ### # # ## ######### # # # ##### …

30
พิมพ์จำนวนของคนในจำนวนไบนารีโดยไม่ใช้ตัวดำเนินการระดับบิต
ลักษณะ กำหนดตัวเลขให้พิมพ์จำนวน1s ที่มีอยู่ในการแสดงเลขฐานสอง อินพุต ตัวเลข>= 0ในฐาน 10 ที่จะไม่เกินจำนวนสูงสุดที่ภาษาของคุณสามารถจัดการได้ เอาท์พุต จำนวนของ1s ในการเป็นตัวแทนไบนารี สภาพการชนะ รหัสที่สั้นที่สุดชนะ ไม่ได้รับอนุญาต ผู้ประกอบการระดับบิต อนุญาตให้ใช้ตัวดำเนินการอื่นเช่นการบวกและการคูณ ฟังก์ชั่นการแปลงฐานในตัว ตัวอย่าง Input: Ouput: 56432 8 Input: Output: 45781254 11 Input: Output: 0 0

10
เกมคำศัพท์ Hangman กอล์ฟ
แรงบันดาลใจจากReddit เขียนโปรแกรมที่เล่นเป็นเพชฌฆาต โปรแกรมเลือกคำที่สุ่มจากรายการคำ N โดยที่ N> 2 รายการคำสามารถให้กับโปรแกรมในวิธีที่คุณเลือก ในแต่ละรอบซ้ำ พิมพ์สถานะของเกมโดยใช้เครื่องหมายขีดล่างสำหรับตัวอักษรที่ยังไม่ได้ค้นพบ: H _ N _ _ _ N พิมพ์จำนวนครั้งที่เหลือ 10 อ่านจดหมายจาก stdin และอัพเดตสถานะของเกมลบความพยายามหากพวกเขาเดาตัวอักษรที่ไม่ถูกต้อง A (input) H A N _ _ A N 10 ทำซ้ำจนกว่าจะเดาตัวอักษรทั้งหมดหรือพยายามถึง 0 ใช้ภาษาใดก็ได้ จำนวนอักขระน้อยที่สุดชนะ การวาดตะแลงแกงนั้นไม่จำเป็น แต่จะทำให้คุณได้รับ upvotes และรุ่งโรจน์

10
ตัวเลขหลักสุดท้ายในการยกกำลัง
ในงานนี้คุณจะได้รับ A (น้อยกว่า 10,000 หลัก) และ B (น้อยกว่า 2 ^ 64) และคุณจะต้องคำนวณตัวเลขสุดท้ายของ (A · A · A · ... · A (B ครั้ง )) อินพุต A และ B ถูกกำหนดในบรรทัดเดียวคั่นด้วยช่องว่าง อินพุตถูกยกเลิกโดย EOF อินพุต 34543232321323243242434544533445343432434311112223454323232132324324243454453344534343243431111222345432323213232432424345445334453434324343111122234543232321323243242434544533445343432434311112223454323232132324324243454453344534343243431111222345432323213232432424345445334453434324343111122234543232321323243242434544533445343432434311112223454323232132324324243454453344534343243431111222 22337254775808 38758436543765743875437656358764347568437658743658743454354645645543532487548758475847684756897548758457843758437584758478574857438758436587436587436587643875643856783478743658743658764387564387564378658437658743658743687564387564387564765746576475647564756475465746574675647654765476547534587545689475689748574385743765874585743857843765893748643587438957458754376543265874387564384764367584375874758943267632487564357 54545454123 6777744348435743587643756438765436574587564354375674365645643675 23232 3875843654376574357 54545454 เอาท์พุต 6 3 5 9 ข้อ จำกัด อย่าใช้ฟังก์ชัน inbuilt หรือตัวดำเนินการโอเวอร์โหลดเพื่อคำนวณ …
14 code-golf  math 

9
แมนเชสเตอร์เข้ารหัสกระแสข้อมูล
การเข้ารหัสแมนเชสเตอร์เป็นโปรโตคอลโทรคมนาคมที่ใช้ในการสื่อสารทางวิทยุที่รับประกันการเปลี่ยนบิตในช่วงเวลาปกติเพื่อให้ผู้รับสามารถกู้คืนอัตรานาฬิกาจากข้อมูลได้ มันเพิ่มบิตเรตเป็นสองเท่า แต่ราคาถูกและใช้งานง่าย มันถูกใช้อย่างกว้างขวางโดยผู้ประกอบการวิทยุสมัครเล่น แนวคิดนี้ง่ายมาก: ในระดับฮาร์ดแวร์นาฬิกาและสายข้อมูลเป็นเพียง XORed ด้วยกัน ในซอฟต์แวร์นี่คือภาพที่แปลงอินพุตสตรีมของบิตให้เป็นเอาต์พุตสตรีมอัตราสองเท่าโดยแต่ละอินพุต '1' ถูกแปลเป็น '01' และแต่ละอินพุต '0' แปลเป็น '10' นี่เป็นปัญหาที่ง่าย แต่เปิดให้มีการใช้งานมากมายเนื่องจากลักษณะของบิตสตรีม นั่นคือการเข้ารหัสเป็นแนวคิดแบบกระบวนการทีละบิตแทนที่จะเป็นกระบวนการไบต์ต่อไบต์ ดังนั้นเราทุกคนเห็นด้วยกับ endianness บิตที่สำคัญน้อยที่สุดของอินพุตกลายเป็นไบต์ที่สำคัญที่สุดของเอาต์พุต เวลาเล่นกอล์ฟ! เขียนฟังก์ชั่นที่กำหนดอาร์เรย์ความยาวตามอำเภอใจเป็นไบต์ส่งกลับอาร์เรย์ของข้อมูลแมนเชสเตอร์ที่เข้ารหัส อินพุตและเอาต์พุตควรถูกพิจารณาเป็น little-endian ไบต์ที่มีนัยสำคัญน้อยที่สุดก่อนและ BIT ที่สำคัญน้อยที่สุดในบิตสตรีม ASCII รูปวาดบิตสตรีม : bit # 5 4 3 2 1 0 5 4 3 2 1 0 IN ------- 1 0 …
14 code-golf  binary 

11
พรไอริชเก่า
ฉันไม่รู้ว่าใครเป็นคนสร้างคำเหล่านี้และฉันไม่ใช่ชาวไอริช แต่ฉันให้พรแก่ชาวไอริช: May the road rise up to meet you May the wind be always at your back May the sun shine warm upon your face The rains fall soft upon your fields And until we meet again May God hold you in the hollow of His hand ฉันกำลังวางแผนที่จะโพสต์ข้อความนี้ไม่กี่สัปดาห์ต่อจากนี้ แต่เพิ่งเกิดขึ้นกับฉันว่าเมื่อวานนี้เป็นวันเซนต์แพทริก …

6
พิมพ์คลื่นสามเหลี่ยมของตัวเลข
กำหนดขนาดและระยะเวลาของคลื่นให้พิมพ์คลื่น ดูตัวอย่างผลลัพธ์สำหรับรายละเอียดเพิ่มเติม จำนวนรูปแบบคลื่นทั้งหมดเท่ากับระยะเวลาและความสูงของแต่ละคลื่นเท่ากับความกว้าง ความกว้างและระยะเวลาน้อยกว่า 10 คุณสามารถละเว้นช่องว่างต่อท้าย แต่ไม่ใช่ช่องว่างนำหน้า Sample Input 3 2 Sample Output 3 3 232 232 12321 12321 12321 12321 232 232 3 3

12
วันของสัปดาห์ถัดไป 29 กุมภาพันธ์
เขียนฟังก์ชั่นที่ใช้วันที่และส่งคืนวันในสัปดาห์ของวันที่ 29 กุมภาพันธ์ถัดไปหลังจากวันที่นั้น อินพุตเป็นสตริงในรูปแบบ ISO Extended: YYYY-MM-DD (เช่น 27 พฤษภาคม 2010 จะเป็น "2010-05-27") ผลลัพธ์คือสตริงที่เป็นชื่อของวันในสัปดาห์ (เช่น "วันจันทร์") การใช้อักษรตัวพิมพ์ใหญ่ไม่สำคัญ แต่ให้ชื่อเต็มเป็นภาษาอังกฤษ หากวันที่ที่กำหนดคือ 29 กุมภาพันธ์ให้ส่งคืนวันในสัปดาห์ของวันที่ 29 กุมภาพันธ์ถัดไป ใช้การคำนวณสำหรับปฏิทินเกรกอเรียน Proleptic (ดังนั้นจะใช้การคำนวณแบบกระโดดปีเกรโกเรียนสำหรับความยาวทั้งหมด) ไม่ต้องกังวลกับปฏิทินจูเลียนหรือเมื่อมีการเปลี่ยนจากจูเลียนเป็นเกรโกเรียน เพียงแค่ถือว่า Gregorian สำหรับทุกสิ่ง ฟังก์ชันควรใช้งานได้อย่างน้อยช่วง "0001-01-01" - "2100-01-01" อย่าลังเลที่จะใช้ไลบรารี่มาตรฐานที่คุณเลือกภาษา แต่อย่าใช้ไลบรารี่ของบุคคลที่สามจนกว่าคุณจะต้องการรวมรหัสนั้นเป็นส่วนหนึ่งของโซลูชันของคุณ รหัสที่สั้นที่สุด (ตัวอักษรน้อยที่สุด) ชนะ ตัวอย่าง: func("0001-01-01") -> "Sunday" func("1899-12-03") -> "Monday" func("1970-01-01") -> "Tuesday" func("1999-07-06") …
14 code-golf  date 

4
หนังสือที่ใช้ได้สำหรับการเล่นกอล์ฟรหัสฟรีหรือไม่ [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน2 ปีที่ผ่านมา คุณสามารถแนะนำหนังสือเกี่ยวกับการเล่นกอล์ฟทั่วไปโดยเฉพาะอย่างยิ่งใน Java และ C ++ ได้ไหม
14 code-golf  tips 

17
สับไพ่โดยไม่มีตัวแปรในตัวเครื่อง [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัพเดตคำถามเพื่อให้เป็นไปตามหัวข้อสำหรับ Code Golf Stack Exchange ปิดให้บริการใน2 ปีที่ผ่านมา เป้าหมายของปริศนานี้คือการสำรับไพ่ 52 ใบและสับไพ่เพื่อให้ไพ่แต่ละใบอยู่ในตำแหน่งสุ่ม ได้รับ: อาเรย์deck, ของจำนวนเต็ม 52 ที่แตกต่างกันที่เป็นตัวแทนของการ์ด เมื่อคุณเริ่มต้นให้deckประกอบด้วยหนึ่งในบัตรแต่ละใบในลำดับที่ไม่รู้จักบางอย่าง ฟังก์ชั่นint rand(min, max)ที่จะส่งกลับจำนวนเต็มแบบสุ่มระหว่าง ints minและmaxรวม คุณสามารถสันนิษฐานได้ว่าฟังก์ชั่นนี้สุ่มอย่างแท้จริง ฟังก์ชั่นvoid swap(x, y)ที่แลกเปลี่ยนไพ่สองใบในสำรับ หากคุณโทรหาswap(x, y)การ์ดที่ตำแหน่งxและyจะเปลี่ยนสถานที่ เมื่อไหร่: การเรียกโปรแกรมshuffle()(หรือshuffle(deck)หรือdeck.shuffle()หรือการนำไปใช้ของคุณชอบที่จะทำงาน), แล้ว: deck ควรมีหนึ่งบัตรแต่ละใบตามลำดับการสุ่มอย่างสมบูรณ์ จับ: คุณไม่สามารถประกาศตัวแปรใด ๆ โทรswapและrandมากเท่าที่คุณต้องการ แต่คุณไม่สามารถประกาศตัวแปรใด ๆ ของคุณเอง ซึ่งรวมถึงforเคาน์เตอร์ห่วง - foreachแม้คนโดยปริยายเช่นเดียวกับใน ชี้แจง: คุณสามารถเปลี่ยนรายละเอียดเล็กน้อยเพื่อให้เหมาะกับภาษาที่คุณเลือก ตัวอย่างเช่นคุณสามารถเขียนswapเพื่อสลับจำนวนเต็มสองจำนวนโดยการอ้างอิง การเปลี่ยนแปลงควรจะทำให้งานของคุณเป็นภาษาของคุณไม่ใช่เพื่อให้ไขปริศนาง่ายขึ้น …

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