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

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

16
“ 99 ฟองเดือด”
ท้าทาย เขียนโปรแกรมที่ส่งออกเนื้อเพลงไปยัง 99 ขวดเบียร์แต่แทนที่จะเป็น "เบียร์" ให้เอาท์พุท "ฟอง" ถ้าจำนวนขวดบนผนังมีหลายเท่าของ 3, "กระซิบ" ถ้ามันเป็นผลคูณของ 5 และ "fizzbuzz" ถ้ามันเป็นทวีคูณของ 3 และทวีคูณของ 5 ถ้าจำนวนขวดบนผนังไม่ใช่หลายคูณ 3 หรือ 5 ให้เอาท์พุท "เบียร์" ตามปกติ เนื้อร้องของเพลง 99 bottles of fizz on the wall, 99 bottles of fizz. Take one down and pass it around, 98 bottles of beer on the …

30
ไวยากรณ์ปราศจากน้ำตาล
ใน Haskell สัญลักษณ์รายการ: [a,b,c] เป็นเพียงน้ำตาลประโยคสำหรับ: a:b:c:[] และสัญกรณ์สตริง: "abc" เป็นเพียงน้ำตาลประโยคสำหรับ: ['a','b','c'] ซึ่งหมายความว่าสตริง: "abc" เหมือนกับ: 'a':'b':'c':[] งาน รับสายคุณควรส่งออกสิ่งที่รุ่น de- ไวยากรณ์จะมีลักษณะเช่นใน Haskell กฎระเบียบ คุณจะได้รับสตริงโดยวิธีการป้อนข้อมูลที่ถูกต้องคุณควรเอาท์พุทสตริงลงท้ายด้วย:[]ด้วยตัวอักษรจากการป้อนข้อมูลที่ล้อมรอบไปด้วยทุกและแยกจากกันโดย' สตริงที่ว่างเปล่าควรเอาท์พุท:[] คุณสามารถสันนิษฐานได้ว่าคุณจะไม่ได้รับอักขระใด ๆ ที่ต้องมีการหลบหนี (เช่นการ'ขึ้นบรรทัดใหม่แท็บ ... ) และข้อมูลนั้นจะอยู่ในช่วง ascii ที่พิมพ์ได้ นี่คือโค้ดกอล์ฟที่คุณควรตั้งเป้าเพื่อลดจำนวนไบต์ของคำตอบของคุณ กรณีทดสอบ "" -> [] "a" -> 'a':[] "Hello, World" -> 'H':'e':'l':'l':'o':',':' ':'W':'o':'r':'l':'d':[]

24
ทำชามซุปตัวอักษร
นี่คือสิ่งที่เราจะเรียกซุปชามตัวอักษร - รูปร่าง ASCII ศิลปะวงกลมประมาณกับ 26 ตัวอักษรภาษาอังกฤษตัวพิมพ์ใหญ่ (AZ) จัดเรียงตามเข็มนาฬิกาเพื่อสร้างปริมณฑล: XYZABC VW DE U F T G S H RQ JI PONMLK เขียนโปรแกรมที่ใช้ตัวอักษร AZ และเอาท์พุทซุปตัวอักษรเดียวกันว่า "หมุน" เพื่อที่จะพูดดังนั้นตัวอักษรที่ป้อนจะปรากฏขึ้นเมื่อสิ่งที่Aทำในตัวอย่างด้านบนและรอบตัวอักษรที่เหลือเต็มรอบ ตามเข็มนาฬิกา ดังนั้นเอาท์พุทสำหรับการป้อนข้อมูลAจะเป็นที่เดิมชามซุปตัวอักษร และเอาต์พุตสำหรับอินพุตBจะเป็นอันนี้: YZABCD WX EF V G U H T I SR KJ QPONML เช่นเดียวกันกับผลลัพธ์สำหรับH: EFGHIJ CD KL B M A N Z …

