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

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

8
เห็นภาพตัวหารร่วมมาก
พื้นหลัง ตัวหารทั่วไปที่ยิ่งใหญ่ที่สุด ( gcdสำหรับระยะสั้น) เป็นฟังก์ชันทางคณิตศาสตร์ที่สะดวกเนื่องจากมีคุณสมบัติที่มีประโยชน์มากมาย หนึ่งในนั้นคือเอกลักษณ์ของเบซู : ถ้าd = gcd(a, b)แล้วมีอยู่ integers xและเช่นว่าy d = x*a + y*bในความท้าทายนี้งานของคุณคือการเห็นภาพคุณสมบัตินี้ด้วยศิลปะ ASCII แบบง่าย อินพุต อินพุตของคุณเป็นจำนวนเต็มบวกสองจำนวนaและbกำหนดในรูปแบบที่เหมาะสม คุณยังสามารถรับอินพุตแบบยูนารี (การทำซ้ำอักขระ ASCII ที่พิมพ์ได้เดียวที่คุณเลือก) แต่คุณจะต้องสอดคล้องและใช้รูปแบบเดียวกันสำหรับอินพุตทั้งสอง อินพุตอาจอยู่ในลำดับใดก็ได้และอาจเท่ากัน เอาท์พุต ผลลัพธ์ของคุณคือสตริงที่มีsความยาวlcm(a, b) + 1( lcmหมายถึงตัวคูณสามัญต่ำสุด) ตัวละครของsแทนจำนวนเต็มจากไป0 lcm(a, b)ตัวละครs[i]เป็นตัวพิมพ์เล็กoถ้าiเป็นหลายaหรือbและเป็นระยะเวลา.อื่น โปรดทราบว่าศูนย์เป็นจำนวนมากของทุกหมายเลข ตอนนี้เพราะเอกลักษณ์ของเบซูจะมีอย่างน้อยหนึ่งคู่ของตัวละครoในที่มีระยะทางตรงs gcd(a, b)คู่ซ้ายสุดดังกล่าวจะถูกแทนที่ด้วยตัวพิมพ์ใหญ่Os นี่คือผลลัพธ์สุดท้าย ตัวอย่าง พิจารณาปัจจัยการผลิตและa = 4 b = 6แล้วเรามีgcd(a, b) …

12
เงินปันผลหนึ่งศูนย์
คำอธิบายการท้าทาย สำหรับทุกจำนวนเต็มบวกnมีอยู่เป็นจำนวนมากที่มีรูปแบบของ111...10...000ที่หารด้วยnเช่นตัวเลขทศนิยมที่เริ่มต้นด้วยทั้งหมด1's และสิ้นสุดที่มีทั้งหมด0ของ นี่เป็นเรื่องง่ายมากที่จะพิสูจน์: ถ้าเราใช้n+1จำนวนตัวเลขที่แตกต่างกันในรูปของ111...111(ทั้งหมด1) จากนั้นอย่างน้อยสองคนจะให้ส่วนที่เหลือเหมือนกันหลังจากการหารด้วยn(ตามหลักการของนกพิราบ) ความแตกต่างของตัวเลขสองตัวนี้จะหารด้วยnและจะมีรูปแบบที่ต้องการ www.games501.com ฟรีเป้าหมายของคุณคือการเขียนโปรแกรมที่พบหมายเลขนี้ คำอธิบายอินพุต จำนวนเต็มบวก คำอธิบายผลลัพธ์ ตัวเลขpในรูปแบบของ111...10...000เช่นนั้นp ≡ 0 (mod n)เช่นว่าหากคุณพบมากกว่าหนึ่ง - แสดงใด ๆ ของพวกเขา (ไม่จำเป็นต้องเล็กที่สุด) หมายเหตุ โปรแกรมของคุณจะต้องให้คำตอบในเวลาที่เหมาะสม ซึ่งหมายความว่าไม่อนุญาตให้ใช้กำลังเดรัจฉาน: p = 0 while (p != 11..10.00 and p % n != 0) p++ ไม่เป็นอย่างนี้: do p = random_int() while (p != 11..10.00 and p …

