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

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

30
คำตอบของชีวิตจักรวาลและทุกสิ่ง
งาน กำหนด String เป็น input งานของคุณคือการส่งออก42 เท่านั้นถ้าใส่ String ที่จะเกิดขึ้นตรงต่อไปนี้: abbcccddddeeeeeffffffggggggghhhhhhhhiiiiiiiiijjjjjjjjjjkkkkkkkkkkkllllllllllllmmmmmmmmmmmmmnnnnnnnnnnnnnnoooooooooooooooppppppppppppppppqqqqqqqqqqqqqqqqqrrrrrrrrrrrrrrrrrrsssssssssssssssssssttttttttttttttttttttuuuuuuuuuuuuuuuuuuuuuvvvvvvvvvvvvvvvvvvvvvvwwwwwwwwwwwwwwwwwwwwwwwxxxxxxxxxxxxxxxxxxxxxxxxyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzzzzzzzzzzzzzzzz มันอาจส่งออกค่าอื่นใดสร้างข้อผิดพลาดหรือไม่เอาท์พุทเลยถ้าอินพุตไม่เท่ากับสตริงดังกล่าวข้างต้น เกณฑ์การชนะ นี่คือโค้ดกอล์ฟดังนั้นโค้ดที่สั้นที่สุดในหน่วยไบต์ชนะ!
46 code-golf  string 

30
ความเพียรคูณ
ความเพียรคูณ คูณตัวเลขทั้งหมดด้วยตัวเลข ทำซ้ำจนกว่าคุณจะเหลือตัวเลขหนึ่งหลัก ตามที่อธิบายโดยNumberphile : Numberphile "มีอะไรพิเศษเกี่ยวกับ 277777788888899" Numberphile "วิริยะแบบ Multiplicative (ภาพพิเศษ)" ตัวอย่าง 277777788888899 → 2x7x7x7x7x7x7x8x8x8x8x8x8x8x8x9x9 = 4996238671872 4996238671872 → 4x9x9x6x2x3x8x6x7x1x8x7x2 = 438939648 438939648 → 4x3x8x9x3x9x6x4x8 = 4478976 4478976 → 4x4x7x8x9x7x6 = 338688 338688 → 3x3x8x6x8x8 = 27648 27648 → 2x7x6x4x8 = 2688 2688 → 2x6x8x8 = 768 768 → …

12
ศาสตราจารย์ที่ MIT สามารถอ่านใจ!
งานจะนำมาจากการบรรยายโดยศ MIT Devadas เรียกว่าคุณสามารถอ่านใจ คำอธิบายโดยละเอียดของเคล็ดลับสามารถพบได้ในวิดีโอที่เชื่อมโยงหรือในเอกสารนี้ ฉันจะพยายามอธิบายให้ง่ายขึ้น มันจะเปิดออกนี้ถูกประดิษฐ์ขึ้นในปี 1930 และเป็นที่รู้จักในฐานะ"เคล็ดลับห้าบัตรของฟิทช์เชนีย์" เคล็ดลับไปเช่นนี้: สุ่มเลือกไพ่ห้าใบจากสำรับไพ่ ผู้ชมและผู้ช่วยของคุณจะได้เห็นพวกเขา แต่คุณทำไม่ได้ ผู้ช่วยของคุณ (ซึ่งคุณฝึกมาแล้ว) จะเลือกไพ่สี่ใบจากนั้นแสดงให้คุณตามลำดับที่เฉพาะเจาะจง โปรดทราบว่าการ์ดที่ซ่อนอยู่จะไม่ถูกสุ่มเลือกจากไพ่ 5 ใบ ผู้ช่วยเลือกการ์ด / ที่จะทำให้การหลอกลวง คุณจะอนุมานจากข้อมูลที่คุณสามารถรวบรวมจากไพ่สี่ใบที่ไพ่ใบที่ห้าคืออะไร อย่างไร? ระลึกถึงสองประเด็นต่อไปนี้: เมื่อเลือกไพ่ 5 ใบสุ่มคุณจะรับประกันว่าอย่างน้อยสองใบมีชุดเดียวกัน1 ภาพด้านล่างแสดงวงกลมที่มีอันดับ2ทั้งหมด เนื่องจากเป็นวงกลมจึงสามารถนับได้: J, Q, K, A, 2, 3 (เช่นการนับแบบแยกส่วน) คุณรับประกันได้ว่าการ์ดที่ซ่อนไม่ได้อยู่ในอันดับเดียวกันกับการ์ดใบแรกเนื่องจากการ์ดจะเป็นชุดเดียวกัน (อธิบายไว้ด้านล่าง) เป็นไปได้เสมอที่จะเลือกไพ่ใบแรกและการ์ดที่ซ่อนอยู่ซึ่งการ์ดที่ซ่อนอยู่ระหว่าง 1 และ 6 อันดับจะสูงกว่าไพ่ใบแรก (เมื่อนับเป็นวงกลม) หากบัตรแรกคือ1แล้วบัตรที่ซ่อนอยู่จะเป็น2,3,4,5,6 หรือ 7 หากไพ่ใบแรกเป็นJการ์ดที่ถูกซ่อนจะเป็นQ, K, …