20
รหัสสนามกอล์ฟ
แรงบันดาลใจจากค่าเริ่มต้นนี้สำหรับ IO งาน เขียนโปรแกรมที่ได้รับจำนวนเต็มใส่xระหว่าง 0 และ 255 xเกิดปัญหาด้วยรหัสทางออก ข้อ จำกัด คุณไม่สามารถเรียกสิ่งใด ๆ ที่มีไว้สำหรับส่งออกรหัสโดยตรง ( System.exit(x)ส่งคืนจากmainฯลฯ ) แต่โปรแกรมของคุณจะต้องทำให้เกิดข้อผิดพลาดหรือความผิดพลาดซึ่งจะทำให้เกิดความเป็นไปได้ที่ 1 คือโปรแกรมที่จะออกด้วยจำนวนเต็มอินพุท ในกรณีนี้คำว่า "ผิดพลาด" และ "ผิดพลาด" หมายถึงโปรแกรมทำให้เกิดข้อยกเว้นที่ไม่คาดคิดร้ายแรงซึ่งในกรณีนั้นมีวิธีการใช้งานการดำเนินการหรือใช้งานอย่างไม่ถูกต้อง คุณอาจไม่ทำให้เกิดข้อผิดพลาดโดยตรงโดยการโยนมันโดยตรง คุณต้องทำให้เกิดขึ้นโดยใช้วิธีการฟังก์ชั่นหรืออื่น ๆ ที่มีวัตถุประสงค์ให้บริการฟังก์ชั่นที่แตกต่างกัน (เช่นพยายามที่จะดำเนินการเขียนไฟล์ไปยังไดเรกทอรีอ่านอย่างเดียว) คุณต้องมีรหัสทางออกอย่างน้อยสองรหัสในโปรแกรมของคุณ การยุติกระบวนการด้วยการใช้สัญญาณถูกแบน (อาจพบเหตุผลในการสนทนานี้ ) เกณฑ์การให้คะแนน คะแนนของโปรแกรมของคุณจะถูกกำหนดโดยจำนวนรหัสทางออกที่รองรับซึ่งการสรุปรหัสคือ tiebreaker จำนวนรหัสทางออกที่รองรับมากที่สุดจะเป็นผู้ชนะ!

15
เขียนบทสนทนาทั้งหมดโดยใช้คนที่ไม่บริสุทธิ์
อักขระ ASCIIจากรหัสทศนิยม 33-126 คือ: !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ โปรดสังเกตว่าในแบบอักษรส่วนใหญ่ 25 ตัวอักษรเหล่านี้มี "หลุม" ในพวกเขา: ( ประเภทที่มากกว่า 0คุณอาจพูด) #$%&04689@ABDOPQRabdegopq อีก 68 ตัวอักษร "ไม่บริสุทธิ์" คือ: !"'()*+,-./12357:;<=>?CEFGHIJKLMNSTUVWXYZ[\]^_`cfhijklmnrstuvwxyz{|}~ งานของคุณคือการเขียนโปรแกรมที่สั้นที่สุดเท่าที่จะทำได้โดยใช้เฉพาะอักขระที่ไม่มีการตัดทอนซึ่งแสดงผลอักขระที่อยู่ในแต่ละครั้งในลำดับใด ๆ เนื่องจาก Space, Tab และ newlines (Line Feed และ / หรือ Carriage Return) เป็นพื้นที่ว่างที่อาจปรากฏในโปรแกรมหรือเอาท์พุตของมัน พวกเขายังคงนับรวมจำนวนอักขระ ห้ามใช้อักขระ ASCII อื่น (และไม่ใช่อักขระที่ไม่ใช่ ASCII) หมายเหตุ คุณไม่จำเป็นต้องใช้อักขระที่ไม่ได้ตัดทั้งหมดหรืออย่างใดอย่างหนึ่งเท่านั้น ผลลัพธ์อาจไม่มีอักขระที่ไม่ได้หุ้ม ภาษาช่องว่างอาจจะใช้ เอาต์พุตควรไปที่ stdout หรือสามารถไปที่ไฟล์ ไม่ควรมีอินพุต โบนัส:เพื่อความสนุกลองพิมพ์ตัวละครที่ไม่ได้ใช้ตัวละครทั้งหมด …