30
เครื่องคิดเลขการดำเนินการจำนวนเต็มง่าย
ใช้เครื่องคิดเลขแบบสคริปต์การดำเนินการจำนวนเต็มอย่างง่าย แนวคิด ตัวสะสมเริ่มต้นที่ 0 และมีการดำเนินการกับมัน ในตอนท้ายของโปรแกรมเอาท์พุทค่าของการสะสม การดำเนินงาน: +เพิ่ม1การสะสม -ลบออก1จากตัวสะสม * คูณตัวสะสมด้วย 2 / หารตัวสะสมด้วย 2 สคริปต์ตัวอย่าง การป้อนข้อมูลที่ควรให้การส่งออก++**--/3 ตัวอย่างการนำไปใช้ def calc(s) i = 0 s.chars.each do |o| case o when '+' i += 1 when '-' i -= 1 when '*' i *= 2 when '/' i /= 2 end end …

23
สรุปผลด้วยสามเหลี่ยมดิจิทัล
เอาไปรวมกันจริงๆ เขียนโปรแกรมหรือฟังก์ชั่นที่รับรายการเลขจำนวนเต็มฐานสิบ (0-9) ที่ไม่มีข้อยกเว้นและส่งออก "สามเหลี่ยม" ที่ชี้ลงของตัวเลขพร้อมรายการอินพุตที่ด้านบนซึ่งทุกหลักหลังจากบรรทัดแรกคือผลรวมของตัวเลขสองหลัก ด้านบนมันโมดูโล 10 ตัวอย่างเช่นอินพุต[7, 5, 0, 9]มีเอาต์พุต 7 5 0 9 2 5 9 7 4 1 เพราะ2เป็น(7 + 5) mod 10, 5คือ(5 + 0) mod 10, 9เป็น(0 + 9) mod 10เป็นต้นไปทางความเป็นอยู่1(7 + 4) mod 10 หากรายการมีเพียงหนึ่งรายการดังนั้นผลลัพธ์จะตรงกับอินพุต เช่นการป้อนข้อมูลของความ[4]ประสงค์ 4 นี่คือตัวอย่างเพิ่มเติม: [0] 0 [1, 2] 1 …

18
เป็นหรือไม่เป็น
ในไบต์ที่น้อยที่สุดที่เป็นไปได้ตรวจสอบว่าค่าสองค่าที่กำหนดให้แต่ละคู่ตรงกันอย่างใดอย่างหนึ่งต่อไปนี้: ค่าแรก 2 string or integer - whichever you prefer to case insensitive too case insensitive two case insensitive t0 case insensitive (t zero) ค่าที่สอง b case insensitive be case insensitive bee case insensitive b3 case insensitive ตัวอย่าง 2 'Bee' true '2' 'b' true 'not to' 'be' false 'that is' …
28 code-golf  string 

25
ดัชนีของอาร์เรย์หลายมิติ
ภาษาระดับต่ำกว่าเช่น C และ C ++ จริง ๆ แล้วไม่มีแนวคิดของอาร์เรย์หลายมิติ (นอกเหนือจากเวกเตอร์และอาร์เรย์แบบไดนามิก) เมื่อคุณสร้างอาร์เรย์หลายมิติด้วย int foo[5][10]; นี้เป็นจริงเพียงแค่น้ำตาลประโยค สิ่งที่ C ทำจริงๆคือสร้างอาเรย์เดี่ยวที่ต่อเนื่องกันขององค์ประกอบ5 * 10 นี้ foo[4][2] ยังเป็นน้ำตาล syntactic นี่หมายถึงองค์ประกอบที่ 4 * 10 + 2 หรือองค์ประกอบที่ 42 โดยทั่วไปดัชนีขององค์ประกอบ[a][b]ในอาร์เรย์foo[x][y]อยู่ที่ a * y + b แนวคิดเดียวกันนี้ใช้กับอาร์เรย์ 3 มิติ ถ้าเรามีfoo[x][y][z]และเราเข้าถึงองค์ประกอบ[a][b][c]เราเข้าถึงองค์ประกอบจริงๆ: a * y * z + b * z + …

