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

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

16
สร้าง XKCD Browser ที่ผิดพลาด
ท้าทาย กำหนดจำนวนการ์ตูน XKCD ส่งออกชื่อข้อความของการ์ตูนนั้น (ข้อความตัวพิมพ์ใหญ่) แต่โปรแกรมจะต้องโยนความผิดพลาดเมื่อได้รับตัวเลขหรือ859404 กฎระเบียบ จำนวนที่ให้จะเป็นการ์ตูนที่มีอยู่เสมอ (ยกเว้น404) โปรแกรมของคุณจะต้องไม่โยนความผิดพลาดสำหรับตัวเลขอื่น ๆ ที่ไม่ใช่หรือ859404 สำหรับการอ้างอิงการ์ตูน404ไม่มีอยู่จริงและ859คือ: Brains aside, I wonder how many poorly-written xkcd.com-parsing scripts will break on this title (or ;;"''{<<[' this mouseover text." ตัวย่อ URL ไม่ได้รับอนุญาต คุณสามารถใช้อินเทอร์เน็ตเพื่อรับข้อความชื่อ ตัวอย่าง Input > Output 1642 > "That last LinkedIn request set a new record …

30
รหัสจอห์นนี่รหัส, รหัส!
พ่อผู้ก่อตั้งร็อคแอนด์โรลChuck Berryเสียชีวิตอย่างเศร้าใจในวันนี้ พิจารณาการขับร้องของเพลงที่โด่งดังของเขา" Johnny B. Goode ": Go, go Go Johnny go, go Go Johnny go, go Go Johnny go, go Go Johnny go, go Johnny B. Goode (มีวิธีอื่น ที่ถูกเว้นวรรค แต่ข้างต้นจะใช้เพื่อจุดประสงค์ของการท้าทาย) ท้าทาย ให้ตัวอักษร az ตัวพิมพ์เล็กสตริง non, ส่งเสียงคอรัสของ "Johnny B. Goode" พร้อมกับอินสแตนซ์ทั้งหมดของGoหรือgoแทนที่ด้วยสตริงอินพุต, ตัวพิมพ์ใหญ่ในลักษณะเดียวกัน บรรทัดใหม่ต่อท้ายอาจเลือกปฏิบัติตาม ไม่มีอะไรในคอรัสควรเปลี่ยนแปลง ตัวอย่างเช่นถ้าอินพุตเป็นcodeเอาต์พุตจะต้องตรงทั้งหมด Code, code Code Johnny code, …
75 code-golf  string 

30
จำนวน“ a” s และ“ b” s ต้องเท่ากัน คุณได้คอมพิวเตอร์มาใช่ไหม
ในหนังสือวิทยาศาสตร์คอมพิวเตอร์ที่เป็นที่นิยม (และจำเป็น), คำนำของภาษาทางการและออโตมาตะโดยปีเตอร์ลินซ์, ภาษาทางการดังต่อไปนี้มักถูกกล่าวถึง: ส่วนใหญ่เป็นเพราะภาษานี้ไม่สามารถประมวลผลด้วยออโต้ จำกัด ขอบเขต การแสดงออกนี้หมายถึง "ภาษา L ประกอบด้วยสตริงทั้งหมดของ 'a's ตามด้วย' b's ซึ่งจำนวนของ 'a's และ' b's เท่ากันและไม่เป็นศูนย์" ท้าทาย เขียนโปรแกรม / ฟังก์ชั่นการทำงานที่รับค่าสตริงซึ่งบรรจุ "a" s และ "b" s เท่านั้นเป็นค่าป้อนเข้าและส่งคืน / ส่งออกค่าความจริงโดยบอกว่าสตริงนี้ถูกต้องหรือไม่ โปรแกรมของคุณไม่สามารถใช้เครื่องมือการคำนวณภายนอกใด ๆ รวมถึงเครือข่ายโปรแกรมภายนอก ฯลฯ เชลล์เป็นข้อยกเว้นสำหรับกฎนี้ Bash เช่นสามารถใช้อรรถประโยชน์บรรทัดคำสั่ง โปรแกรมของคุณจะต้องส่งคืน / ส่งออกผลลัพธ์ด้วยวิธี "ตรรกะ" ตัวอย่างเช่น: คืนค่า 10 แทน 0, เสียง "บี๊บ" ส่งออกไปยัง …

30
โปรแกรมสั้นที่สุดที่พ่นข้อผิดพลาด StackOverflow [ปิด]
เขียนโปรแกรมที่ผิดพลาด StackOverflow หรือเทียบเท่าในภาษาที่ใช้ ยกตัวอย่างเช่นในJava , java.lang.StackOverflowErrorโปรแกรมควรโยน คุณไม่ได้รับอนุญาตให้กำหนดฟังก์ชั่นที่เรียกตัวเองหรือคลาสใหม่ (ยกเว้นฟังก์ชันที่มีmainใน java) ควรใช้คลาสของภาษาการเขียนโปรแกรมที่เลือก และไม่ควรโยนข้อผิดพลาดอย่างชัดเจน
75 code-golf 


6
ฮาร์ดโค้ดกอล์ฟ: Regex สำหรับการหารด้วย 7
Matthias Goergensมีอักขระ 25,604 ตัว (ลดลงจาก 63,993 ตัวอักษร) regex เพื่อให้ตรงกับตัวเลขหารด้วย 7 แต่มีจำนวนมากปุย: วงเล็บซ้ำซ้อนกระจาย ( xx|xy|yx|yyมากกว่า[xy]{2}) และปัญหาอื่น ๆ แม้ว่าฉันจะแน่ใจ การเริ่มต้นใหม่จะมีประโยชน์ในการประหยัดพื้นที่ สิ่งนี้สามารถทำขนาดเล็กได้? นิพจน์ทั่วไปใด ๆ ที่สมเหตุสมผลสามารถใช้ได้ แต่ไม่มีโค้ดที่สามารถใช้งานได้ใน regex นิพจน์ทั่วไปควรจับคู่สตริงทั้งหมดที่มีการแสดงทศนิยมของตัวเลขหารด้วย 7 และไม่มีอื่น ๆ เครดิตพิเศษสำหรับ regex ที่ไม่อนุญาตให้เริ่มต้น 0

30
จากการเขียนโปรแกรมไขปริศนาไปจนถึง Code Golf
งานของคุณคือการเขียนโปรแกรมที่ส่งออกสตริงที่แน่นอนProgramming Puzzles (ขึ้นบรรทัดใหม่ทางเลือก) แต่เมื่อเว้นวรรคแท็บและบรรทัดใหม่ทั้งหมดจะถูกลบออกมันจะส่งออกCode Golf(ต่อท้ายขึ้นบรรทัดใหม่ก็ได้) จำนวนไบต์ของคุณคือการนับของโปรแกรมแรกโดยยังมีช่องว่าง หมายเหตุ ช่องว่างในCode Golf และ Programming Puzzlesจะถูกลบออกเป็นส่วนหนึ่งของการลบดังนั้นวางแผนให้เหมาะสม ในการเข้ารหัสโดยที่ 0x09, 0x0A และ 0x20 ไม่ใช่แท็บบรรทัดใหม่หรือช่องว่างตามลำดับตัวอักษรเหล่านั้นจะถูกลบ หากรหัสของคุณคือ 42 $@ rw$ @42 Programming Puzzlesแล้วที่ต้องเอาท์พุท นอกจากนี้ในภาษาเดียวกัน 42$@rw$@42 Code Golfการส่งออกต้อง นี่คือโค้ดกอล์ฟดังนั้นโค้ดที่สั้นที่สุดในหน่วยไบต์ชนะ! โชคดี!

17
Golf Dennis เครื่องวัดอุณหภูมิ
เดนนิสทำให้ในจำนวนมากของความพยายามของชุมชนนี้รวมทั้งเป็นผู้ดูแล , นักออกแบบภาษาและการให้บริการของTIO แต่น่าเสียดายที่เขาสี่ปีลูกสาวได้เป็นหวัดเพื่อให้พวกเราทุกคนช่วยให้เขาติดตามการฟื้นตัวของเธอ (มันอาจจะเป็นได้อย่างรวดเร็ว) โดยการให้เขาด้วยเครื่องวัดอุณหภูมิ : .-----------. | | | | '-. .-' .-' - '-. |107.6- 42.0| |106.7- 41.5| |105.8- 41.0| |104.9- 40.5| |104.0- 40.0| |103.1- 39.5| |102.2- 39.0| |101.3- 38.5| |100.4- 38.0| | 99.5- 37.5| | 98.6- 37.0| | 97.7- 36.5| | 96.8- 36.0| | 95.9- 35.5| …

11
Error 404: ไม่พบตัวอักษร
สถานการณ์ เพื่อนคนหนึ่งของคุณกำลังดิ้นรนกับการบ้าน เขาต้องการโปรแกรมง่าย ๆ ที่พิมพ์ตัวเลขธรรมชาติ 404 ตัวแรก: 1 2 3 4 5 6 7 8 9 10 11 ... 401 402 403 404 ความท้าทายของคุณนั้นง่าย: เขียนโปรแกรมนี้สำหรับเขา อย่างไรก็ตามการเชื่อมต่อของคุณแย่มากดังนั้นตัวละครสุ่ม 1 ตัวจะหายไปทุกครั้งที่คุณส่งโปรแกรม เพื่อป้องกันไม่ให้โปรแกรมแตกคุณต้องทำเพื่อให้การลบอักขระเดี่ยวใด ๆจะไม่มีผล:โปรแกรมใช้งานได้โดยไม่คำนึงถึง (โปรแกรมต้นฉบับจะต้องใช้งานได้เช่นกัน) เนื่องจากการเชื่อมต่อไม่ดีพอที่จะส่งไฟล์ขนาดใหญ่รหัสของคุณจะต้องสั้นที่สุด TL: DR - สร้างโปรแกรมที่ทำให้รังสีแข็งตัวเพื่อส่งออกหมายเลข 1 ถึง 404 กฎ / รายละเอียด ผลลัพธ์อาจเป็นรายการจำนวนเต็มในรูปแบบที่เหมาะสม (คั่นด้วยช่องว่างบรรทัดใหม่จุลภาค ฯลฯ ) อย่างไรก็ตามผลลัพธ์ของคุณจะต้องสอดคล้องและไม่เปลี่ยนแปลงเมื่อมีการแก้ไขโปรแกรม การตั้งค่าสถานะบรรทัดคำสั่งที่ประกอบด้วยตรรกะเรียกใช้รหัสจริงสร้างรายการหมายเลขและอื่น ๆ ถูกแบน …

30
การเขียนโปรแกรมที่ไม่แบ่งแยก
เราบอกว่าสตริงไม่มีการแบ่งแยกหากอักขระแต่ละตัวของสตริงปรากฏจำนวนครั้งเท่ากันและอย่างน้อยสองครั้ง ตัวอย่าง "aa!1 1 !a !1"จะไม่ใช่การแบ่งแยกเพราะแต่ละตัวละคร , !, aและ1ปรากฏสามครั้ง "abbaabb"จะไม่ได้ ไม่ใช่แบ่งแยกเพราะปรากฏบ่อยกว่าba "abc"ก็ไม่ได้ แยกแยะเพราะตัวละครจะไม่ปรากฏขึ้นอย่างน้อยสองครั้ง งาน เขียนโปรแกรมหรือฟังก์ชั่นที่ไม่แบ่งแยกซึ่งส่งคืนค่าความจริงหากสตริงที่กำหนดไม่ทำให้เกิดการแบ่งแยกและเป็นค่าเท็จ นั่นคือโปรแกรมที่ทำงานบนซอร์สโค้ดของตัวเองควรคืนค่าความจริง การส่งแต่ละครั้งจะต้องสามารถจัดการกับสตริงที่ไม่ว่างเปล่าที่มีASCII ที่พิมพ์ได้รวมถึงอักขระทั้งหมดที่ปรากฏในซอร์สโค้ดของการส่ง กรณีทดสอบ Truthy: <your program's source code> "aaaa" "aa!1 1 !a !1" "aabbccddeeffgg" "1Q!V_fSiA6Bri{|}tkDM]VjNJ=^_4(a&=?5oYa,1wh|R4YKU #9c!#Q T&f`:sm$@Xv-ugW<P)l}WP>F'jl3xmd'9Ie$MN;TrCBC/tZIL*G27byEn.g0kKhbR%>G-.5pHcL0)JZ`s:*[x2Sz68%v^Ho8+[e,{OAqn?3E<OFwX(;@yu]+z7/pdqUD" Falsy: "a" "abbaabb" "abc" "bQf6ScA5d:4_aJ)D]2*^Mv(E}Kb7o@]krevW?eT0FW;I|J:ix %9!3Fwm;*UZGH`8tV>gy1xX<S/OA7NtB'}c u'V$L,YlYp{#[..j&gTk8jp-6RlGUL#_<^0CCZKPQfD2%s)he-BMRu1n?qdi/!5q=wn$ora+X,POzzHNh=(4{m`39I|s[+E@&y>"

