คำถามติดแท็ก code-golf

Code-golf เป็นการแข่งขันเพื่อแก้ไขปัญหาเฉพาะในส่วนที่น้อยที่สุดของซอร์สโค้ด

30
วาดสามเหลี่ยม Sierpinski
Sierpinsky Triangleเป็นเศษส่วนที่สร้างขึ้นโดยการใช้รูปสามเหลี่ยมลดความสูงและความกว้างลง 1/2 โดยสร้างสำเนาของสามเหลี่ยมที่เกิดขึ้น 3 สำเนาและวางให้แต่ละสามเหลี่ยมสัมผัสอีกสองที่มุมหนึ่ง กระบวนการนี้ซ้ำแล้วซ้ำอีกซ้ำอีกครั้งกับสามเหลี่ยมที่เกิดขึ้นเพื่อสร้างสามเหลี่ยม Sierpinski ดังแสดงด้านล่าง เขียนโปรแกรมเพื่อสร้างสามเหลี่ยม Sierpinski คุณสามารถใช้วิธีใดก็ได้ที่คุณต้องการสร้างรูปแบบไม่ว่าจะโดยการวาดสามเหลี่ยมจริงหรือโดยใช้อัลกอริทึมแบบสุ่มเพื่อสร้างภาพ คุณสามารถวาดเป็นพิกเซล, ASCII art หรืออะไรก็ได้ที่คุณต้องการตราบใดที่เอาต์พุตดูเหมือนกับภาพสุดท้ายที่แสดงด้านบน ตัวละครที่ชนะน้อยที่สุด

15
เครื่องฟูนี้หยุดหรือไม่?
การพิจารณาว่าเครื่องทัวริงหยุดการทำงานเป็นที่รู้จักกันดีว่าไม่สามารถตัดสินใจได้ แต่นั่นไม่จำเป็นต้องเป็นจริงสำหรับเครื่องที่เรียบง่าย เครื่อง Fooเป็นเครื่องที่มีเทป จำกัด ที่ถือในเทปแต่ละคนมีจำนวนเต็มหรือสัญลักษณ์หยุดhเช่น 2 h 1 -1 ตัวชี้คำสั่งเริ่มต้นด้วยการชี้ไปที่เซลล์แรก: 2 h 1 -1 ^ ในทุกขั้นตอนตัวชี้คำสั่งจะเลื่อนไปข้างหน้าตามหมายเลขที่มันชี้ไปแล้วลบล้างจำนวนนั้น ดังนั้นหลังจากหนึ่งขั้นตอนมันจะเคลื่อนที่ไปข้างหน้า2เซลล์และเปลี่ยน2เป็น-2: -2 h 1 -1 ^ เครื่อง Foo ทำเช่นนี้ต่อไปจนกระทั่งตัวชี้คำสั่งชี้ไปที่สัญลักษณ์หยุด ( h) ดังนั้นนี่คือการดำเนินการเต็มรูปแบบของโปรแกรมนี้: 2 h 1 -1 ^ -2 h 1 -1 ^ -2 h -1 -1 ^ -2 h -1 1 ^ -2 …