30
กรณีที่อยากรู้อยากเห็นของ Steve Ballmer
Steve Ballmer เป็นอดีตซีอีโอของ Microsoft และในบทความล่าสุดอ้างว่าเขา "ยังไม่ทราบว่าเขาทำอะไรผิดกับมือถือ" ตามที่จดหมายข่าวของCodeProjectชี้ให้เห็น "ชื่อของบทความนั้นอาจจบลงได้หลายจุดและยังคงถูกต้อง" เมื่อไม่มีอินพุตให้เอาต์พุตต่อไปนี้: Steve Ballmer still does not know. Steve Ballmer still does not know what he did. Steve Ballmer still does not know what he did wrong. Steve Ballmer still does not know what he did wrong with mobile. สิ่งนี้จะต้องถูกเอาท์พุทตรงตามที่แสดงและจะต้องเป็นผลลัพธ์ของโปรแกรมของคุณเท่านั้น คุณอาจรวมบรรทัดใหม่ต่อท้ายหนึ่งบรรทัด นี่คือโค้ดกอล์ฟที่มีจำนวนน้อยที่สุดในแต่ละภาษาที่ชนะ

30
สร้างทางเดินฉุกเฉิน
ในบางประเทศมีคำแนะนำหรือกฎหมายเกี่ยวกับวิธีการสร้างทางเดินฉุกเฉินบนถนนที่มีหลายเลนต่อทิศทาง (ในเรื่องต่อไปนี้เราจะพิจารณาเฉพาะเลนที่ไปในทิศทางที่เรากำลังเดินทาง) กฎเหล่านี้เป็นกฎของเยอรมนี: หากมีเพียงเลนเดียวให้ทุกคนขับไปทางขวาเพื่อให้รถกู้ภัยสามารถผ่านไปทางซ้ายได้ หากมีสองเลนขึ้นไปรถยนต์ในเลนซ้ายสุดควรขับไปทางซ้ายและทุกคนควรเลื่อนไปทางขวา ท้าทาย กำหนดจำนวนN>0เลนปกติเอาท์พุทเลย์เอาต์ของเลนเมื่อทางเดินฉุกเฉินเกิดขึ้นโดยใช้สตริงของN+1อักขระ ASCII คุณสามารถใช้อักขระสองตัวจากรหัส ASCII 33สูงถึง126หนึ่งตัวเพื่อแสดงทางเดินฉุกเฉินและอีกตัวอักษรหนึ่งสำหรับแสดงรถยนต์ อนุญาตให้ใช้ช่องว่างต่อท้ายหรือนำหน้าการแบ่งบรรทัด ฯลฯ ตัวอย่าง ที่นี่เราใช้EสำหรับทางเดินฉุกเฉินและCสำหรับรถยนต์ N Output 1 EC 2 CEC 3 CECC 4 CECCC 5 CECCCC 6 CECCCCC etc