22
เต่าตลอดทางลง
เขียนโปรแกรมหรือฟังก์ชั่นที่ใช้จำนวนเต็มบวกและพิมพ์หรือส่งคืนสแต็คของเต่า ASCII จำนวนมากที่เต่าแต่ละตัวมีขนาดใหญ่กว่าหนึ่งตัว โดยเฉพาะถ้าอินพุตคือ1เอาต์พุตควรเป็น: __ /,,\o หากอินพุตคือ2: __ o/,,\ ____ /,__,\o หากอินพุตคือ3: __ /,,\o ____ o/,__,\ ______ /,____,\o หากอินพุตคือ4: __ o/,,\ ____ /,__,\o ______ o/,____,\ ________ /,______,\o หากอินพุตคือ5: __ /,,\o ____ o/,__,\ ______ /,____,\o ________ o/,______,\ __________ /,________,\o และในรูปแบบเดียวกันสำหรับอินพุตที่ใหญ่ขึ้น โปรดทราบว่า: หัว (the o) ของเต่าล่างอยู่ทางขวาเสมอ หัวของเต่าด้านบนแล้วสลับไปมา ไม่มีบรรทัดใดอาจมีช่องว่างต่อท้าย ไม่อนุญาตให้มีช่องว่างนำหน้าฟุ่มเฟือย (เช่นด้านหลังของเต่าล่างควรอยู่ที่จุดเริ่มต้นของบรรทัด) อนุญาตให้ขึ้นบรรทัดใหม่ตัวเลือกหนึ่งบรรทัดต่อท้าย รหัสที่สั้นที่สุดในหน่วยไบต์ชนะ