30
ค้นหาจำนวนที่เล็กที่สุดที่ใหญ่กว่าอินพุทที่มีผลรวมดิจิตอลเป็นอินพุท
"ผลรวมดิจิตอล" หมายถึงผลรวมของตัวเลขทั้งหมดในจำนวน ยกตัวอย่างเช่นผลรวมดิจิตอล1324เป็นเพราะ101+3+2+4 = 10 ความท้าทายคือการเขียนโปรแกรม / ฟังก์ชั่นเพื่อคำนวณจำนวนที่เล็กที่สุดที่ใหญ่กว่าอินพุทที่มีผลรวมดิจิตอลเป็นอินพุท ตัวอย่างที่มีคำแนะนำแบบ ยกตัวอย่างเช่นใช้ตัวเลข9เป็นอินพุต: 9 = 1+8 -> 18 9 = 2+7 -> 27 9 = 3+6 -> 36 ... 9 = 8+1 -> 81 9 = 9+0 -> 90 18เอาท์พุทที่ถูกต้องจะเป็นจำนวนที่น้อยที่สุดดังกล่าวข้างต้นซึ่งเป็น รายละเอียด โปรดทราบว่า9ไม่ใช่เอาต์พุตที่ถูกต้องสำหรับตัวอย่างนี้เนื่องจากหมายเลขที่กลับจะต้องมากกว่าจำนวนเดิม โปรดทราบว่าอินพุตจะเป็นค่าบวก การทดสอบกรณี: 2 => 11 (2 = 1 + 1) 8 …

30
ไบต์ / ตัวอักษร
งาน รับสตริง UTF-8 (โดยวิธีการใด ๆ ) คำตอบ (โดยวิธีการใด ๆ ) รายการเทียบเท่าที่ทุกองค์ประกอบเป็นจำนวนไบต์ที่ใช้ในการเข้ารหัสตัวอักษรที่สอดคล้องกัน ตัวอย่าง ! → 1 Ciao → 1 1 1 1 tʃaʊ → 1 2 1 2 Adám → 1 1 2 1 ĉaŭ→ 2 1 2(ตัวอักษรเดียว) ĉaŭ→ 1 2 1 1 2(ใช้การรวมภาพซ้อนทับ) チャオ → 3 3 3 (อินพุตว่าง) → …

3
สี่ก้าวไปทางซ้าย: งูพิษ สี่ก้าวไปทางขวา: หน้าผา อย่าตาย!
บทนำ สมมติว่าช่วงเวลาที่งูพิษและหน้าผาอยู่ห่างออกไปเพียงสองก้าวแทนที่จะเป็นสามขั้น o --- Hsss! | ';;' ___ /_\ ___ _ | น่าเสียดายที่คุณเป็นเชลยของผู้ทรมานซาดิสต์ คุณจะต้องเดินไปทางซ้ายหรือขวาทุกก้าว ถ้าคุณทำไม่ได้พวกเขาจะยิงคุณตายทันที คุณได้รับอนุญาตให้วางแผนขั้นตอนของคุณล่วงหน้า แต่เมื่อคุณทำตามขั้นตอนแรกคุณจะไม่สามารถเปลี่ยนแผนได้ (และไม่มีเสียงดังอืดอาดเช่นกันพวกมันจะยิงคุณ) ทันใดนั้นความคิดที่สดใสก็มาถึงใจ ... Ah! ฉันสามารถสลับก้าวไปทางซ้ายและขวาได้! ขั้นตอนที่ถูกต้องขั้นตอนที่เหลือขั้นตอนที่ถูกต้องขั้นตอนที่เหลือและอื่น ๆ ... อ่าอาไม่เร็วนัก อย่างที่ฉันพูดผู้ทรมานนั้นเป็นพวกซาดิสต์ พวกเขาจะเลือกไม่ว่าคุณจะทำทุกขั้นตอนหรือทุกขั้นตอนที่สองหรือทุกขั้นตอนที่สามเป็นต้น ดังนั้นหากคุณเลือกอย่างไร้เดียงสาลำดับแล้วพวกเขาสามารถบังคับให้คุณใช้เวลาทุกขั้นตอนที่สองซึ่งจะเริ่มต้นด้วยRLRLRL... LLเอ่อโอ้! คุณถูกงูพิษกัด! ความมืดปกคลุมคุณและทุกอย่างก็จางหายไป ... ที่จริงแล้วคุณยังไม่ตาย คุณยังต้องเกิดขึ้นกับแผนของคุณ หลังจากคิดถึงเรื่องนี้สักครู่คุณก็ตระหนักว่าคุณกำลังถูกลงโทษ ไม่มีวิธีการวางแผนขั้นตอนต่าง ๆ ที่จะรับประกันความอยู่รอดของคุณ RLLRLRRLLRRดีที่สุดที่คุณสามารถขึ้นมามี 1สิบเอ็ดขั้นตอนที่ปลอดภัยและไม่มาก หากขั้นตอนที่สิบสองคือRTorturer จะทำให้คุณทำทุกขั้นตอนและจากนั้นสามขั้นตอนสุดท้ายจะส่งคุณออกจากหน้าผา หากขั้นตอนที่สิบสองคือLผู้ทรมานจะทำให้คุณทำทุกขั้นตอนที่สาม ( LRLL) ซึ่งจะทำให้คุณถูกต้องในฝูงของงูพิษและกัดกัดตายของพวกเขา คุณเลือกRเป็นขั้นตอนที่สิบสองหวังที่จะชะลอการตายให้นานที่สุด ด้วยเสียงคำรามในหูของคุณคุณสงสัยในตัวเอง ... …

