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

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 อินพุตอื่นทั้งหมดอาจทำอะไรก็ได้ …

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"); // …

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] …

7
แก้ไขข้อผิดพลาดโดยใช้ Hamming (7,4)
รหัส Hamming (7,4) กลับไปที่ปี 1950 ก่อนหน้านั้น Richard Hamming ทำงานเป็นนักคณิตศาสตร์ที่ Bell Labs ทุกวันศุกร์ Hamming ตั้งค่าเครื่องคำนวณเพื่อทำการคำนวณแบบต่อเนื่องและรวบรวมผลลัพธ์ในวันจันทร์ถัดไป การใช้การตรวจสอบแบบพาริตี้ทำให้เครื่องเหล่านี้สามารถตรวจจับข้อผิดพลาดในระหว่างการคำนวณได้ ผิดหวังเพราะเขาได้รับข้อความแสดงข้อผิดพลาดบ่อยเกินไป Hamming ตัดสินใจปรับปรุงการตรวจจับข้อผิดพลาดและค้นพบรหัส Hamming ที่มีชื่อเสียง กลไกของ Hamming (7,4) เป้าหมายของรหัส Hamming คือการสร้างชุดของบิตพาริตี้ที่ทับซ้อนกันเช่นมีข้อผิดพลาดบิตเดียว (หนึ่งบิตพลิก) ในบิตข้อมูลหรือบิตพาริตี้สามารถตรวจพบและแก้ไขได้ เฉพาะในกรณีที่มีข้อผิดพลาดหลายอย่างรหัสแฮมมิงไม่สามารถกู้คืนข้อมูลดั้งเดิมได้ อาจไม่สังเกตเห็นข้อผิดพลาดเลยหรือแม้แต่แก้ไขให้ถูกต้อง ดังนั้นในความท้าทายนี้เราจะจัดการกับข้อผิดพลาดบิตเดียวเท่านั้น ตัวอย่างของรหัส Hamming เราจะดูรหัส Hamming (7,4) นอกจากนี้ในข้อมูล 4 บิตd1, d2, d3, d4จะใช้ 3 บิตพาริตีp1, p2, p3ซึ่งคำนวณโดยใช้สมการต่อไปนี้: p1 = (d1 + …

11
เอาท์พุทใบหน้าบนคิวบ์ที่ระบุหมายเลข
กำหนดตัวเลข 0 ถึง 7 ถึง 8 จุดยอดของลูกบาศก์ในแบบที่คุณต้องการ ต้องกำหนดหมายเลขหนึ่งให้กับแต่ละจุดสุดยอดอย่างแน่นอน ตัวอย่างเช่นจุดยอดของคุณอาจถูกกำหนดเช่นนี้: 3-----1 /| /| 4-----2 | | | | | | 5---|-0 |/ |/ 6-----7 เขียนโปรแกรมที่ใช้จำนวนเต็มตั้งแต่ 0 ถึง 5 แต่ละหมายเลข 6 ตัวเหล่านี้เชื่อมโยงกับคิวบ์หน้าเดียวของคุณในแบบที่คุณต้องการ เมื่อป้อนหนึ่งในตัวเลขเหล่านี้จะต้องพิมพ์ตัวเลขสี่จุดยอดของใบหน้าที่เกี่ยวข้องไปยัง stdout ในรูปแบบตัวเลข 2 × 2 ใบหน้าจะต้องถูกมองตรงจากนอกลูกบาศก์ การหมุนใบหน้าทั้ง 4 ใบหน้านั้นถูกต้อง ตัวอย่างเช่นถ้า 0 เกี่ยวข้องกับด้านหน้าของคิวบ์ตัวอย่างด้านบนนี่จะเป็นเอาต์พุตที่ถูกต้องสำหรับอินพุต0: 42 67 ใบหน้าอาจถูกมองด้วยการหมุน 90 °ดังนั้นสิ่งเหล่านี้จึงถูกต้อง: 27 46 …

30
สร้างกล่อง!
งานของคุณคือการสร้างกล่องโดยใช้อักขระ ASCII ใดก็ได้ที่เกี่ยวข้องกับอินพุตที่กำหนด กรณีทดสอบ 1 1 --> ===== = = ===== 1 2 --> ========= = = = ========= 2 1 --> ===== = = ===== = = ===== 2 2 --> ========= = = = ========= = = = ========= 2 5 --> ===================== = = = = = …

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