13
เล่นกอล์ฟอ้างอิงของฉันเช็คสเปียร์
ในขณะที่เขียนเรียงความของฉันสำหรับเช็คสเปียร์ฉันรู้ว่าฉันต้องย่อการอ้างอิงคำพูดของฉันให้สั้นลง ก่อนหน้านี้ฉันเคยเขียนสิ่งนี้: (Act 1, Scene 2, Lines 345-346) แต่ตอนนี้ฉันถูกบอกให้เขียนแบบนี้: (I.ii.345-6) เห็นได้ชัดว่าฉันต้องการรหัส golfed เพื่อเล่นกอล์ฟอ้างอิงของ Shakespeare งาน เขียนโปรแกรมหรือฟังก์ชั่นที่กำหนดอินพุตสตริงตามเทมเพลต 1 หรือ 2 พิมพ์หรือส่งคืนสตริงตามเทมเพลต 3 หรือ 4 ตามลำดับ คุณจะต้องสนับสนุนกิจการ 1 ถึง 5 และฉาก 1 ถึง 9 แม่แบบ เทมเพลต 1 (Act x, Scene y, Lines a-b) คุณอาจคิดว่าxไม่เกิน 5, yไม่เกิน 9 aและbเป็นจำนวนเต็มบวกเสมอไม่เกินค่าจำนวนเต็มมาตรฐานสูงสุดของภาษาของคุณและaจะน้อยกว่าbเสมอ แม่แบบ 2 (Act x, …

30
มาเล่นเทนนิสกัน
ทันใดนั้นฉันอยากเล่นเทนนิส แต่ฉันไม่มีศาล! เซอร์ไพร์ส! นี่คือที่ที่คุณเข้ามา คุณต้องพิมพ์สนามเทนนิสให้ฉัน แต่คุณต้องทำน้อยที่สุดเท่าที่จะเป็นไปได้เนื่องจากเหตุผลที่เป็นความลับ สนามเทนนิส --------- | | --------- | | | xxxxxxxxx | | | --------- | | --------- นี่คือรหัส - กอล์ฟดังนั้นรหัสที่สั้นที่สุดในหน่วยไบต์ชนะ!

30
มันพูดเป็นสองเท่าได้ไหม?
ในการท้าทายก่อนหน้านี้ฉันขอให้นักกอล์ฟเขียนโค้ดเพื่อสร้างสตริงที่คัดลอกอักขระแต่ละตัวในสตริง ตัวอย่างเช่น: TThhiiss iiss ddoouubbllee ssppeeaakk!! ความท้าทายนี้เป็นเพียงการตรวจสอบว่าข้อความบางอย่างตรงตามคำจำกัดความของสายพูดสองครั้ง มีจำนวนอักขระเป็นคู่ เมื่อแบ่งออกเป็นคู่ทุกคู่ประกอบด้วยอักขระสองตัวที่เหมือนกัน ความท้าทาย มันเป็นรหัสกอล์ฟทำในไม่กี่ไบต์ ใช้ภาษาใดก็ได้ที่คุณเลือก โปรดใส่ลิงค์ไปยังล่ามออนไลน์ รหัสจะยอมรับข้อความบางส่วน เพื่อความเรียบง่ายอินพุตจะประกอบด้วยอักขระ ASCII ที่พิมพ์ได้เท่านั้น มันจะกลับมาบ่งชี้ว่าการป้อนข้อมูลเป็นคู่พูด มันอาจจะเป็น: บูลีน สตริง ('จริง', 'เท็จ', 'ใช่', 'ไม่' ฯลฯ ) จำนวนเต็ม 0 หรือ 1 กรณีทดสอบ: aba - false abba - false aabb - จริง aaabb - เท็จ tthhiiss - จริง ttthhhiiisss - เท็จ

23
ปริศนา Chiral
รูปร่างเป็นchiralถ้าไม่มีจำนวนการหมุนสามารถทำให้ดูเหมือนภาพสะท้อนของกระจก ในปริศนานี้เราจะเขียนโปรแกรมคอมพิวเตอร์ chiral สำหรับปริศนานี้เราจะคิดว่าโปรแกรมเป็นเมทริกซ์สี่เหลี่ยมของตัวละคร ดังนั้นโซลูชันทั้งหมดสำหรับความท้าทายนี้ต้องเป็นรูปสี่เหลี่ยมผืนผ้า (นั่นคือทุกบรรทัดต้องมีความยาวเท่ากัน) เราสามารถหมุนโปรแกรมเหล่านี้ได้ทีละไตรมาส ตัวอย่างเช่นโปรแกรม The quickish fish lept deftly rightwards เมื่อหมุนหนึ่งในสี่ทิศตามเข็มนาฬิกาจะดูเหมือน T h r e i glq heu tpi wtc a k rdi des sfh t lf yi s h เรายังสามารถสะท้อนโปรแกรมเหล่านี้ นี่คือโปรแกรมเดียวกันที่สะท้อนเหนือแกนตั้ง: hsif hsikciuq ehT yltfed tpel sdrawthgir โปรแกรม chiral เป็นโปรแกรมที่เมื่อหมุนไปกี่ครั้งก็จะออก " left" อย่างไรก็ตามเมื่อการสะท้อนสร้างโปรแกรมที่ส่งออก "right " …

26
prOGraMMIng PuZZleS & cOde ____
อินพุต สตริงเข้ารหัสไม่ว่างเปล่าประกอบด้วยตัวอักขระ ASCII (อยู่ในช่วง 32-126) _ซึ่งบางตัวอักษรที่ขาดหายไปได้ถูกแทนที่ด้วย เอาท์พุต สตริงถอดรหัสที่มีความยาวเท่ากันโดยมีตัวอักษรทั้งหมดเป็นตัวพิมพ์เล็กรวมถึงสตริงที่หายไป อย่างไร? แก้ไข: ตามที่ระบุไว้โดย @Deusovi ในความคิดเห็นนี้เป็นตัวแปรของตัวเลขเบคอน รวบรวมตัวอักษรทั้งหมดในสตริงเดิมและจัดกลุ่มตาม 5 ตัวอักษรเพิ่มเติมที่ไม่พอดีกับกลุ่มเต็ม 5 จะถูกละเว้น แปลงแต่ละกลุ่มเข้าไบนารี: พิมพ์เล็ก = 0 , พิมพ์ใหญ่ = 1 สิ่งนี้นำไปสู่รายการจำนวนเต็ม ใช้ค่าแต่ละค่าNในรายการนี้เพื่อแทนที่แต่ละค่า_ในสตริงเดิมด้วยตัวอักษรN -th ของตัวอักษร (ดัชนี 0) ตามลำดับการปรากฏ ตัวอย่าง: prOGraMMIng PuZZleS & cOde ____ prOGr --> 00110 --> 6 --> 7th letter = 'g' aMMIn …

30
ทำแท่งน้ำแข็งคำ
เนื่องจากข้อ จำกัด ทางเทคนิคของการแลกเปลี่ยนสแต็คชื่อเรื่องจะแสดงอย่างไม่ถูกต้อง ที่ถูกต้องชื่อสำหรับความท้าทายนี้อยู่ ทำ Word Icicle! Word Icicle Word cicle ord cicle ord icle ord i le or i le or i l or l or r ความท้าทายในวันนี้คือการทำให้คำหยั่งรู้ออกมา กำหนดสตริงของASCII ที่พิมพ์ได้ทั้งหมดและอย่างน้อย 2 อักขระที่ไม่ใช่ช่องว่างให้ทำตามขั้นตอนต่อไปนี้: พิมพ์สถานะปัจจุบันของสตริง แทนที่อักขระที่เล็กที่สุดของคำ (นอกเหนือจากช่องว่าง) ด้วยช่องว่าง หากมีเน็คไทให้เปลี่ยนตัวละครซ้ายสุด ทำซ้ำในบรรทัดที่ต่อเนื่องกันจนกว่าสตริงจะมีอักขระที่ไม่ใช่ช่องว่างเพียง 1 ตัว สิ่งนี้จะสร้างเอฟเฟกต์ที่สตริงอินพุตดูเหมือนว่ากำลังละลาย ... I'm Melting!!! I'm Melting !! I'm Melting …

30
แยกสตริงที่เกิดขึ้นครั้งแรกของตัวละครแต่ละตัว
ที่เกี่ยวข้อง กำหนดสตริง ASCII ที่พิมพ์ได้แบ่งเป็นรายการสตริงที่ไม่ว่างโดยมีสตริงย่อยใหม่เริ่มต้นทุกครั้งที่มีอักขระซึ่งไม่เคยเห็นมาก่อนในกรณีเดียวกันเกิดขึ้น ตัวอย่าง "mississippi" → ["m","i","ssissi","ppi"] "P P & C G" → ["P"," P ","& ","C ","G"] "AAA" → ["AAA"] "Adam" → ["A","d","a","m"] "" → [] บันทึกย่อ : ผลลัพธ์จะมีองค์ประกอบระหว่าง 0 ถึง 95 สตริงย่อยลำดับที่ 95 จะต้องดำเนินการต่อไปจนสิ้นสุดเนื่องจาก ณ จุดนั้นอักขระ ASCII ที่พิมพ์ได้ทั้งหมดได้เริ่มต้นสตริงย่อยดังนั้นอักขระเพิ่มเติมทุกตัวจะเกิดขึ้นก่อนและจึงไม่สามารถทำให้สตริงย่อยใหม่เริ่มต้นได้

19
สร้างสี่เหลี่ยมที่มีขนาดเพิ่มขึ้นโดยจำลองรหัสเริ่มต้น
งานที่ได้รับมอบหมายของคุณคือการเขียนโปรแกรมที่มีความยาวเท่ากันซึ่งจะพิมพ์สี่เหลี่ยม ASCII-art (อธิบายไว้ด้านล่าง) ซึ่งจะเพิ่มความยาวด้านโดย1หน่วยในแต่ละครั้งที่มีการวางรหัสต้นฉบับลงตรงกลางของรหัสปัจจุบัน มันค่อนข้างยากสำหรับฉันที่จะกำหนดงานนี้เป็นอย่างดีดังนั้นฉันจะให้ตัวอย่าง: สมมติว่ารหัสเริ่มต้นของคุณคือCODEและพิมพ์: 0 จากนั้นแทรกCODEตรงกลาง: รหัสของคุณจะกลายเป็นCOCODEDEและควรพิมพ์: 00 00 ใส่CODEรหัสตรงกลางอีกครั้ง: รหัสของคุณกลายเป็นCOCOCODEDEDE และควรพิมพ์: 000 000 000 และอื่น ๆ คำตอบของคุณควรทำงานตามหลักเหตุผลหลังจากทำซ้ำจำนวนเท่าใดก็ได้ แต่ฉันเข้าใจว่าเนื่องจากข้อ จำกัด ด้านประสิทธิภาพของภาษา กฎบางอย่าง: คุณสามารถใช้ASCII ที่พิมพ์ได้ (32-127) เป็นอักขระที่จะใช้สำหรับสี่เหลี่ยมจัตุรัสของคุณ ตัวเลือกของคุณจะต้องคงที่ (คุณควรใช้อักขระเดียวกันสำหรับการทำซ้ำแต่ละครั้ง) ตารางการส่งออกเริ่มต้นต้องมีด้านยาวด้านละ1 ตาราง ascii-art ถูกกำหนดเป็นสตริงที่มีNบรรทัด (คั่นด้วยN-1 linefeeds / ขึ้นบรรทัดใหม่) และแต่ละบรรทัดมีNสำเนาของอักขระที่เลือก การส่งออกของคุณไม่ได้รับอนุญาตให้มีช่องว่างที่ไม่เกี่ยวข้องใด ๆ นอกเหนือจากการขึ้นบรรทัดใหม่ คุณสามารถใช้ค่าเริ่มต้นสำหรับอินพุตและเอาต์พุต (อนุญาตให้โปรแกรมหรือฟังก์ชั่น แต่ตัวอย่างไม่ได้) กลางของรหัสของคุณถูกกำหนดให้เป็นจุดที่รหัสที่มาสามารถแบ่งออกเป็นสองส่วนดังกล่าวว่าทั้งสองมีค่าเท่ากัน คำตอบของคุณจะได้รับคะแนนตามความยาวของโปรแกรมต้นฉบับของคุณเป็นไบต์ จำนวนไบต์ต่ำสุดชนะ ในกรณีที่มีเน็คไทคำตอบที่ถูกส่งไปก่อนหน้านี้ชนะ คุณสามารถใช้โปรแกรมนี้เพื่อใช้การแทรกโดยไม่ต้องทำด้วยมือ

22
ฟังก์ชั่นแปลกอะไร
งานของคุณในที่นี้คือการใช้ฟังก์ชัน1ที่สร้างการเปลี่ยนรูปแบบของจำนวนเต็มบวก (bijection จากจำนวนเต็มบวกเข้าสู่ตัวเอง) ซึ่งหมายความว่าจำนวนเต็มบวกแต่ละค่าควรปรากฏขึ้นหนึ่งครั้งในการเปลี่ยนแปลง ฟังก์ชัน Catch ของคุณควรมีความน่าจะเป็นในการแสดงผลเป็นเลขคี่มากกว่าจำนวนคู่ ตอนนี้อาจดูแปลกหรือเป็นไปไม่ได้ แน่นอนว่ามีตัวเลขคี่เป็นจำนวนเท่า ๆ กันใช่ไหม? และในขณะที่สัญชาตญาณนี้ถูกต้องสำหรับเซต จำกัด จริง ๆ แล้วมันไม่ถือสำหรับเซตอนันต์ ตัวอย่างเช่นใช้การเปลี่ยนแปลงต่อไปนี้: 1 3 2 5 7 4 9 11 6 13 15 8 17 19 10 21 23 12 25 27 14 29 31 16 33 35 18 37 39 20 41 43 22 …

30
มีคนรู้จักกันมากมาย
โดนัลด์รัทมสเฟลด์อดีตรัฐมนตรีกลาโหมของสหรัฐอเมริกาซึ่งเป็นที่รู้จักอย่างแพร่หลายในวลี ที่นี่เรากำลังจะกลั่นความคิดเห็นของเขาลงในบทที่สี่บรรทัด เอาท์พุทข้อความนี้โดยเฉพาะ: known knowns known unknowns unknown knowns unknown unknowns การใช้อักษรตัวพิมพ์ใหญ่ไม่สำคัญ (ตัวอย่างเช่นใช้ได้Known unKnowns) และบรรทัดใหม่ต่อท้ายบรรทัดเดียวเป็นที่ยอมรับ แต่ไม่อนุญาตการเปลี่ยนแปลงการจัดรูปแบบอื่น ๆ นั่นหมายความว่ามีช่องว่างเดียวระหว่างคำและLF(59 ไบต์) หรือCR/LF(62 ไบต์) ระหว่างบรรทัด กฎระเบียบ ยอมรับได้ทั้งโปรแกรมหรือฟังก์ชั่น หากฟังก์ชั่นคุณสามารถส่งคืนผลลัพธ์มากกว่าการพิมพ์ ช่องโหว่มาตรฐานเป็นสิ่งต้องห้าม นี่คือรหัส - กอล์ฟเพื่อให้ใช้กฎการเล่นกอล์ฟตามปกติทั้งหมดและรหัสที่สั้นที่สุด (เป็นไบต์) ชนะ

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