3
Klein Topololyglots
Kleinเป็นภาษา 2D ที่ฉันออกแบบซึ่งสามารถฝังลงบนพื้นผิวทอพอโลยี 12 แบบ โปรแกรม Klein สามารถทำงานบนพื้นผิวที่แตกต่างกันโดยการเปลี่ยนอาร์กิวเมนต์บรรทัดคำสั่ง โทโพโลยีกำหนดว่าตัวชี้คำสั่งไปที่ใดเมื่อปิดนอกขอบของโปรแกรม เมื่อเคลื่อนออกจากขอบ ip จะกระโดดไปที่ขอบด้วยสีที่เข้าคู่กันและจะรักษาตำแหน่งของมันให้สัมพันธ์กับลูกศรนั่นคือตัวชี้จะประหยัดระยะห่างจากหัวลูกศร ยกตัวอย่างเช่นโทโพโลยีโทโพโล000ยีที่ใช้โดยภาษา 2D ส่วนใหญ่ทำให้ตัวชี้คำสั่งล้อมรอบไปอีกด้านเมื่อเลื่อนออกจากขอบ งาน งานค่อนข้างง่ายเขียนโปรแกรม Klein ว่าเมื่อรันจะส่งออกทอพอโลยีที่จะทำงานระบบตัวเลขแต่ละตัวอาจถูกคั่นด้วยช่องว่าง (เช่น000และ0 0 0เป็นทั้งเอาต์พุตที่อนุญาต) คุณสามารถเลือกที่จะใช้หรือเพิกเฉยต่อการ-Aตั้งค่าบรรทัดคำสั่งซึ่งจะไม่ทำให้คุณต้องเสียค่าใช้จ่ายหากคุณใช้ นี่คือรหัสกอล์ฟดังนั้นคำตอบที่สั้นที่สุดจะเป็นผู้ชนะ นี่คือไดร์เวอร์ทดสอบออนไลน์ที่สามารถใช้ในการทดสอบโทโพโลยีทั้งหมดได้ในครั้งเดียว -Aให้ทำงานในโหมดจำนวนเต็มลบ

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

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

30
เคล็ดลับสำหรับการเล่นกอล์ฟใน CJam
CJamสแต็คที่ใช้ภาษาในการเล่นกอล์ฟ GolfScript แรงบันดาลใจที่สร้างขึ้นโดยผู้ใช้ PPCG aditsu ดังนั้นในคำถามเคล็ดลับเฉพาะภาษาอื่น ๆ ของหลอดเลือดดำ: คุณมีเคล็ดลับทั่วไปสำหรับการเล่นกอล์ฟใน CJam อย่างไร กรุณาโพสต์หนึ่งเคล็ดลับต่อคำตอบ
43 code-golf  tips  cjam 

23
แยกวิเคราะห์รูปแบบพจนานุกรม Bookworm
เมื่อไม่นานมานี้ฉันได้ดื่มด่ำกับความคิดถึงในรูปแบบของ Bookworm Deluxe: ในกรณีที่คุณไม่เคยเห็นมาก่อนมันเป็นเกมคำศัพท์ที่มีเป้าหมายคือการเชื่อมต่อไทล์ที่อยู่ติดกันเพื่อสร้างคำ เพื่อตรวจสอบว่าสตริงเป็นคำที่ถูกต้องหรือไม่สตริงนั้นจะตรวจสอบกับพจนานุกรมภายในซึ่งถูกจัดเก็บในรูปแบบบีบอัดที่มีลักษณะดังนี้: aa 2h 3ed ing s 2l 3iis s 2rdvark 8s 4wolf 7ves กฎสำหรับการคลายพจนานุกรมง่ายมาก: อ่านตัวเลขที่จุดเริ่มต้นของบรรทัดและคัดลอกอักขระจำนวนมากจากจุดเริ่มต้นของคำก่อนหน้า (หากไม่มีตัวเลขให้คัดลอกตัวอักษรให้มากที่สุดครั้งที่แล้ว) ผนวกตัวอักษรต่อไปนี้เข้ากับคำ ดังนั้นคำแรกของเราจะaaตามมาด้วย2hซึ่งหมายถึง "คัดลอกตัวอักษรสองตัวแรกของaaและผนวกh" aahการขึ้นรูป จากนั้นก็3edจะกลายเป็นaahedและตั้งแต่บรรทัดถัดไปไม่ได้มีจำนวนที่เราคัดลอก 3 aahingตัวอักษรอีกครั้งเพื่อรูปแบบ กระบวนการนี้จะดำเนินต่อไปตลอดพจนานุกรมที่เหลือ คำที่เป็นผลลัพธ์จากอินพุตตัวอย่างขนาดเล็กคือ: aa aah aahed aahing aahs aal aaliis aals aardvark aardvarks aardwolf aardwolves ความท้าทายของคุณคือการเปิดออกในไม่กี่ไบต์เท่าที่จะทำได้ สายของท่านแต่ละคนจะมีศูนย์หรือมากกว่าตัวเลขตามด้วยหนึ่งหรือมากกว่าตัวอักษรตัวพิมพ์เล็ก0-9 a-zคุณอาจใช้เวลาเข้าและส่งออกให้เป็นทั้งรายการของสตริงหรือเป็นสายเดียวด้วยคำพูดที่แยกจากกันโดยตัวละครอื่น ๆ กว่าใด ๆ/0-9a-z นี่คืออีกกรณีทดสอบขนาดเล็กที่มีกรณีขอบไม่กี่ไม่ครอบคลุมในตัวอย่าง: abc cba …
42 code-golf  string 