30
วาด ASCII Double Helix
เขียนโปรแกรมที่รับจำนวนเต็ม N ผ่าน stdin หรือบรรทัดคำสั่ง ถ้า N เป็น 0 ตัวอักษรเดียวOจะต้องพิมพ์เป็น stdout ถ้า N เป็นค่าบวก ASCII แนวนอนนี้จะต้องพิมพ์ส่วนที่เป็นเกลียวคู่ที่วาด N ส่วนที่กว้าง ถ้า N คือ 1 เอาต์พุตจะเป็น: /\ O O \/ ถ้า N คือ 2 เอาต์พุตจะเป็น: /\ /\ O / O \/ \/ ถ้า N คือ 3 เอาต์พุตจะเป็น: /\ /\ /\ O / / …

9
Codémonฉันเลือกคุณ!
ทรีด็อกเตอร์เพื่อนบ้านที่ใจดีของคุณเพิ่งให้สัตว์วิเศษสามตัวที่ชื่อCodémon มีทัวร์นาเมนต์การต่อสู้ในเมือง Colorville ใกล้เคียง คุณเป็นคนที่ดีที่สุดอย่างที่ไม่มีใครเคยเป็นหรือเปล่า? ภาพรวม นี่คือการแข่งขันการต่อสู้ ผู้เล่นแต่ละคนควบคุมทีมของสัตว์ประหลาดสามตัวและมีวัตถุประสงค์ที่จะทำให้ทีมอื่น (ฆ่า) ล้มลง มี 100 รอบโดยมีการให้คะแนนสำหรับชัยชนะและความสัมพันธ์ ทีมที่มีคะแนนมากที่สุดจะเป็นผู้ชนะ! มอนสเตอร์ Codémonเป็นสัตว์ตัวน้อยที่ซับซ้อน มีห้าประเภท (องค์ประกอบ) ให้เลือกสามสถิติและสามช่องย้ายในแต่ละ ประเภท Codémonแต่ละประเภทจะถูกกำหนดหนึ่งประเภท ห้าประเภทคือ Normal, Psychic, Fire, Water และ Grass แต่ละคนมีจุดแข็งและจุดอ่อน ความเสียหายขึ้นอยู่กับแผนภูมิต่อไปนี้: ตัวเลขคือตัวคูณความเสียหาย ยกตัวอย่างเช่น Fire attacking Water มีตัวปรับแต่ง 0.5 (ครึ่งดาเมจ) ในขณะที่ Fire Attacking Grass มีสองเท่า (2) สถิติ สัตว์ประหลาดแต่ละตัวมีสามสถิติที่กำหนดความสามารถในการต่อสู้ การโจมตีจะเพิ่มความเสียหาย Defense ช่วยลดความเสียหายที่จะได้รับ ความเร็วอนุญาตให้มันเคลื่อนที่ก่อนความเร็วที่ต่ำกว่า …

30
สร้างเพลงตัวอักษร
เป้าหมายของคุณคือสร้างเพลงตัวอักษรเป็นข้อความในแบบฟอร์มต่อไปนี้ (เรียงตามลำดับ): A is for <word starting with A> B is for <word starting with B> C is for <word starting with C> ... Z is for <word starting with Z> ตัวอย่างผลลัพธ์: A is for Apple B is for Banana C is for Carrot D is for Door E is …

30
เคล็ดลับการตีกอล์ฟใน Bash
คุณมีเคล็ดลับอะไรสำหรับการเล่นกอล์ฟใน Bash ฉันกำลังมองหาความคิดที่สามารถนำไปใช้กับปัญหารหัสกอล์ฟโดยทั่วไปซึ่งอย่างน้อยค่อนข้างเฉพาะกับ Bash (เช่น "ลบความคิดเห็น" ไม่ใช่คำตอบ) กรุณาโพสต์หนึ่งเคล็ดลับต่อคำตอบ
55 code-golf  tips  bash 