19
สร้างบันได ASCII
ได้รับการป้อนข้อมูลของจำนวนเต็มnและม.เอาท์พุทบันได ASCII ของความยาว nและขนาดเมตร นี่คือบันได ASCII ของความยาว 3 และขนาด 3: o---o | | | | | | +---+ | | | | | | +---+ | | | | | | o---o นี่คือบันได ASCII ที่มีความยาว 5 และขนาด 1: o-o | | +-+ | | +-+ | | +-+ | | …

10
Heterograms, Palindromes, โอ้!
(ความท้าทายแรกโปรดแจ้งให้เราทราบหากมีปัญหาใด ๆ กับมัน) heterogramเป็นคำที่ตัวอักษรไม่เกิดขึ้นมากกว่าหนึ่งครั้งและpalindromeเป็นวลีที่เป็นไปข้างหลังเหมือนกันและไปข้างหน้า ความท้าทายที่นี่คือการเขียนโค้ดที่ใช้คำ (ตัวอักษร) เป็นอินพุตและแสดงผลว่าเป็น heterogram (ความจริง / เท็จ) หรือไม่ สิ่งที่จับได้คือโปรแกรมจะต้องเป็นแบบ palindrome - อ่านย้อนหลังและไปข้างหน้าเหมือนกัน การใช้อักษรตัวพิมพ์ใหญ่ไม่สำคัญที่นี่ดังนั้นเพื่อให้ heterogram มีความถูกต้องจะต้องไม่มีทั้ง q และ Q ไม่อนุญาตให้มีความคิดเห็นและคุณไม่สามารถวางสตริงที่มีรหัสของคุณ (หรือส่วนสำคัญของรหัสของคุณ) เพื่อพยายามทำให้ส่วน palindrome ง่าย: P นี่คือรหัส - กอล์ฟดังนั้นรหัสที่สั้นที่สุดจึงชนะ โชคดี! แก้ไข: Parens วงเล็บหรือสัญลักษณ์อื่น ๆ ที่มีรูปแบบซ้ายและขวาจะต้องกลับรายการที่น่ากลัวสำหรับส่วน palindrome ดังนั้น (helloolleh) คือ palindrome แต่ (helloolleh (ไม่ใช่) เห็นได้ชัดว่านี่เรียกว่า palindrome ที่สะดวก แก้ไข 2: …

30
ย้อนกลับสตริงในขณะที่รักษาตัวพิมพ์ใหญ่ในที่เดียวกัน
เป้าหมายที่นี่คือการย้อนกลับสตริงด้วยการหมุนเพียงครั้งเดียว: รักษาตัวพิมพ์ใหญ่ให้อยู่ในที่เดียวกัน ตัวอย่างอินพุต 1: Hello, Midnightas เอาต์พุตตัวอย่าง 1:SathginDim ,olleh ตัวอย่างอินพุต 2: .Q Exmaple เอาต์พุต 2:q. กฎระเบียบ : เอาต์พุตไปยัง STDOUT อินพุตจาก STDIN ผู้ชนะจะถูกเลือกวันที่ 13 กรกฎาคมใน GMT + 3 12:00 (หนึ่งสัปดาห์) อินพุตอาจประกอบด้วยสัญลักษณ์ ASCII เท่านั้นทำให้โปรแกรมที่ไม่ใช้การเข้ารหัสที่มีอักขระที่ไม่ใช่ ASCII ได้ง่ายขึ้น เครื่องหมายวรรคตอนใด ๆ ที่สิ้นสุดในตำแหน่งที่มีตัวอักษรตัวพิมพ์ใหญ่ต้องถูกละเว้น
28 code-golf  string 

15
แสดงให้เห็นถึงสแควร์ของทวินาม
ได้รับ (โดยวิธีการใด ๆ ) สองจำนวนธรรมชาติที่แตกต่างกัน (ขนาดใด ๆ ที่เหมาะสม), เอาท์พุท (โดยวิธีการใด ๆ ) กำลังสองของผลรวมของพวกเขาดังในตัวอย่างด้านล่าง: รับ 4 และ 3 ผลลัพธ์: 12 12 12 12 9 9 9 12 12 12 12 9 9 9 12 12 12 12 9 9 9 16 16 16 16 12 12 12 16 16 16 16 …

1
ค้นหาพื้นที่ของรูปหลายเหลี่ยมนูนที่ใหญ่ที่สุด
รับรายการพิกัดจำนวนเต็มค้นหาพื้นที่ของรูปหลายเหลี่ยมนูนที่ใหญ่ที่สุดที่คุณสามารถสร้างจากรายการดังกล่าวที่ - จุดสุดยอดทุกอันอยู่ในรายการ ไม่มีองค์ประกอบของรายการอยู่ในรูปหลายเหลี่ยม ตัวอย่าง: (0, 0) (8, 0) (0, 1) (3, 1) (7, 1) (1, 2) (5, 2) (9, 2) (9, 2) (2, 3) (5, 3) (7, 3) (3, 4) (5, 5) (11, 5) มองเห็น: o o o o o o o o o o o o o o …

2
แปลง Brainfuck เป็น MarioLANG
MarioLANGเป็นภาษาโปรแกรมสองมิติที่ซอร์สโค้ดคล้ายกับระดับ Super Mario Bros. นอกจากนี้ชุดคำสั่งของมันจะคล้ายกับbrainfuck 's ซึ่งหมายความว่า MarioLANG นั้นเป็นสมอง 2 มิติที่ตัวชี้คำสั่งเคลื่อนไหวเหมือนมาริโอ ดังนั้นเมื่อฉันเขียนการยื่น MarioLANGสำหรับแบบทดสอบภาษาโปรแกรมฉันเริ่มต้นด้วยการแปลง Brainfuck "Hello, World!" โปรแกรมเพื่อ MarioLANG ฉันสังเกตเห็นว่าสิ่งนี้เป็นไปได้ด้วยกระบวนการที่เป็นระบบดังนั้นลองเขียนคอมไพเลอร์ Brainfuck-to-MarioLANG กัน! หมายเหตุ: MarioLANG สเปคไม่ได้เป็นที่ชัดเจนอย่างสิ้นเชิงดังนั้นฉันสมมติว่าการตีความของการดำเนินงานทับทิม ฉันจะอธิบายกระบวนการด้วยโปรแกรม Brainfuck ต่อไปนี้: ++[>+++++[>+++++++>++++++++++>+++>+<<<<-]<-]>>++.>+.+++++++..+++.>+++.>. มันพิมพ์Hello!และขึ้นบรรทัดใหม่ต่อท้าย แปลง<และ>เป็น(และ)ตามลำดับ: ++[)+++++[)+++++++)++++++++++)+++)+((((-](-]))++.)+.+++++++..+++.)+++.). เพิ่มพื้นสำหรับมาริโอเพื่อเดินบน: ++[)+++++[)+++++++)++++++++++)+++)+((((-](-]))++.)+.+++++++..+++.)+++.). ======================================================================== ตอนนี้ปัญหาคือ MarioLANG ไม่ได้มีลูปเช่นและ[ ]แต่เราต้องใช้ลิฟต์และคำแนะนำเพื่อให้มาริโอเดินวนเป็นวงกลม ครั้งแรกที่เราเข้ามาแทนที่[ด้วยและเปลี่ยนไปที่พื้น> "และเรายังแทนที่]ด้วย[!และเปลี่ยนพื้นเพื่อ=#: ++>)+++++>)+++++++)++++++++++)+++)+((((-[!(-[!))++.)+.+++++++..+++.)+++.). =="======"===============================#===#============================ "และ#สามารถสร้างลิฟท์ (เริ่มต้นจาก#ตอนจบที่") ดังนั้นตอนนี้สิ่งที่เราต้องการจะเสริมชั้นสำหรับมาริโอที่จะเดินกลับมาที่ การเริ่มต้นด้วย!และสิ้นสุดด้วย<: ++>)+++++>)+++++++)++++++++++)+++)+((((-[!(-[!))++.)+.+++++++..+++.)+++.). =="======"===============================#===#============================ ! < …

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