30
คนที่ข่วนข่วน
ท้าทาย: ใช้สตริงของตัวอักษรตัวพิมพ์ใหญ่หรือตัวเล็กเป็นอินพุต (เป็นทางเลือก) และคำนวณคะแนนที่สตริงจะได้รับในเกมScrabble เป็นภาษาอังกฤษ กฎ: คะแนนของตัวอักษรแต่ละตัวมีดังนี้ (ใช้สิ่งนี้แม้ว่าจะมีเกมเวอร์ชั่นอื่น): 1 point: E, A, I, O, N, R, T, L, S, U 2 points: D, G 3 points: B, C, M, P 4 points: F, H, V, W, Y 5 points: K 8 points: J, X 10 points: Q, Z คะแนนของสตริงเป็นเพียงผลรวมของคะแนนของตัวอักษรแต่ละตัวที่ใช้ คุณอาจคิดว่าคุณมีแผ่นกระเบื้องมากมายคำที่ยาวมากและคำที่มีตัวอักษรเดียวกันหลายตัวเป็นอินพุตที่ถูกต้อง …

6
เห็นภาพดวงตาที่มองเห็น
คุณอาจจำหรือไม่จำ Xeyes โปรแกรมสาธิตที่มาพร้อมกับ (และเท่าที่ฉันรู้ยังมาพร้อมกับ) ระบบ X window วัตถุประสงค์คือเพื่อวาดดวงตาคู่หนึ่งที่ตามเคอร์เซอร์เมาส์ของคุณ: ความท้าทายของคุณคือสร้าง Xeyes ใหม่ด้วย ASCII art เขียนโปรแกรมหรือฟังก์ชั่นที่ดึงดูดสายตาแบบ ASCII สองตา (ที่ระบุด้านล่าง) ไม่ว่าผู้ใช้จะคลิกที่ใดจากนั้นเลื่อนลูกศิษย์ของพวกเขาให้ชี้ไปในทิศทางของเคอร์เซอร์ GIF ด้านบนเป็นการบันทึกการใช้งาน Ruby ที่ไม่ได้ตีกอล์ฟซึ่งสามารถเรียกใช้กับ Ruby เวอร์ชันล่าสุดได้ คุณอาจพบว่ามีประโยชน์สำหรับการอ้างอิงสำหรับลำดับการควบคุม Xterm ข้อมูลจำเพาะ นี่คือรหัสกอล์ฟดังนั้นการแก้ปัญหาด้วยจำนวนไบต์น้อยที่สุดจะเป็นผู้ชนะ นี้เป็นASCII ศิลปะท้าทายเพื่อให้โปรแกรมของคุณจะต้องวาดโดยใช้อักขระ ASCII โดยเฉพาะอักขระ-, ., |, ', 0พื้นที่และขึ้นบรรทัดใหม่ 1 2 นี่เป็นความท้าทายแบบโต้ตอบดังนั้นโปรแกรมของคุณต้องยอมรับอินพุตและวาดผลลัพธ์ในแบบเรียลไทม์ 3 ก่อนที่โปรแกรมของคุณจะเริ่มรับอินพุตควรเริ่มต้นผืนผ้าใบว่างเปล่าอย่างน้อย 20 แถวและ 20 คอลัมน์ ไม่ควรวาดอะไรจนกว่าผู้ใช้จะคลิกบนพื้นที่วาดภาพ เมื่อใดก็ตามที่ผู้ใช้คลิก4บนผืนผ้าใบโปรแกรมควรล้างเอาต์พุตก่อนหน้าใด ๆ จากนั้นดึง ASCII …