30
วิธีการสุ่มตัวอักษรในคำ
ตามที่มีการถกเถียงกันเรื่องความขัดแย้งของ ltteres ใน wrod deos ไม่ mttaer มากสำหรับ raednig ขณะที่ lnog เป็นคนแรก ดังนั้นเพื่อความสนุกอะไรคือฟังก์ชั่นที่สั้นที่สุดในการสุ่มลำดับตัวอักษรในคำโดยใช้ตัวอักษรตัวแรกและตัวสุดท้ายแทน นี่คือแทงของฉันด้วย JavaScript ช่องว่างทั้งหมดนำออกที่124 130 ตัวอักษร function r(w) { var l=w.length-1; return l<3?w:w[0]+w.slice(1,l).split("").sort(function(){return Math.random()-.5}).join("")+w[l]; } JavaScript ที่สั้นกว่ายินดีต้อนรับเสมอ แก้ไข: เพิ่มการตรวจสอบความยาว ฟังก์ชั่นไม่ควรล้มเหลวสำหรับคำสั้น ๆ

30
คุณช่วยบอกเวลาฉันได้ไหม [ปิด]
คุณรู้ว่า API นาฬิกา / เวลาของภาษาของคุณเสียและไม่น่าเชื่อถือเลย ดังนั้นคุณจะไม่ได้รับอนุญาตให้ใช้ API ในตัวเพื่อเข้าถึงเวลา / วันที่ของระบบ แต่คุณก็รู้ด้วยว่าความสามารถทางภาษาของคุณในการทำคณิตศาสตร์วันที่และการรักษาค่าวันที่ / เวลาในตัวแปรนั้นถูกต้อง เขียนโปรแกรมที่พิมพ์วันที่ / เวลาปัจจุบันโดยไม่ต้องเรียก API วันที่ / เวลา / นาฬิกาใด ๆ ตัวอย่างเช่นDateTime.Now, GetDate()และฟังก์ชั่นที่คล้ายกันจะไม่ได้รับอนุญาต คำตอบที่มีผู้โหวตมากที่สุดเป็นผู้ชนะ ในกรณีที่เสมอกันคำตอบที่มีความแม่นยำมากกว่าจะชนะ (นั่นคือแม่นยำมากถึงวินาทีจากนั้นมิลลิวินาทีจากนั้นไมโครวินาทีและอื่น ๆ )

29
สร้างประโยคที่เข้าใจได้
ปัญหา: สร้างประโยคที่สามารถอ่านและเข้าใจได้ มันจะต้องมีหัวเรื่องคำกริยาและวัตถุและกาลและพหูพจน์ต้องตรงกัน โปรแกรมจะต้องสามารถสร้างประโยคที่แตกต่างหลากหลายเพื่อให้มีคุณสมบัติ กฎ: ไม่อนุญาตให้เขียนโค้ดอย่างหนักและไม่อ่านจากไฟล์โดยตรง (ฉันกำลังดูคุณอยู่ไม่สะอาด) คุณสามารถมีรายการคำศัพท์จำนวนเท่าใดก็ได้ ส่งประโยคตัวอย่างหรือ 2 ที่โปรแกรมของคุณสร้างขึ้น ยอมรับภาษาใดก็ได้ มันเป็นการประกวดความนิยมดังนั้นคำตอบที่ได้รับการโหวตมากที่สุดจะเป็นผู้ชนะ

21
เพิ่มคุณสมบัติให้กับภาษาการเขียนโปรแกรม [ปิด]
งานของคุณคือการแก้ไขคุณลักษณะของภาษาโปรแกรมโดยการนำไลบรารี่ที่ฉลาดมากหรือโดยการประมวลผลข้อความอินพุตและ / หรือปรับแต่งกระบวนการรวบรวม ไอเดีย: เพิ่มงานนำเสนอสไตล์ PHP interleaving ไปที่ C (เช่น<?c printf("Hello,"); ?> world!) เพิ่มโอเปอเรเตอร์การรวมตัวกันเป็นโมฆะในภาษาเหล่านั้นที่ไม่ใช่ C # เพิ่มมาโครใน PHP เพิ่มgotoไปยัง JavaScript เพิ่มการจับคู่รูปแบบเป็นภาษา X เพิ่มการสนับสนุน namespace ให้กับภาษาที่ไม่มี ทำให้ C ดูเหมือน PHP ทำให้ Haskell ดูเหมือน Pascal ... (อย่าลังเลที่จะโพสต์แนวคิดในส่วนความคิดเห็น) กฎ: นำสิ่งที่จะตาราง อย่าเพียงแค่พูดว่า "เทมเพลตแฮสเค็ลล์" เพื่อเพิ่มเครื่องมืออำนวยความสะดวกในการ metaprogramming ให้กับแฮสเคลล์ นี่ไม่ใช่ StackOverflow การใช้งานทั้งหมดควรจะพอดีในหนึ่งหน้าจอ (ไม่นับตัวอย่าง) อย่าโฮสต์รหัสบนไซต์ภายนอกโดยเฉพาะสำหรับงานนี้ คุณสมบัติที่น่าประทับใจหรือน่าประหลาดใจที่สุดชนะ ไม่ต้องกังวลกับการนำคุณลักษณะไปใช้อย่างถูกต้อง 100% …

