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

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

8
สตริงการสร้างที่สั้นที่สุด
สตริงx สร้างสตริงyถ้าyเป็น substring xของซ้ำไม่มีที่สิ้นสุดของ ยกตัวอย่างเช่นสร้างabcbcabcab เขียนโปรแกรมเพื่อค้นหาสตริงที่สั้นและสั้นที่สุดที่จะสร้างอินพุต คุณจะได้รับข้อความเดียวบรรทัดเดียวในอินพุตมาตรฐาน คุณควรพิมพ์สตริงการสร้างไปยังเอาต์พุตมาตรฐาน ตัวอย่างเช่น: อินพุต bcabcabca เอาท์พุต abc รหัสที่สั้นที่สุดชนะ คุณอาจสันนิษฐานว่าการป้อนข้อมูลมีเพียงตัวอักษร az (และขึ้นบรรทัดใหม่ต่อท้ายหากคุณต้องการ)

23
เยื้องสตริงโดยใช้วงเล็บที่กำหนด
กำหนดอินพุตต่อไปนี้ให้กับโปรแกรม: รายการอักขระเริ่มบล็อก รายการอักขระสิ้นสุดบล็อก สตริงที่จะจัดรูปแบบ จัดรูปแบบสตริงด้วยบล็อกที่คั่นด้วยชุดอักขระสองเยื้อง การจัดรูปแบบเสร็จสิ้นด้วยสองช่องว่างต่อระดับและวางวงเล็บไว้ตามที่แสดงในตัวอย่างด้านล่าง คุณอาจคิดว่าชุดของการเปิดและปิดตัวละครที่จะ disjoint เช่นสำหรับ{[(<และ}])>เป็นชุดอักขระการเปิดและปิดและสตริงต่อไปนี้: abc{xyz{text[note{comment(t{ex}t)abc}]}} ผลลัพธ์ต่อไปนี้จะถูกคาดหวัง: abc { xyz { text [ note { comment ( t { ex } t ) abc } ] } } คุณไม่สามารถเขียนรหัสรายการอักขระ“ วงเล็บ” ได้ยาก แม้ว่าจะไม่ได้ระบุอินพุตให้ แต่; นี่อาจเป็นอาร์กิวเมนต์บรรทัดคำสั่งหรือผ่านอินพุตมาตรฐานตามที่คุณต้องการ

10
เคล็ดลับสำหรับการเล่นกอล์ฟใน Clojure
คุณมีเคล็ดลับอะไรในการตีกอล์ฟโดยใช้ Clojure จุดประสงค์ของคำถามนี้คือการรวบรวมรายชื่อของเทคนิคที่เฉพาะเจาะจงกับ Clojure และสามารถนำมาใช้ในปัญหาการเล่นกอล์ฟทั่วไป
16 code-golf  tips  lisp 

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

9
ตัวเลขหลักสุดท้ายของพลังของ 2
สำหรับจำนวนเต็มใด ๆrrrจะมีกำลัง 2 ซึ่งแต่ละหลักrrrคือ 1 หรือ 2 rrrxxx2xmod10r2xmod10r2^x\bmod{10^r} สำหรับ , , ตั้งแต่ สำหรับ , x = 89 , ตั้งแต่2 ^ {89} = 618970019642690137449562 \ color {blue} { \ textrm {112}} หมายเหตุ: สำหรับr = 4 , xคือ= 89 (อีกครั้ง)r=2r=2r=2x=9x=9x=929=51229=5122^9=5\color{blue}{\textrm{12}}r=3r=3r=3x=89x=89x=89289=618970019642690137449562112289=6189700196426901374495621122^{89}=618970019642690137449562\color{blue}{\textrm{112}}r=4r=4r=4xxx= 89=89=89 อินพุต: r ≤ 100r≤100r \leq 100 ผลลัพธ์: xxx เช่น. อินพุต: 2 …