30
Enklactify สตริงเหล่านี้
แรงบันดาลใจจากห่วงโซ่ความคิดเห็นนี้ ... ฉันต้องการenklactออกจากความท้าทายนี้ แต่ฉันไม่สามารถ ... @ETHproductions เพื่อ enklact (v): เพื่อใช้ตารางการค้นหาโดยใช้ส่วนย่อยที่ประกอบด้วยองค์ประกอบที่ไม่ซ้ำกัน Enklacting เป็นวิธีที่มีประโยชน์มากในการบีบอัดตารางการค้นหา ตัวอย่างเช่นสมมติว่าคุณมีรายการสีดังต่อไปนี้: red green blue yellow purple orange หากคุณต้องการให้สีเป็นอินพุตและส่งคืนดัชนีในรายการนี้มีวิธีที่ตรงไปตรงมา: ["red", "green", "blue", "yellow", "purple", "orange"].index(input()) แต่มีวิธีที่เราสามารถทำได้ในทางที่น้อยกว่าไบต์: "rgbypo".index(input()[0]) สิ่งนี้ได้ผลเพราะดัชนีแรก (หรือ 0'th) ของแต่ละสตริงนั้นไม่ซ้ำกัน ตัวอย่างนี้ชัดเจน แต่บางครั้งก็ยากขึ้นเล็กน้อย ถ้าเราต้องการสร้างตารางการค้นหาสำหรับรายการนี้ Sweet Onion Chicken Teriyaki Oven Roasted Chicken Turkey Breast Italian BMT Tuna Black Forest Ham …
42 code-golf  string 

16
มันจะมีขนาดเล็กแค่ไหน?
เริ่มต้นด้วยเลขจำนวนเต็มบวกNให้หาจำนวนเต็มที่น้อยที่สุดN 'ซึ่งสามารถคำนวณได้โดยการหารNซ้ำโดยหนึ่งในหลัก (ในฐาน -10) แต่ละหลักที่เลือกจะต้องเป็นตัวหารของNมากกว่า1 1 ตัวอย่างที่ 1 ผลลัพธ์ที่คาดหวังสำหรับN = 230คือN '= 23 : ตัวอย่างที่ 2 ผลลัพธ์ที่คาดหวังสำหรับN = 129528คือN '= 257 : ระวังเส้นทางที่ไม่เหมาะสม! เราสามารถเริ่มต้นด้วย129528/9 = 14392แต่นั่นจะไม่นำไปสู่ผลลัพธ์ที่เล็กที่สุดที่เป็นไปได้ สิ่งที่ดีที่สุดที่เราสามารถทำได้ถ้าเราหารด้วย 9 เป็นครั้งแรก: กฎระเบียบ อินพุตสามารถนำมาในรูปแบบที่เหมาะสม (จำนวนเต็ม, สตริง, อาร์เรย์ของตัวเลข, ... ) นี่คือโค้ดกอล์ฟดังนั้นคำตอบที่สั้นที่สุดในจำนวนไบต์ชนะ! กรณีทดสอบ 1 --> 1 7 --> 1 10 --> 10 24 --> 1 …

20
ฉันจะออกเป็นกลุ่มได้อย่างไร
Vim เป็นตัวแก้ไขข้อความที่ยอดเยี่ยมสำหรับระบบยูนิกซ์ แต่มันก็มีชื่อเสียงในเรื่องยากที่จะออก เขียนโปรแกรมเต็มรูปแบบที่จะส่งออก:qเพื่อออกเป็นกลุ่ม จากนั้นคุณควรอ่านอินพุตหนึ่งบรรทัดเนื่องจากจะได้รับพร้อมต์ bash ซึ่งในกรณีที่การออกสำเร็จหรือข้อผิดพลาดซึ่งในกรณีที่มีการเปลี่ยนแปลงที่ยังไม่ได้บันทึก bash prompt จะเป็นดังนี้: E37@vimmachine: /var/override) ในขณะที่ข้อผิดพลาดจะเป็นดังนี้: E37: No write since last change (add ! to override) เมื่อได้รับพรอมต์ bash งานของโปรแกรมจะเสร็จสิ้นและไม่ควรให้เอาต์พุตใด ๆ เพิ่มเติม (ยกเว้นช่องว่าง) เมื่อได้รับข้อผิดพลาดโปรแกรมของคุณควรสุ่ม (เช่นความเป็นไปได้แต่ละอย่างมีความน่าจะเป็นไม่เลือกศูนย์) :q!เพื่อออกโดยไม่บันทึกหรือ:xเพื่อบันทึกและออก นี่คือโค้ดกอล์ฟที่มีจำนวนน้อยที่สุดในแต่ละภาษาที่ชนะ!
42 code-golf 