30
ใส่คำลงในตารางตัวอักษร
แรงบันดาลใจจากมส์ที่ฉันเห็นก่อนหน้านี้วันนี้ คำอธิบายการท้าทาย พิจารณากริดตัวอักษรที่ไม่มีที่สิ้นสุด: ABCDEFGHIJKLMNOPQRSTUVWXYZ ABCDEFGHIJKLMNOPQRSTUVWXYZ ABCDEFGHIJKLMNOPQRSTUVWXYZ ABCDEFGHIJKLMNOPQRSTUVWXYZ ABCDEFGHIJKLMNOPQRSTUVWXYZ ... ใช้คำ ( CODEGOLFในตัวอย่างนี้) และทำให้เป็นลำดับของตารางแทนที่ตัวอักษรที่ไม่ได้ใช้ด้วยการเว้นวรรคและลบตัวอักษรที่ท้ายตารางอนันต์ทั้งหมด: C O DE G O L F ตัวอย่าง STACKEXCHANGE ST A C K E X C H A N G E ZYXWVUTSRQPONMLKJIHGFEDCBA Z Y X W V U T S R Q P O N M L …

24
ช่องว่างที่สำคัญ
เรากำหนดช่องว่างให้เป็นหนึ่งในสามของตัวละครแท็บ (0x09), ขึ้นบรรทัดใหม่ (0x0A) หรือเว้นวรรค (0x20) สำหรับความท้าทายนี้คุณต้องเขียนสองโปรแกรมหรือฟังก์ชั่นในภาษาการเขียนโปรแกรมเดียวกันซึ่งทำงานดังต่อไปนี้: นับอักขระช่องว่างในสตริงที่กำหนด ตัวอย่างเช่นการป้อนข้อมูล 123 -_- abc def จะส่งคืน 7 (หากไม่มีบรรทัดใหม่ต่อท้าย) แยกสตริงที่กำหนดที่ช่องว่างที่ต่อเนื่องกัน หากสตริงเริ่มต้นหรือลงท้ายด้วย whitespace ไม่ควรมีสตริงว่างที่ส่งคืนที่สิ้นสุด ตัวอย่างเช่นอินพุตเดียวกัน 123 -_- abc def ["123", "-_-", "abc", "def"]จะกลับมา ไม่ว่าในกรณีใดคุณสามารถป้อนข้อมูลผ่าน STDIN อาร์กิวเมนต์บรรทัดคำสั่งหรือฟังก์ชันอาร์กิวเมนต์ส่งคืนผลลัพธ์หรือพิมพ์ STDOUT สำหรับโปรแกรมที่สองหากคุณเลือกที่จะพิมพ์ไปยัง STDOUT โปรดพิมพ์แต่ละสตริงในบรรทัดของตัวเองโดยไม่ต้องใส่เครื่องหมายอัญประกาศ สำหรับทั้งสองโปรแกรมคุณอาจสมมติว่าอินพุตมีเฉพาะ ASCII ที่พิมพ์ได้ (0x20 ถึง 0x7E) และช่องว่าง ตอนนี้ที่นี่คือการจับ: หากช่องว่างทั้งหมดถูกลบออกจากทั้งสองโปรแกรม / ฟังก์ชั่นสตริงผลลัพธ์จะต้องเหมือนกัน นั่นคือสองส่งของคุณอาจเพียง แต่แตกต่างกันในจำนวนและตำแหน่งของตัวอักษรช่องว่าง โปรแกรม …

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