5
แก้ 2-SAT (ความน่าเชื่อถือแบบบูล)
ปัญหาSAT (บูลีนความพึงพอใจ) โดยทั่วไปคือ NP-complete แต่2-SAT , ข้อที่แต่ละคนมีเพียง 2 ตัวแปรอยู่ในP เขียนตัวแก้สำหรับ 2-SAT การป้อนข้อมูล: อินสแตนซ์ 2-SAT เข้ารหัสในCNFดังนี้ บรรทัดแรกมี V, จำนวนตัวแปรบูลีนและ N, จำนวนส่วนคำสั่ง จากนั้นบรรทัด N จะตามมาแต่ละบรรทัดจะมีจำนวนเต็มไม่ใช่ศูนย์ 2 ตัวซึ่งแทนค่าตัวอักษร จำนวนเต็มบวกแสดงถึงตัวแปรบูลีนที่กำหนดและจำนวนเต็มลบแสดงถึงการปฏิเสธของตัวแปร ตัวอย่างที่ 1 อินพุต 4 5 1 2 2 3 3 4 -1 -3 -2 -4 ซึ่ง encodes สูตร(x 1หรือ x 2 ) และ (x …
16 code-golf 

4
เห็นภาพการหารยาวด้วยศิลปะ ASCII
เขียนโปรแกรมที่แสดงภาพส่วนที่ยาวด้วย ASCII art อินพุตประกอบด้วยจำนวนเต็มสองจำนวนตัวเศษและส่วนโดยใช้รูปแบบอินพุตที่คุณเลือก ตัวอย่าง: 1234 ÷ 56: 22 ---- 56|1234 112 --- 114 112 --- 2 1002012 ÷ 12: 83501 ------- 12|1002012 96 --- 42 36 -- 60 60 -- 12 12 -- 0 ÷ 35 0 - 35|0 กฎ: การใช้งานของผู้ประกอบการส่วนการเขียนโปรแกรมภาษาที่จะได้รับอนุญาต อนุญาตให้ใช้จำนวนเต็มขนาดใหญ่ได้ เพื่อความมั่นคง: หากความฉลาดเป็นศูนย์ให้พิมพ์ศูนย์เดียวที่ท้ายกระดานดำน้ำ หากส่วนที่เหลือเป็นศูนย์อย่าพิมพ์ อย่าพิมพ์เลขศูนย์นำหน้าบนตัวเลขใด ๆ ขึ้นบรรทัดใหม่มากเกินไปที่ส่วนท้ายและช่องว่างต่อท้ายไปทางขวาจะได้รับอนุญาต การแก้ปัญหาด้วยตัวละครน้อยที่สุดชนะ …

6
นับจำนวนทศนิยมที่แข็งแรงระหว่าง 2 ตัวเลข
สมมติว่าเรามีจำนวนเต็มไม่เป็นลบนั่นคือ "แข็งแรง" (นั่นคือ "หนัก") หากค่าตัวเลขเฉลี่ยมากกว่า 7 หมายเลข 6959 คือ "แข็งแรง" เพราะ: (6 + 9 + 5 + 9) / 4 = 7.5 หมายเลข 1234 ไม่ใช่เพราะ: (1 + 2 + 3 + 4) / 4 = 2.5 เขียนฟังก์ชั่นในภาษาใดก็ได้ HeftyDecimalCount(a, b) ซึ่งเมื่อระบุจำนวนเต็มบวกสองตัว a และ b จะส่งกลับจำนวนเต็มที่ระบุจำนวนเต็ม "hefty" ที่อยู่ในช่วง [a..b] รวม ตัวอย่างเช่นรับ a …

4
การจับคู่ URL ที่สั้นที่สุดใน JavaScript
สร้างนิพจน์ปกติที่สั้นที่สุดซึ่งจะจับคู่กับ URL ในข้อความเมื่อเรียกใช้ใน JavaScript ตัวอย่าง: "some text exampley.com".match(/your regular expression goes here/); การแสดงออกปกติต้อง รวบรวม URL ที่ถูกต้องทั้งหมดที่ใช้สำหรับ http และ https ไม่ต้องกังวลกับการไม่จับคู่สำหรับสตริงการค้นหา URL ที่ไม่ถูกต้องเช่น URL super.awesome/cool จะถูกต้องเมื่อเรียกใช้เป็น JavaScript regex เกณฑ์การทดสอบ: การจับคู่: http://example.com http://example.com/ http://example.com/super https://example.com/super example.com/super example.com example.com/su-per_duper/?add=yes&subtract=no example.com/archive/index.html twitter.com/#!/reply example.com/234ret2398oent/234nth codegolf.stackexchange.com/questions/464 crazy.wow.really.example.com/?cat=nth%3E example-example.com example1.com ไม่ตรงกับ: ตัวอย่าง ซุปเปอร์ / เย็น อรุณสวัสดิ์ ฉันสามารถ …

25
การแทนค่าไบนารีของตัวเลขคือ palindrome หรือไม่?
เขียนโปรแกรมเต็มรูปแบบเพื่อค้นหาว่าการแสดงเลขฐานสองของตัวเลขเป็น Palindrome หรือไม่? Sample Input 5 Sample Output YES พิมพ์YESหากการเป็นตัวแทนไบนารีคือ palindrome และNOอื่น ๆ

8
คำนวณผกผันแบบแยกส่วน
ได้รับสองตัวเลขบวกxและnมีเขียนฟังก์ชั่นที่สั้นที่สุดในการคำนวณx<2^n x^-1 mod 2^nในคำอื่น ๆ พบดังกล่าวว่าyx*y=1 mod 2^n ฟังก์ชั่นของคุณจะต้องเสร็จสิ้นในเวลาที่เหมาะสมสำหรับอย่างน้อยการn=64ค้นหาที่ละเอียดถี่ถ้วนจะไม่ทำงาน หากไม่มีค่าผกผันคุณจะต้องระบุให้ผู้โทรทราบ (ส่งข้อยกเว้นส่งคืนค่า Sentinel และอื่น ๆ ) หากคุณสงสัยว่าจะเริ่มต้นลองขยายยุคลิดอัลกอริทึม
16 code-golf 

13
หารตัวเลขด้วย 0
เราทุกคนได้รับการบอกเล่า ณ จุดหนึ่งในชีวิตของเราว่าการหารด้วย 0 นั้นเป็นไปไม่ได้ และส่วนใหญ่ข้อความนั้นเป็นจริง แต่ถ้ามีก็เป็นวิธีการที่จะดำเนินการต้องห้ามหรือไม่? ยินดีต้อนรับสู่การสร้างใหม่ล่าสุดของฉัน: b-number b- ตัวเลขเป็นตัวเลขเหมือนจำนวนเล็กน้อย: ตัวเลขหลักที่เกี่ยวข้องหมายถึงนิพจน์ที่ไม่สามารถคำนวณทางคณิตศาสตร์ได้ ( iหมายถึง-1−−-√−1\sqrt{-1} ) ในกรณีนี้จะได้รับการกล่าวถึงเป็นตัวแทนการแสดงออก{0} จากที่นี่เป็นเรื่องง่ายที่จะระบุว่าจะเท่ากัน:ขขb1010\frac{1}{0}x0x0\frac{x}{0} x0= x1⋅ 10= x bx0=x1⋅10=xข \frac{x}{0} = \frac{x}{1} \cdot \frac{1}{0} = xb งาน ได้รับการแสดงออกที่เกี่ยวข้องกับการแบ่งโดย 0 ผลผลิตมูลค่าง่ายในแง่ของขโปรดทราบว่าการป้อนข้อมูลจะอยู่ในรูปแบบของการที่ n เป็นจำนวนตรรกยะหรือใด ๆจำนวนในรูปแบบทศนิยม 0s นำหน้าและต่อท้าย 0s จะไม่ถูกรวมขขbn/0b ตัวอย่างอินพุต 4/0 1/0 0/0 80/0 -8/0 1.5/0 2.03/0 -1/0 -3.14/0 …
16 code-golf  math  number 

18
ลดความซับซ้อนของตัวเลข
คุณจำหมายเลขโทรศัพท์ 6 หรือ 7 หลักที่ปรากฏบนหน้าจอทีวีได้ไม่กี่วินาที! ด้วยเทคนิคพิเศษที่อธิบายไว้ด้านล่างคุณจะกลายเป็นสมุดโทรศัพท์ที่กำลังเดิน! เห็นได้ชัดว่าตัวเลข402จะง่ายต่อการจำกว่าจำนวน110010010และตัวเลขที่จะง่ายต่อการจำกว่าจำนวน337377 957472ซึ่งหมายความว่าหมายเลขที่จดจำไว้ในอีกด้านหนึ่งควรมีตัวเลขน้อยที่สุดเท่าที่จะเป็นไปได้และในทางกลับกันเป็นที่พึงปรารถนาว่าหมายเลขนั้นจะมีตัวเลขซ้ำจำนวนมากที่สุดเท่าที่จะทำได้ ในฐานะที่เป็นเกณฑ์สำหรับความยากลำบากในการจำเราใช้ผลรวมของจำนวนหลักในจำนวนและจำนวนของตัวเลขที่แตกต่างกันในจำนวน หมายเลขที่ถูกจดจำสามารถเขียนในระบบตัวเลขอื่นได้และอาจจะง่ายต่อการจดจำ ยกตัวอย่างเช่นจำนวนในเลขฐานสิบหกดูเหมือนว่า65535FFFF งาน คุณต้องเขียนโปรแกรมเพื่อเลือกฐานของระบบตัวเลขเพื่อลดความซับซ้อนของเกณฑ์ ฐานของระบบตัวเลขจะต้องเลือกในช่วงตั้งแต่ 2 ถึง 36 จากนั้นจะสามารถใช้ตัวเลข0-9และตัวอักษรภาษาอังกฤษA-Zเพื่อแสดงตัวเลขได้ อินพุต อินพุตมีจำนวนเต็มฐานสิบตั้งแต่ 1 ถึง 999999999 เอาท์พุต เอาท์พุทจะต้องมีฐานของระบบตัวเลข (จาก 2 ถึง 36) การลดเกณฑ์ของความซับซ้อนในการท่องจำให้น้อยที่สุดและจำนวนในระบบตัวเลขที่เลือกคั่นด้วยช่องว่างหนึ่งช่อง หากหลายฐานให้ค่าเดียวกันสำหรับเกณฑ์ให้เลือกค่าที่น้อยที่สุด หมายเหตุ ตัวอักษรต้องเป็นตัวพิมพ์ใหญ่ ( A-Z) กรณีทดสอบ อินพุตเอาต์พุต 1 2 1 2 3 2 65535 16 FFFF 123 12 A3

18
ถอดรหัสปริมาณที่มีความยาวผันแปรได้
ปริมาณความยาวตัวแปร (ยังเรียกว่าVLQหรือuintvar) คือวิธีการเข้ารหัสได้ถึงค่าจำนวนเต็ม 28 บิตโดยใช้เพียงเป็นไบต์มากที่สุดเท่าที่จำเป็น สิ่งนี้ถูกใช้ในรูปแบบไฟล์ MIDIเพื่อลดขนาดของข้อมูลเหตุการณ์บางอย่าง วิธีการทำงานค่อนข้างง่าย ในฐานะที่เป็นชุดใหญ่ของไบต์ไบต์บิตที่สำคัญที่สุด (MSB) ของแต่ละไบต์คือการ1บ่งชี้ว่า VLQ ไบต์อื่นดังต่อไปนี้ ส่วนที่เหลืออีก 7 บิตของแต่ละไบต์เป็นค่าที่ถอดรหัส ตัวอย่าง (จาก Wikipedia): [ 0x86, 0xc3, 0x17 ] => 106903 อ้างอิงเพิ่มเติม: วิกิพีเดีย , บางผู้ชาย ท้าทาย: รับปริมาณที่มีความยาวผันแปรได้แปลงเป็นค่าจำนวนเต็ม การป้อนข้อมูล: รายการของหนึ่งถึงสี่ไบต์หรือชนิดค่า 32- บิตแทน VLQ ที่ถูกต้องของจำนวนเต็ม เอาท์พุท: ค่าจำนวนเต็มของอินพุต VLQ กฎและเกณฑ์การให้คะแนน: นี่คือ code-golf ดังนั้นคำตอบที่สั้นที่สุดเป็นไบต์สำหรับแต่ละภาษาที่ชนะ กฎระเบียบมาตรฐานและเริ่มต้น I / O กฎใช้ …

3
ชะตากรรมของคองคอร์ด
พื้นหลัง ปัญหาพนักงานขายที่เดินทาง (TSP) ขอวงจรที่สั้นที่สุดที่ผู้เข้าชมคอลเลกชันที่กำหนดของเมือง สำหรับจุดประสงค์ของคำถามนี้เมืองจะเป็นจุดในระนาบและระยะทางระหว่างพวกเขาจะเป็นระยะทางแบบยุคลิดตามปกติ(ปัดเศษเป็นจำนวนเต็มที่ใกล้เคียงที่สุด) วงจรจะต้องเป็น "ไปกลับ" หมายความว่ามันจะต้องกลับไปที่เมืองเริ่มต้น ตัวแก้ปัญหา Concorde TSPสามารถแก้ปัญหากรณีปัญหาพนักงานขาย Euclidean ที่เดินทางได้อย่างรวดเร็วและเร็วเกินคาด ตัวอย่างเช่น Concorde สามารถแก้ปัญหาอินสแตนซ์ 85,900 จุดได้อย่างแม่นยำซึ่งบางส่วนมีลักษณะดังนี้: อย่างไรก็ตามอินสแตนซ์ TSP บางรายการใช้เวลานานเกินไปสำหรับ Concorde ยกตัวอย่างเช่นไม่มีใครได้รับสามารถที่จะแก้ปัญหานี้เช่น 100,000 จุดบนพื้นฐานของโมนาลิซ่า (มีรางวัล $ 1,000 ให้ถ้าคุณสามารถแก้มันได้!) Concorde พร้อมให้ดาวน์โหลดในรูปของซอร์สโค้ดหรือไฟล์ที่เรียกใช้งานได้ โดยค่าเริ่มต้นจะใช้QSoptตัวแก้ปัญหาโปรแกรมเชิงเส้น (LP) ในตัวแต่ยังสามารถใช้ตัวแก้ปัญหา LP ที่ดีขึ้นเช่น CPLEX ความท้าทาย อินสแตนซ์ของ TSP ที่เล็กที่สุดที่คุณสามารถสร้างได้ใช้เวลานานกว่าห้านาทีในการแก้ไขคือConcorde คืออะไร คุณสามารถเขียนโปรแกรมเพื่อแสดงผลอินสแตนซ์หรือใช้วิธีอื่นที่คุณต้องการ เกณฑ์การให้คะแนน คะแนนน้อยลงในอินสแตนซ์ที่ดีกว่า ความสัมพันธ์จะถูกทำลายโดยขนาดไฟล์ของอินสแตนซ์ (ดูด้านล่าง) มาตรฐาน คอมพิวเตอร์หลายเครื่องทำงานเร็วหรือช้ากว่าดังนั้นเราจะใช้เซิร์ฟเวอร์ NEOS …

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