4
f (g (x)) ลดลงในขณะที่ g (f (x)) เพิ่มขึ้น
สำหรับความท้าทายนี้คุณต้องใช้ฟังก์ชั่นสองอย่างคือfและgบนจำนวนเต็มเช่นf ∘ gเป็นฟังก์ชันที่ลดลงอย่างเคร่งครัดในขณะที่g ∘ fเป็นฟังก์ชันที่เพิ่มขึ้นอย่างเข้มงวด ในคำอื่น ๆ ถ้าคุณใช้เวลาสองจำนวนเต็ม<bแล้วf (กรัม (ก))> f (กรัม (ข))และG (f (ก)) <กรัม (f (ข)) ไม่มีข้อ จำกัด เกี่ยวกับfและgแยกกันยกเว้นว่าแต่ละแผนที่ต้องมีจำนวนเต็มหนึ่งเป็นจำนวนเต็มอื่น โปรดระบุคำอธิบายสั้น ๆ ของfและgและเหตุผลว่าทำไมพวกเขาถึงมีคุณสมบัติที่ต้องการ เครดิต:ความท้าทายนี้ได้รับแรงบันดาลใจจากปัญหาในการแข่งขันคณิตศาสตร์ระดับปริญญาโทสาขาคณิตศาสตร์โรมาเนียปี 2011 (ซึ่งถามในสิ่งเดียวกัน แต่ตามจำนวนจริงแทนที่จะเป็นจำนวนเต็ม) หากคุณต้องการสปอยเลอร์จริงๆตอนนี้คุณรู้ว่าจะค้นหาอะไร กฎระเบียบ คำว่า "ฟังก์ชั่น" ในการท้าทายนี้ควรนำมาใช้ในเชิงคณิตศาสตร์ในการทำแผนที่จำนวนเต็มหนึ่งไปยังอีกจำนวนหนึ่ง: คุณอาจเขียนโปรแกรมสองโปรแกรมหรือสองฟังก์ชั่นและใช้วิธีการมาตรฐานใด ๆ ในการรับอินพุต คุณอาจใช้การแทนค่าสตริงของจำนวนเต็มแทนที่จะเป็นตัวแปรจำนวนเต็มจริง แต่ประเภทของอินพุตและเอาต์พุตควรเหมือนกันดังนั้นฟังก์ชันสามารถประกอบได้โดยไม่ต้องแปลงประเภทด้วยตนเองในระหว่างนั้น โปรดจำไว้ว่าในทางแนวคิดแล้วfและgยังคงต้องมีฟังก์ชั่นใน can't ดังนั้นคุณจึงไม่สามารถโกงได้โดยใช้การแทนค่าสตริงสองแบบที่มีหมายเลขเดียวกันหรืออะไรทำนองนั้น โปรดจำไว้ว่าฟังก์ชั่นอาจไม่ได้ตั้งชื่อตราบเท่าที่ไม่จำเป็นต้องใช้ชื่อของตัวเองหรือฟังก์ชั่นอื่นที่คุณกำหนด หากคุณตั้งชื่อฟังก์ชั่นหนึ่งหรือทั้งสองอย่างคุณอาจสันนิษฐานว่ามันมีอยู่ในโปรแกรมเดียวกันเพื่อให้สามารถอ้างถึงฟังก์ชั่นอื่น ๆ (เช่นdef f(x): return -g(x)ใน Python) ใช้กฎโอเวอร์โฟลว์จำนวนเต็มตามปกติ: …