11
9 พันล้านชื่อของพระเจ้า
9 พันล้านชื่อของพระเจ้าเป็นเรื่องสั้นโดย Arthur C. Clarke มันเกี่ยวกับกลุ่มของพระทิเบตที่มีคำสั่งที่อุทิศให้กับการเขียนชื่อที่เป็นไปได้ทั้งหมดของพระเจ้าเขียนในตัวอักษรของตัวเอง โดยพื้นฐานแล้วพวกเขาจะทุ่มเทให้กับการเขียนเรียงลำดับตัวอักษรที่เป็นไปได้ จำกัด โดยกฎบางข้อ ในเรื่องนี้อารามจ้างวิศวกรบางคนให้เขียนโปรแกรมเพื่อทำงานทั้งหมดให้พวกเขา เป้าหมายของคุณคือการเขียนโปรแกรมนั้น กฎ: ตัวอักษรของพระใช้ 13 ตัวอักษร (ตามการประเมินของฉัน) คุณสามารถใช้ABCDEFGHIJKLMหรือชุดอักขระ 13 ตัวอื่น ๆ ความยาวต่ำสุดของชื่อที่เป็นไปได้คือ 1 ตัวอักษร ความยาวสูงสุดคือ 9 อักขระ ห้ามใช้ตัวอักษรซ้ำเกิน 3 ครั้งติดต่อกัน AAABAเป็นชื่อที่ถูกต้อง แต่AAAABไม่ใช่ โปรแกรมของคุณควรพิมพ์ (เป็นไฟล์) ทุกชื่อที่เป็นไปได้ตามลำดับจากAถึงMMMLMMMLMคั่นด้วยอักขระใด ๆ ที่ไม่ได้อยู่ในตัวอักษร นี่คือรหัสกอล์ฟและคุณสามารถใช้ภาษาใดก็ได้ ทางออกที่สั้นที่สุดภายในวันที่ 1 มิถุนายน 2014 ชนะ แก้ไข: ชื่อควรเริ่มต้นด้วยAและลงท้ายด้วยMMMLMMMLMดำเนินไปเรื่อย ๆ ผ่านหลายพันล้านชื่อตามลำดับ แต่ลำดับเฉพาะนั้นขึ้นอยู่กับคุณ คุณสามารถพิมพ์ชื่อ 1 ตัวอักษรทั้งหมดก่อนจากนั้นจึงพิมพ์ชื่อตัวอักษร …

