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

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

14
A Spintax {Task | ปัญหา | คำถาม}
บทความการปั่นด้วย Spintax บทความการปั่นเป็นเครื่องมือเพิ่มประสิทธิภาพกลไกค้นหาโดยที่เครื่องมือค้นหาการเพิ่มประสิทธิภาพโพสต์รุ่นที่ไม่ซ้ำกันของเนื้อหาที่เกี่ยวข้องในไดเรกทอรีบทความเว็บไซต์ 2.0 เว็บไซต์หรือแหล่งข้อมูลอื่น ๆ สำหรับลิงก์ย้อนกลับ มันถูกใช้เป็นครั้งคราวโดยผู้เขียนเว็บไซต์ในเว็บไซต์ของตัวเอง แต่มักจะหลีกเลี่ยงเพราะคุณภาพของเนื้อหาปั่นจะต่ำกว่าเนื้อหาที่เขียนด้วยมือ การหมุนงานโดยเขียนบทความที่มีอยู่เดิมหรือบางส่วนของบทความใหม่และแทนที่คำวลีประโยคหรือแม้แต่ย่อหน้าทั้งหมดด้วยเวอร์ชันอื่น ๆ เพื่อให้การเปลี่ยนแปลงที่แตกต่างกันเล็กน้อยในแต่ละสปิน กระบวนการนี้อาจเป็นไปโดยอัตโนมัติอย่างสมบูรณ์หรือเขียนใหม่ด้วยตนเอง งานของคุณในวันนี้คือการสร้างโปรแกรมหรือฟังก์ชั่นที่ตีความสตริงที่มีSpintaxซึ่งเป็นไวยากรณ์ที่โปรแกรมจะอ่านตัวเลือกต่าง ๆ ที่มีให้ ด้านล่างเป็นตัวอย่างสตริงที่ใช้ Spintax: {Hello|Hi there|Bonjour}, user! {What's up?|How are you?|Feeling alright?|I caught a fish!} อย่างที่คุณเห็นส่วนของสตริงที่จะ 'ปั่น' อยู่ในวงเล็บปีกกาซึ่งแต่ละตัวเลือกจะถูกแยกโดย|ตัวละคร นี่คือตัวอย่างของประโยคที่สามารถผลิตได้ Hi there, user! What's up? Hello, user! How are you? Bonjour, user! Feeling alright? Hello, user! What's …
19 code-golf 

9
ใครจะเป็นผู้ชนะในการหลอกลวง
เขียนโค้ดเพื่อตรวจสอบว่าใครชนะเป็นเคล็ดลับที่สี่บัตรในเกมของSpades ไบต์ที่น้อยที่สุดจะเป็นผู้ชนะ อินพุตเป็นสตริงที่แสดงไพ่สี่ใบที่เล่นตามลำดับเช่นTH QC JH 2H(Ten of Hearts, Queen of Clubs, Jack of Hearts, Two of Hearts) บัตรจะได้รับจากสองตัวอักษร: ชุดจากและค่าจากCDHS 23456789TJQKAคุณรับประกันว่าอินพุตนั้นถูกต้องและการ์ดนั้นแตกต่างกัน คุณควรส่งออกหมายเลข 1, 2, 3 หรือ 4 สำหรับผู้ชนะของเคล็ดลับ ในตัวอย่างTH QC JH 2Hแจ็คฮาร์ตชนะเคล็ดลับดังนั้นคุณควรเอาท์พุท 3 อินพุตและเอาต์พุตของคุณจะต้องตรงตามที่อธิบายไว้ยกเว้นการขึ้นบรรทัดใหม่เป็นตัวเลือก นี่คือกฎ Spades สำหรับการชนะเคล็ดลับ การ์ดที่ชนะนั้นเป็นการ์ดที่สูงที่สุดในสี่ซึ่งมีคำเตือนอยู่บ้าง Spades เป็นชุดคนที่กล้าหาญดังนั้นโพดำที่อยู่เหนือกว่าโพดำใด ๆ ชุดของไพ่ใบแรกที่เล่นคือชุดนำและมีเพียงไพ่ของชุดหรือโพดำเท่านั้นที่มีสิทธิ์ได้รับเล่ห์เหลี่ยม 23456789TJQKAการ์ดของชุดเดียวกันเมื่อเทียบจากค่าของพวกเขาซึ่งจะได้รับในการสั่งซื้อเพิ่มขึ้นเป็น กรณีทดสอบ: TH QC JH 2H 3 KC 5S …

2
การพิจารณาการหมุนของสแควร์ให้รายการของคะแนน
ในการท้าทายนี้คุณจะได้รับรายการคะแนน จุดเหล่านี้อยู่ในปริมณฑลของตารางจินตนาการ เป้าหมายของคุณคือ: ถ้าเป็นไปได้ให้พิมพ์การหมุนของสแควร์ซึ่งจะเป็นค่าจาก [0, 90) โดยที่ 0 หมายถึงสแควร์ที่มีเส้นแนวตั้งและแนวนอน การหมุนจะถูกกำหนดเป็นองศานับทวนเข็มนาฬิกา หากการหมุนของจตุรัสไม่ชัดเจน (เช่นได้รับ 2 คะแนนเท่านั้น) ให้พิมพ์ "ไม่ทราบ" หากการสร้างตารางที่กำหนดจุดเป็นไปไม่ได้ให้พิมพ์ "Impossible" คะแนนที่คุณได้รับนั้นรับประกันว่าจะไม่ซ้ำกันและไม่ได้อยู่ในลำดับเฉพาะ คุณสามารถใช้รูปแบบใดก็ได้ที่คุณต้องการป้อนรายการ แต่สำหรับตัวอย่างของฉันคะแนนของฉันจะอยู่ในรูปแบบx,yและคั่นด้วยช่องว่าง ตัวเลขเหล่านี้เป็นตัวเลขทศนิยมและคุณสามารถสันนิษฐานได้ว่าอยู่ในช่วงที่ภาษาของคุณสามารถจัดการได้ ผลลัพธ์ของคุณควรมีความถูกต้องอย่างน้อย 3 ตำแหน่งทศนิยมและสมมติว่าภาษาของคุณจัดการกับตัวเลขทศนิยมด้วยความแม่นยำที่สมบูรณ์แบบ นี่คือกรณีทดสอบบางส่วน (ฉันใช้ประโยชน์จากตัวเลขเหล่านี้ทั้งหมดเพื่อให้แสดงภาพได้ง่าย แต่โปรแกรมของคุณควรจัดการกับคะแนนลอย): ไม่รู้จัก: 0,0 0,0 1,0 0,0 1,0 0,1 0,0 1,0 0,1 1,1 0,1 0,2 1,0 1,3 2,0 2,3 3,1 3,2 เป็นไปไม่ได้: 0,0 1,0 …

14
การเพิ่มกลับทาง Palindrome
การเพิ่มกลับทาง Palindrome กระบวนการของการกลับรายการเพิ่มคือที่ที่มีการเพิ่มจำนวนลงในนั้นจะกลับหลังจนกว่าจำนวนที่สร้างขึ้นจะเป็นแบบสี ตัวอย่างเช่นถ้าเราเริ่มต้นด้วย 68 กระบวนการจะเป็น: 68 + 86 => 154 + 451 => 605 + 506 => 1111 อย่างที่คุณเห็นสิ่งนี้ใช้เวลา 3 ส่วนเพื่อรับจำนวน palindromic ถ้าเราจะเริ่มต้นด้วย89เราจะต้องมี 24 ขั้นตอน (ซึ่งคุณสามารถดูรายละเอียดที่นี่ ) บันทึกสถิติโลกสำหรับขั้นตอนการดำเนินการมากที่สุดก่อนที่จะ palindrome จะมาถึงคือ 261 ซึ่งเกิดขึ้นสำหรับจำนวน1186060307891929990การผลิตจำนวนที่มีขนาดใหญ่กว่า 10 118 อย่างไรก็ตามมีตัวเลขไม่กี่ตัวที่เราไม่สามารถรับได้ เหล่านี้เรียกว่าหมายเลข Lychrel เนื่องจากเราทำงานในฐาน 10 เราสามารถเรียกพวกเขาว่าผู้สมัครเพราะไม่มีข้อพิสูจน์ว่าตัวเลขเหล่านี้ไม่ถึง palindrome ตัวอย่างเช่นผู้สมัคร Lychrel -10 ที่มีขนาดเล็กที่สุดคือ 196 คนและผ่านการทำซ้ำกว่าพันล้านครั้ง ถ้า palindrome …

10
แม้ว่า Thoreau จะถูกขว้าง Troll ก็จะผ่านร่องที่ยากลำบาก
สำหรับคำที่คล้ายกันทั้งเก้าคำนี้ให้กำหนดหมายเลข 1-9 ด้วยวิธีใดก็ได้ตามที่คุณต้องการ: though through thorough Thoreau throw threw trough tough troll เขียนโปรแกรมที่ใช้ในสตริง หากอินพุตเป็นหนึ่งในเก้าคำเหล่านี้ให้ป้อนหมายเลขที่คุณกำหนดไว้ หากอินพุตไม่ใช่คำใดคำหนึ่งข้างต้นโปรแกรมอาจทำสิ่งใดก็ได้ (รวมถึงข้อผิดพลาดหรือวนซ้ำตลอดไป) คำนั้นต้องตรงตามตัวพิมพ์เล็กและใหญ่เช่นThoreauควรสร้างตัวเลขตั้งแต่ 1-9 แต่thoreauจะไม่เหมือนกัน ตัวอย่าง สมมติว่าคุณกำหนดหมายเลขดังต่อไปนี้: though 9 through 2 thorough 7 Thoreau 6 throw 3 threw 5 trough 4 tough 1 troll 8 จากนั้นเมื่อtoughมีการป้อนข้อมูล1ควรจะออก ควรป้อนข้อมูล เมื่อใด ควรป้อนข้อมูล เมื่อใด . . . ควรป้อนข้อมูล เมื่อใดthrough2throw3though9 อินพุตอื่นทั้งหมดอาจทำอะไรก็ได้ …

2
โปรแกรมย่อย Brainf *** ที่มีเอาท์พุตเฉพาะ
คุณควรเขียนโปรแกรม brainfuck (BF) ยาว 100 ไบต์ ตัวละครตัวหนึ่งจะถูกลบออกจากมันในทุกวิถีทางที่เป็นไปได้โปรแกรม 100 ใหม่ (ยาว 99- ไบต์) เช่นสำหรับโปรแกรม++.>.5 โปรแกรมย่อยมี+.>., +.>., ++>., และ++..++.> คะแนนของคุณจะเป็นจำนวนผลลัพธ์ที่ไม่ซ้ำใครที่โปรแกรม 100 รายการสร้างขึ้น คะแนนที่สูงขึ้นจะดีกว่า รายละเอียด โปรแกรมของคุณจะถูกยกเลิกหลังจากแสดงอักขระตัวแรก โปรแกรมและโปรแกรมที่ไม่ถูกต้องหรือไม่ได้สร้างผลลัพธ์ที่ว่างเปล่าจะไม่ถูกนับรวมกับคะแนน เซลล์ BF เป็นตัวห่อ 8 บิต (255 + 1 = 0, 0-1 = 255) โปรแกรมของคุณไม่มีการป้อนข้อมูล ถ้าคุณใช้ในรหัสที่มันตั้งเป็นเซลล์ปัจจุบัน,0 ไม่มีเซลล์ทางด้านซ้ายของตำแหน่งเริ่มต้น เช่น<.ไม่ถูกต้อง แต่เป็นที่ถูกต้องเป็นการดำเนินการที่ถูกยกเลิก.< .เทปไม่มีขอบเขตในทิศทางอื่น โปรแกรมที่มีวงเล็บไม่สมดุล ( [และ]) ไม่ถูกต้อง โปรแกรมดั้งเดิมของคุณสามารถสั้นกว่า 100 ไบต์ได้อย่างง่ายดายเพราะมันขยายได้ถึง …

13
พาร์ติชันที่ปรับปรุงแล้ว
พิจารณาอาร์เรย์ของจำนวนเต็ม: [1, 0, 9, 1, 3, 8] มีหลายวิธีในการแบ่งรายการนี้เป็นรายการย่อยที่ต่อเนื่องกัน ที่นี่มีสาม: A: [[1, 0, 9], [1, 3, 8]] B: [[1], [0, 9], [1, 3], [8]] C: [[1, 0], [9, 1], [3, 8]] เราจะเรียกพาร์ติชั่นYและการปรับแต่งพาร์ติชั่นXอีกอันถ้าXสามารถหาได้จากYโดยการรวมกลุ่มย่อยของมันเข้าด้วยกัน ดังนั้นBเป็นการปรับแต่งของA: Aถ้าเราเข้าร่วมครั้งแรกที่สองและทั้งสองรายการย่อยสุดท้ายกลับมารวมกันเราได้รับ แต่Cเป็นไม่ได้ปรับแต่งของAเราจะต้องแยกขึ้น9และ1เพื่อที่จะกู้คืนAจากมัน นอกจากนี้พาร์ติชันใด ๆ ก็มีการปรับแต่งเล็กน้อย โปรดทราบว่าเราไม่ได้รับอนุญาตให้จัดเรียงรายการย่อยหรือองค์ประกอบใหม่อีกครั้ง ความท้าทาย ป.ร. ให้ไว้สองพาร์ทิชัน (รายชื่อของรายการของจำนวนเต็ม) XและYตรวจสอบว่าเป็นการปรับแต่งของYX คุณอาจคิดว่าพาร์ติชั่นจะมีจำนวนเต็มตั้งแต่0ถึง9รวม คุณต้องไม่สมมติXและYเป็นพาร์ทิชันของรายการเดียวกัน (ถ้าไม่ใช่พวกเขาจะไม่ปรับแต่งซึ่งกันและกัน) Xและ / หรือYอาจว่างเปล่า แต่จะไม่มีรายการย่อยที่ว่างเปล่า …

3
มีวิธีที่สั้นกว่าในการกำหนดหนึ่งในสองตัวแปรใน Python หรือไม่?
นี่คือเคล็ดลับคำถามสำหรับการเล่นกอล์ฟในหลาม ในหลาย ๆ กอล์ฟที่ฉันทำใน Python ค่าคงที่จะถูกกำหนดให้กับหนึ่งในสองตัวแปรที่เลือกโดยบูลีน ตัวแปรที่เลือกจะถูกเขียนทับโดยค่าที่กำหนดและตัวแปรอื่นจะไม่เปลี่ยนแปลง 17 ตัวอักษร: if b:y=z else:x=z การกำหนดค่าตามเงื่อนไขนั้นเป็นเรื่องง่ายแต่การกำหนดให้กับตัวแปรตามเงื่อนไขนั้นดูเหมือนว่าเป็น clunky ฉันสงสัยว่ามีวิธีที่สั้นกว่าฉันหายไป นี่จะเป็นเรื่องง่ายถ้าx,yเป็นรายการLแต่สมมติว่าบริบทต้องอ้างถึงตัวแปรที่เพียงพอในการเขียนL[0]และL[1]ห้ามปราม การแปลงใช้เวลานานเกินไป: 20 ตัวอักษร: L=[x,y];L[b]=z;x,y=L วิธีที่เร็วที่สุดที่ฉันรู้ก็คือกับ Python 2 execซึ่งแปลกประหลาด: 16 ตัวอักษร Python 2: exec"xy"[b]+"=z" Tuple-selection ดูเหมือนจะยาวกว่า: 18, 19, 18, 18 ตัวอักษร: x,y=b*(x,z)or(z,y) x,y=[z,x,y,z][b::2] y,x=[y,z,x][b:b+2] y,x,*_=[y,z,x][b:] # Python 3 มีวิธีที่สั้นกว่าหรือการเพิ่มประสิทธิภาพการประหยัดอักขระ? คุณสามารถสันนิษฐานได้ว่าbเป็น0หรือ1ไม่ใช่แค่ Falsey หรือ Truthy และยังตั้งสมมติฐานเกี่ยวกับชนิดข้อมูลและค่าหากช่วยได้
19 code-golf  tips  python 

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

15
สุ่มกอล์ฟประจำวัน # 4: The Bertrand Paradox
เกี่ยวกับซีรี่ส์ ก่อนอื่นคุณอาจปฏิบัติเช่นนี้กับการแข่งขันกอล์ฟอื่น ๆ และตอบคำถามโดยไม่ต้องกังวลเกี่ยวกับซีรี่ส์เลย อย่างไรก็ตามมีลีดเดอร์บอร์ดสำหรับทุกความท้าทาย คุณสามารถค้นหาลีดเดอร์พร้อมกับข้อมูลบางอย่างเพิ่มเติมเกี่ยวกับซีรีส์ในโพสต์แรก แม้ว่าฉันจะมีไอเดียมากมายสำหรับชุด แต่ความท้าทายในอนาคตยังไม่เกิดขึ้น หากคุณมีข้อเสนอแนะใด ๆ โปรดแจ้งให้เราทราบเกี่ยวกับการโพสต์ Sandbox ที่เกี่ยวข้อง Hole 4: The Bertrand Paradox เบอร์ทรานด์ขัดแย้งเป็นปัญหาที่น่าสนใจซึ่งแสดงให้เห็นว่าวิธีการที่แตกต่างกันสำหรับการเลือกคอร์ดสุ่มในวงกลมสามารถให้ผลผลิตแตกต่างกันของการกระจายคอร์ดกึ่งกลางและความยาวของพวกเขา ในความท้าทายนี้คุณควรจะสร้างคอร์ดสุ่มของวงกลมหน่วยโดยใช้วิธี "ขวา" คือหนึ่งที่สร้างการกระจายของคอร์ดที่ไม่เปลี่ยนแปลงภายใต้การปรับและการแปล ในบทความ Wikipedia ที่เชื่อมโยง "วิธีที่ 2" เป็นวิธีการดังกล่าว นี่คือกฎที่แน่นอน: คุณควรใช้จำนวนเต็มบวกหนึ่งตัวNซึ่งระบุจำนวนคอร์ดที่ควรส่งคืน เอาต์พุตควรเป็นรายการของNคอร์ดแต่ละอันระบุเป็นสองจุดบนวงกลมหน่วยกำหนดโดยมุมขั้วของพวกเขาเป็นเรเดียน รหัสของคุณควรจะสามารถที่จะกลับมาอย่างน้อย 2 20ค่าที่แตกต่างกันสำหรับแต่ละสองมุม หาก RNG ที่มีของคุณมีช่วงที่มีขนาดเล็กคุณต้องแรกสร้าง RNG มีช่วงขนาดใหญ่พอที่ด้านบนของตัวเครื่องในหนึ่งหรือคุณต้องใช้ของคุณเองRNG เหมาะสม หน้านี้อาจมีประโยชน์สำหรับสิ่งนั้น การกระจายคอร์ดจะต้องแยกไม่ออกจากคอร์ดที่ผลิตโดย "วิธีที่ 2" ในบทความ Wikipedia ที่เชื่อมโยง หากคุณใช้อัลกอริทึมที่แตกต่างในการเลือกคอร์ดโปรดระบุหลักฐานความถูกต้อง ไม่ว่าอัลกอริทึมใดที่คุณเลือกที่จะใช้มันจะต้องสามารถสร้างคอร์ดที่ถูกต้องใด ๆ …

8
ลบบรรทัดเดียวและความคิดเห็นหลายบรรทัดจากสตริง
เป้าหมาย ใช้ภาษาการเขียนโปรแกรมที่คุณเลือกเขียนโปรแกรมที่สั้นที่สุดเพื่อกำจัดความคิดเห็นจากสตริงที่แทนโปรแกรม C อินพุต สตริงสามารถนำมาเป็นรูปแบบของการป้อนข้อมูลใด ๆ แต่ก็อาจถูกนำมาเป็นตัวแปร คำแนะนำ ความคิดเห็นที่แตกต่างกันสองประเภทจะถูกลบออก: ความคิดเห็นหลายบรรทัดเริ่มต้นด้วย/*และลงท้ายด้วย*/ ความคิดเห็นบรรทัดเดียวเริ่มต้นด้วย//และลงท้ายด้วยตัวแบ่งบรรทัดสไตล์ Linux (LF, \n) ความคิดเห็นภายในสตริงจะไม่ถูกลบ สำหรับจุดประสงค์ของการท้าทายนี้คุณจะต้องพิจารณา"สตริงที่ถูก จำกัด โดยเฉพาะอย่างยิ่งคุณสามารถเพิกเฉยต่อความเป็นไปได้ของ'ตัวอักษรที่ถูก จำกัด ตัวอักษร นอกจากนี้คุณยังสามารถละเว้น Trigraphs และการดำเนินการต่อเนื่องของบรรทัด ( /\<LF>*...) ตัวอย่าง การป้อนข้อมูล: #include <stdio.h> int main(int argc, char** argv) { // this comment will be removed if (argc > 1) { printf("Too many arguments.\n"); // …

1
แปลโหมโรงเป็น Befunge
นี่คือการท้าทายประจำสัปดาห์ # 2 ธีม: การแปล เขียนโปรแกรมหรือฟังก์ชั่นที่ใช้ในรหัสที่มาสำหรับโปรแกรมในโหมโรงและผลสำหรับโปรแกรมเทียบเท่าในBefunge-93 สำหรับโปรแกรมที่จะเทียบเท่ามันควรสำหรับการป้อนข้อมูลที่กำหนดใด ๆ ผลิตผลลัพธ์เดียวกันกับโปรแกรมโหมโรงและหยุดถ้าหากโปรแกรมโหมโรงหยุด ภาษาที่ป้อน: โหมโรง Python interpreter: แสดงตัวอย่างโค้ด #!/usr/bin/python import sys NUMERIC_OUTPUT = True NUMERIC_INPUT = True try: filename = sys.argv[1] except: print "Usage:", sys.argv[0], "<filename>" raise SystemExit try: inFile = file(filename) except: print "Error when opening", filename raise SystemExit # code is kept …

6
ช่วยในการจำ 23940
ระบบที่สำคัญคือช่วยในการจำอุปกรณ์สำหรับการแปลงตัวเลขเป็นคำพูดเพื่อให้พวกเขาสามารถจดจำได้ง่ายขึ้น มันขึ้นอยู่กับวิธีที่คำพูดออกเสียง แต่เพื่อให้สิ่งต่าง ๆ ง่ายขึ้นสำหรับความท้าทายเราจะกังวลเฉพาะกับวิธีการสะกดคำ ซึ่งหมายความว่าจะมีการแปลงที่ไม่ถูกต้อง แต่ก็ไม่เป็นไร ในการแปลงตัวเลขเป็นคำโดยใช้ระบบหลักที่ง่ายของเรา: แทนที่แต่ละ0ด้วยหรือs z(บางคนอาจเป็นsและบางคนอาจเป็นzเหมือนกันไปด้านล่าง) แทนที่แต่ละ1กับtหรือหรือdth แทนที่แต่ละกับ2n แทนที่แต่ละกับ3m แทนที่แต่ละกับ4r แทนที่แต่ละกับ5l แทนที่แต่ละ6กับjหรือหรือshch แทนที่แต่ละ7กับkหรือcหรือหรือgq แทนที่แต่ละ8ด้วยหรือfv แทนที่แต่ละ9ด้วยหรือpb เพิ่มตัวอักษรaehiouwxyใดก็ได้ในปริมาณใด ๆ ที่จะทำให้คำภาษาอังกฤษที่จริงถ้าเป็นไปได้ ยกเว้นอย่างเดียวคือว่าhอาจจะไม่ถูกแทรกหลังหรือsc ตัวเลขอาจเป็นสตริงใด ๆ ของตัวเลข 0-9 (ไม่มีทศนิยมหรือเครื่องหมายจุลภาคหรือเครื่องหมาย) คำสามารถประกอบด้วยตัวอักษรตัวพิมพ์เล็ก az เท่านั้น ตัวอย่าง จำนวน32ต้องถูกแปลงเป็น?m?n?, ซึ่ง?แทนสตริงใด ๆ ที่ จำกัด ที่ทำจากตัวอักษรaehiouwxy(สตริงจากmonoid อิสระถ้าคุณต้องการ) : มีหลายวิธีนี้อาจจะทำให้เป็นคำภาษาอังกฤษที่แท้จริงmane, moon, yeomanฯลฯ จำนวน05จะถูกแปลงเป็นหรือ?s?l? ?z?l?เป็นไปได้ที่บางคนมีeasily, และhassle ไม่อนุญาตให้ใช้hazelคำshawlนี้เพราะhอาจไม่ได้อยู่หลังs; 65มันจะอ่านไม่ถูกต้องเป็น ท้าทาย เขียนโปรแกรมหรือฟังก์ชั่นที่ใช้สายอักขระของตัวเลข …
19 code-golf  string 

4
คำนวณขนาดของดวงจันทร์
ขนาดของดวงจันทร์ลึกลับ ฉันแน่ใจว่าคุณเคยได้ยินว่าดวงจันทร์เปลี่ยนขนาดของมัน เมื่อคุณมีความรักและคุณโชคดีดวงจันทร์มีขนาดเกือบสองเท่าเมื่อเทียบกับสถานการณ์ปกติ บางคนบอกว่าเหตุผลคือบรรยากาศที่ทำหน้าที่เป็นเลนส์ คนอื่นคิดว่ามันเป็นเพียงเรื่องของการเปรียบเทียบกับวัตถุอื่น ๆ เช่นต้นไม้ในบริเวณใกล้เคียง อะไรก็ตามที่คุณอ่านคำอธิบายมันเป็นเรื่องส่วนตัว ขนาดของวิทยาศาสตร์ดวงจันทร์ ตกลงเราเป็นโปรแกรมเมอร์ใช่ไหม เราพึ่งพาข้อเท็จจริงใช่ไหม ดังนั้นนี่คือการทดลอง: ใช้กล้องที่ดีซึ่งรองรับการตั้งค่าเวลาและค่ารูรับแสงด้วยตนเอง ตั้งค่ากล้องของคุณเป็นระดับการซูมสูงสุด ออกไปถ่ายรูปดวงจันทร์เพื่อตรวจจับการตั้งค่าที่ดีที่สุดเพื่อให้ดวงจันทร์คมและแสงก็ดี จำการตั้งค่า ถ่ายภาพดวงจันทร์ด้วยการตั้งค่าเหล่านั้นทุกครั้งที่คุณคิดว่าดวงจันทร์มีขนาดใหญ่หรือเล็ก คำนวณขนาดของดวงจันทร์เป็นพิกเซล กล้องไม่โกหกใช่มั้ย ด้วยการนับพิกเซลที่สว่างเราสามารถวัดขนาดของดวงจันทร์ได้อย่างมีประสิทธิภาพ - อย่างน้อยเป็นพิกเซล หากขนาดเท่ากันในรูปภาพทั้งหมดแสดงว่าเป็นข้อบกพร่องในสมองของเรา หากขนาดแตกต่างกันแสดงว่ามีห้องสำหรับเก็งกำไร ดวงจันทร์เติบโตขึ้นจริง ๆ (แต่มันกินอะไร) มีเอฟเฟ็กต์เลนส์บรรยากาศ ดวงจันทร์มีลักษณะเป็นวงรีและบางครั้งใกล้กว่าบางครั้งไกลจากโลกมากขึ้น ... แต่ฉันจะปล่อยให้เปิดจนกว่างานของคุณจะเสร็จสมบูรณ์ แน่นอนว่าคุณต้องการทราบล่วงหน้าหากซอฟต์แวร์ของคุณสามารถคำนวณขนาดดวงจันทร์ได้อย่างถูกต้อง งาน ได้รับภาพที่ดีที่สุดของดวงจันทร์กรุณาคำนวณขนาดของดวงจันทร์ การปรับให้เหมาะสมคือ: พิกเซลเป็นสีดำหรือสีขาว ไม่มีอะไรในระหว่าง ไม่มีการลดรอยหยัก นั่นทำให้ง่ายใช่ไหม? ข้อแม้: ดวงจันทร์ไม่เต็มคุณรู้ไหมว่ามันอาจเป็นเคียว! แต่ถึงแม้จะเป็นรูปร่างเคียวขนาดของดวงจันทร์ก็ใหญ่กว่า ดังนั้นคุณจะคำนวณขนาดเต็มได้ไหม โปรแกรมของคุณใช้ PNG เป็นอินพุตเช่นอาร์กิวเมนต์บรรทัดคำสั่งชื่อไฟล์ไปป์stdinหรือเป็นวัตถุบิตแมป (ของไลบรารีเฟรมเวิร์กมาตรฐาน) หากคุณเขียนฟังก์ชันแทนที่จะเป็นโปรแกรม โปรแกรมของคุณทำงานกับขนาดบิตแมปอินพุตที่สมเหตุสมผลไม่จำเป็นต้องเป็นแบบสแควร์ รับประกันความกว้างและความสูงขั้นต่ำ …

8
กระโดดข้ามแถว!
ลองเล่นเกมที่ผู้เล่นคนหนึ่งที่เรียกว่ากระโดดอาร์เรย์ ในการเล่นคุณต้องใช้อาร์เรย์ของจำนวนเต็มaเท่านั้น คุณเริ่มที่บางตำแหน่งiและในแต่ละตาคุณจะข้ามไปยังตำแหน่งใหม่ ที่เปิดn, ถ้าnเป็นแม้กระทั่งคุณจะกระโดดไปยังตำแหน่งที่แน่นอนa[i] mod length(a), ถ้าแปลกที่คุณจะกระโดดไปยังตำแหน่งญาติn(i + a[i]) mod length(a) การจัดทำดัชนีอาร์เรย์เริ่มต้นที่ศูนย์ คุณสามารถนับการกระโดดครั้งแรกเป็นเทิร์น0หรือเทิ1ร์นซึ่งให้เกมอื่น เนื่องจากพื้นที่ของเกมนั้นมี จำกัด (การเคลื่อนไหวของคุณถูกกำหนดโดยตำแหน่งของคุณและความเท่าเทียมกันของจำนวนรอบ) คุณจะต้องเข้าสู่วงที่มีความยาวเท่ากัน แสดงว่าโดยความยาวของวงนี้เมื่อกระโดดครั้งแรกนับเป็นเปิดloop(a, i, b)b อินพุต อาร์เรย์aจำนวนเต็มที่ไม่มีข้อ จำกัด ในการเล่นเกมด้วย เอาท์พุต จำนวนสูงสุดpดังกล่าวว่าเมื่อเริ่มต้นในบางตำแหน่งiและนับเป็นครั้งแรกที่เปิดอย่างใดอย่างหนึ่ง0หรือคุณที่สุดใส่ห่วงความยาว1 2 * pอีกนัยหนึ่งผลลัพธ์ของคุณคือจำนวน max { loop(a, i, b)/2 : i in [0 .. length(a)-1], b in [0,1] } กฎระเบียบ คุณสามารถให้ฟังก์ชั่นหรือโปรแกรมเต็มรูปแบบ จำนวนไบต์ที่น้อยที่สุดชนะและช่องโหว่มาตรฐานไม่ได้รับอนุญาต กรณีทดสอบ [0] …

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