30
ฉันเป็นวิศวกรหรือไม่
เมื่อเร็ว ๆ นี้วิศวกรไฟฟ้ากำลังศึกษากำหนดเวลาสัญญาณไฟจราจรถูกปรับ $ 500 โดยรัฐโอเรกอนสำหรับการอ้างอิงถึงตัวเองในฐานะวิศวกร รับสายอักขระ 2 ตัวเป็นอินพุตซึ่งแทนสถานะของสหรัฐอเมริกาเอาต์พุต: I am not an engineerถ้ารัฐโอเรกอน ( OR) I am an engineer ถ้ารัฐเป็นรัฐอื่น ๆ ของสหรัฐอเมริกา What is an engineer? ได้รับการป้อนข้อมูลอื่น ๆ ผลลัพธ์อาจไม่มีช่องว่างนำหน้า แต่อาจมีช่องว่างต่อท้ายมากเท่าที่คุณต้องการ คุณสามารถสมมติว่าการป้อนข้อมูลจะเป็นตัวอักษรตัวพิมพ์ใหญ่ 2 ตัวเสมอ นี่คือรายการของตัวย่อทั้งหมด 50 รัฐของสหรัฐอเมริกา: AL, AK, AZ, AR, CA, CO, CT, DE, FL, GA, HI, ID, IL, …

2
สถาปนิกเรือนจำรุ่น ASCII
นี่คือแผนภาพของคุกที่ใช้อักขระ ASCII: +------------------------------+ | | | X X | | | | D D | | | | | | X X X | | | +------------------------------+ ผนังทำจากตัวอักษรไปป์|ขีดกลาง-และเสา+สำหรับมุมและทางแยก นอกจากนี้ยังมีประตูสองบานที่มีเครื่องหมายD(ซึ่งมักจะอยู่บนผนังด้านซ้ายและขวา) Xคุกเต็มไปด้วยผู้คนที่น่ากลัวที่มีเครื่องหมาย เป้าหมายคือการสร้างกำแพงเพื่อตอบสนองต่อไปนี้: แต่ละคนอยู่ในที่คุมขังเดี่ยว มีทางเดินวิ่งระหว่างสองประตู แต่ละเซลล์มีหนึ่งประตูซึ่งเชื่อมต่อโดยตรงกับทางเดินหลัก พื้นที่ทั้งหมดในคุกนั้นถูกใช้โดยเซลล์และทางเดิน แต่ละเซลล์มีบุคคล (นั่นคือไม่มีเซลล์ว่าง) ทางเดินเป็นเส้นทางเดียวไม่แยกออกและมีความกว้างหนึ่งอักขระเสมอ นี่คือทางออกสำหรับคุกด้านบน: +---------+--------------------+ | | | | X | X | | | …

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