30
Fibonacci + Fizz Buzz = Fibo Nacci!
Fibonacci + FizzBuzz = Fibo Nacci! ความท้าทายของคุณคือการสร้างโปรแกรม Fibo Nacci! โปรแกรม Fibo Nacci แสดงผลตัวเลข100 Fibonacci แรก(เริ่มจาก 1) หากหมายเลข Fibonacci หารด้วย 2 และ 3 (เช่นหารด้วย 6) ให้ส่งออก FiboNacci แทนตัวเลข มิฉะนั้นถ้าจำนวนฟีโบนักชีหารด้วย 2 ให้เอาท์พุท Fibo แทนตัวเลข มิฉะนั้นถ้าจำนวนฟีโบนักชีหารด้วย 3 ให้เอาท์พุท Nacci แทนที่จะเป็นตัวเลข กฎระเบียบ โปรแกรมไม่ควรรับอินพุต โปรแกรมควรส่งออกบรรทัดใหม่ ( \n) หลังจากทุกรายการ โปรแกรมไม่ควรพิมพ์สิ่งใดไปยัง STDERR โปรแกรมจะต้องส่งออก100 Fibo Nacci รายการแรก (เริ่มจาก …

5
วาดภาพด้วยเส้นโค้งที่ปิดเพียงเส้นเดียว
แรงบันดาลใจจากvi.sualize.us เป้าหมาย อินพุตเป็นภาพสีเทาและเอาต์พุตเป็นภาพขาวดำ ภาพที่ส่งออกประกอบด้วยเส้นโค้งที่ปิดเพียงหนึ่ง (วน) ที่ไม่ได้รับอนุญาตให้ตัดกับตัวเองหรือสัมผัสตัวเอง ความกว้างของเส้นจะคงที่ตลอดทั้งภาพ ความท้าทายที่นี่คือการหาอัลกอริทึมสำหรับการทำเช่นนั้น เอาท์พุทเพียงเพื่อแสดงภาพอินพุต แต่ด้วยอิสระทางศิลปะใด ๆ ความละเอียดไม่สำคัญนัก แต่อัตราส่วนภาพควรอยู่ในระดับเดียวกัน ตัวอย่าง ภาพทดสอบเพิ่มเติม

30
พิมพ์ JSON บางส่วน
ความท้าทายนี้ตรงไปตรงมา แต่หวังว่าจะมีช่องทางมากมายที่คุณสามารถเข้าใกล้: คุณต้องพิมพ์ / ส่งคืนวัตถุ JSON ที่ถูกต้องที่มีอักขระอย่างน้อย 15 ตัวโดยไม่นับช่องว่างที่ไม่จำเป็น โปรแกรมของคุณควรทำงานโดยไม่ต้องป้อนข้อมูลใด ๆ ในความสนใจของความชัดเจนวัตถุ JSON จะเริ่มต้นและสิ้นสุดด้วยเครื่องหมายปีกกาแบบหยิก{}และมีคู่ของคีย์หรือศูนย์: ค่าที่คั่นด้วยเครื่องหมายจุลภาค ข้อมูลจำเพาะ JSON แบบเต็มสามารถพบได้ที่json.orgและผลลัพธ์ของรหัสของคุณจะต้องผ่านตัวตรวจสอบนี้ ดังนั้นสิ่งต่อไปนี้จะไม่ถูกต้อง: 4 //Too short, not an object "really, really long string" //A string, not an object ["an","array","of","values"] //An array is not a JSON object {"this":4 } //You can't count unessential whitespace {"1":1,"2":3} …
74 code-golf  json 

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