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

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

7
กล่องเล็ก ๆ บนเนินเขา
มีเพลงเหน็บแนมที่เรียกว่าLittle Boxesเดิมโดย Malvina Reynolds เกี่ยวกับการแผ่กิ่งก้านสาขาชานเมืองที่มีเนื้อเพลงดังนี้: กล่องเล็ก ๆ ที่อยู่บนเนินเขา กล่องเล็ก ๆ ที่ทำจากไม่มีเล่ห์เหลี่ยม กล่องเล็ก ๆ บนเนินเขา กล่องเล็ก ๆ ทั้งหมดเหมือนกัน มีสีเขียวหนึ่งอันสีชมพูหนึ่ง อันสีฟ้าหนึ่งอันสีเหลือง และพวกมันล้วนทำจากสิ่งที่ไม่มีรสนิยมที่ดี และพวกมันทั้งหมดก็ดูเหมือนกัน งานของคุณที่นี่ได้รับการป้อนข้อมูลจำนวนเต็มที่n>1แสดงขนาดของบ้านเอาท์พุทสี่ "กล่องเล็ก" โดยใช้สีต่อไปนี้ (ในสัญกรณ์ 0xRRGGBB): Green -- 0x00FF00 Pink --- 0xFF00FF (technically magenta) Blue --- 0x0000FF Yellow - 0xFFFF00 หากคอนโซลเฉพาะของคุณไม่มีสีที่แน่นอนเหล่านี้คุณสามารถใช้ที่ใกล้เคียงที่สุดที่มีอยู่ (เช่นรหัสหลบหนี ANSI) บ้านสร้างด้วยn _พื้นและหลังคา พวกเขาถูกล้อมรอบด้วยตัวอักษรn/2(ปัดขึ้น) |แทนผนัง หลังคา2สูงเสมอและอยู่สองแห่ง/ที่ขอบด้านซ้ายสองหลังคาที่\อยู่ด้านขวาและn-2 -แสดงถึงหลังคาสูงสุด เมื่อบ้านมีขนาดใหญ่ขึ้นขนาดของหลังคาเปรียบเทียบก็จะเล็กลง …

17
แผนภูมิแท่งสิบแถว
นี่คือหลุม-1 จากฤดูใบไม้ร่วงทัวร์นาเมนต์ของ APL CodeGolf ฉันเป็นผู้เขียนปัญหาดั้งเดิมที่นั่นและอนุญาตให้โพสต์ใหม่ได้ที่นี่ รับรายการตัวเลขสร้างแผนภูมิแท่งแนวนอนของ#ตัวอักษรสำหรับจำนวนที่พอดีกับแต่ละกลุ่มที่มีขนาดเท่ากันสิบกลุ่ม ตัวอย่างเช่นถ้าข้อมูลมีค่าตั้งแต่ 0-100 ช่วงจะเป็น 0–9.9, 10–19.9, …, 90–100 (เป็นทางการ [0,10), [10,20), …, [90,100].) คุณอาจคิดว่าจะมีตัวเลขอย่างน้อยสองตัวและไม่ใช่ว่าตัวเลขทั้งหมดจะเหมือนกัน ตัวอย่าง: [1,0,0,0,0,0,0,0,0,0] ให้: ######### # [0,1,2,3,4,5,6,7,8,9] ให้: # # # # # # # # # # [0,1,2,3,4,5,6,7,8,9,10] ให้: # # # # # # # # # ## [0,1,2,3,4,5,6,7,8,9,10,11] ให้: …

16
ลำดับการยกกำลัง
เหมืองเกลือโปแลนด์ที่เก่าแก่ที่สุดซึ่งตั้งอยู่ที่ Bochnia * เริ่มต้นในปี 1248 ซึ่งเราสามารถพิจารณาตัวเลขมหัศจรรย์ได้ เราจะเห็นว่ามันเป็นเท่ากับ 4 หลักจากลำดับของ exponentiations นี้: เนื่องจากวันที่นั้นเป็นตัวเลข 4 หลักจริง ๆ เราสามารถทำให้มันยาวขึ้นได้ เราสามารถทำซ้ำขั้นตอนนี้ได้จนกว่าจะถึงระยะอนันต์ ลำดับจะเป็นแบบนี้ถ้าเรา จำกัด จำนวน2048 124816326412825651210242048 เพื่อให้ดูดีขึ้นเล็กน้อยเราสามารถแยกตัวเลข: 1|2|4|8|16|32|64|128|256|512|1024|2048 ลองลำดับที่กำหนดเองยาวกว่าวันที่ สมมติว่าเราต้องการให้มี 5 หลัก - มีความเป็นไปได้มากกว่าหนึ่ง: 24816 81632 64128 หรือ 3 หลัก: 124 248 816 นอกจากนี้เรายังสามารถเพิ่มตัวเลข 3 หลักนี้ แต่ขอบอกว่าของที่ลำดับที่จะต้องมีอย่างน้อยสองหมายเลข * ไม่มีข้อมูลเกี่ยวกับเรื่องนี้ในวิกิพีเดียภาษาอังกฤษ หากคุณป้อนรุ่นโปแลนด์ - แล้วมี ถ้าคุณไปที่เหมืองคนงานจะบอกคุณด้วยว่ามันเริ่มต้นในปี 1248 ความท้าทาย …

4
ยืดอาร์เรย์
ก่อนหน้านี้ฉันกำหนดกระบวนการในการบดขยี้อาร์เรย์ ในความสนใจเราอ่านอาร์เรย์จากซ้ายไปขวา หาก ณ จุดที่เราพบสององค์ประกอบเดียวกันในแถวที่เราลบหนึ่งและสองครั้งที่สอง ตัวอย่างเช่นที่นี่เป็นกระบวนการของการบดขยี้อาร์เรย์ต่อไปนี้ [5,2,2,4] ^ [5,2,2,4] ^ [5,2,2,4] ^ [5,4,4] ^ [5,4,4] ^ [5,8] ^ โปรดทราบว่าองค์ประกอบเดียวกันสามารถยุบได้หลายครั้ง ในตัวอย่าง2,2,4ถูกยุบลง8ในรอบเดียว ตอนนี้การบดย่อยอาร์เรย์เป็นเรื่องง่ายอะไรที่ยากคือการบดขยี้พวกเขา งานของคุณคือการใช้อาร์เรย์ของจำนวนเต็มบวกเป็นอินพุทและเอาท์พุทอาเรย์ที่ใหญ่ที่สุดที่สามารถสร้างรูปแบบการป้อนข้อมูลเมื่อบดซ้ำ ๆ ยกตัวอย่างเช่นอาร์เรย์[4]จะเกิดขึ้นโดยเด็ดขาดซึ่งเป็นในทางกลับกันที่เกิดขึ้นจากการบด[2,2] [1,1,1,1]เนื่องจากเราไม่สามารถมีค่าที่ไม่ใช่จำนวนเต็ม[1,1,1,1]ไม่สามารถ unrushed ใด ๆ เพิ่มเติมและเป็นคำตอบของเรา คุณจะไม่ได้รับ0อาร์เรย์ในอินพุทของคุณเพราะอาร์เรย์ดังกล่าวสามารถขยายได้อย่างไม่มีกำหนด คุณจะไม่ได้รับคดีที่มีเลขคี่สองตัวติดกันกรณีดังกล่าวไม่สามารถเป็นผลมาจากการย่อยยับ นี่คือcode-golfดังนั้นคำตอบจะถูกทำคะแนนด้วยขนาดของแหล่งที่มาของพวกเขาวัดเป็นไบต์ด้วยไบต์ที่น้อยกว่าจะดีกว่า ก่อนที่คุณจะเริ่มทำคำตอบฉันแค่อยากบอกว่าความท้าทายนี้ยากกว่าที่คิด ตรวจสอบสัญชาติญาณของคุณในขณะที่คุณไปและให้แน่ใจว่าคำตอบของคุณผ่านทุกกรณีทดสอบ กรณีทดสอบ [] -> [] [5] -> [5] [6] -> [3,3] [8] -> [1,1,1,1,1,1,1,1] [4,8] -> [1,1,1,1,1,1,1,1,1,1,2] …

11
รวมใบหน้าของคิวบ์ Cubically
การรวมใบหน้าคิวบ์แบบลูกบาศก์ด้วยตนเองนั้นเป็นเรื่องที่น่าเบื่อและใช้เวลานานและ sorta ก็เหมือนกับการเขียนโค้ดในแบบลูกบาศก์ ในcubifier ที่มีประสิทธิภาพที่สุดฉันขอให้คุณแปล ASCII เป็นแหล่งข้อมูลแบบลูกบาศก์ หนึ่งในคำตอบนั้นใช้ลำดับการกำหนดค่าเริ่มต้นของคิวบ์จากนั้นปรับเปลี่ยนคิวบ์ผลลัพธ์ตามจำนวนผลรวมของคิวบ์ที่กำหนดค่าเริ่มต้นไว้ล่วงหน้า วิธีนี้ถูกใช้ในโปรแกรมที่เกี่ยวข้องกับผู้ใช้หลายคนตั้งแต่ Cubically เมื่อทำการทดสอบลำดับการกำหนดค่าเริ่มต้นใหม่เราต้องเพิ่มค่าทั้งหมดบนใบหน้าทั้งหมดซึ่งโดยปกติจะใช้เวลาสองหรือสามนาที งานของคุณคือทำให้กระบวนการนี้เป็นอัตโนมัติสำหรับเรา! คุณจะใช้เวลาสองปัจจัยการผลิตเป็นจำนวนเต็มและสตริงn cสิ่งเหล่านี้อาจอ่านได้จากอาร์กิวเมนต์บรรทัดคำสั่งอาร์กิวเมนต์ฟังก์ชันอินพุตมาตรฐานไฟล์หรือการรวมกันของสิ่งเหล่านั้น cจะเป็นคิวบ์หน่วยความจำแบบลูกบาศก์ขนาดnตามที่พิมพ์โดยนักแปล ล่าม Cubically จะทิ้ง cube ไว้ที่ STDERR เมื่อมีการยกเลิกโปรแกรมซึ่งจัดรูปแบบไว้อย่างดีเพื่อการดูที่ง่าย รันโปรแกรมว่างในตัวแปล Cubicallyและเปิดส่วนดีบักเพื่อดูการถ่ายโอนข้อมูลคิวบ์ของคิวบ์เริ่มต้น เพิ่มอาร์กิวเมนต์4เพื่อดู 4x4x4 หรือ5ดู 5x5x5 เป็นต้น หากnเป็น 3 cจะเป็นไปตามรูปแบบนี้ (จำนวนเต็มจะเป็นตัวแปร): 000 000 000 111222333444 111222333444 111222333444 555 555 555 ช่องว่างการขึ้นบรรทัดใหม่และทั้งหมด ถ้าnเป็น 4 cจะมีลักษณะเช่นนี้ (เช่นเดียวกับจำนวนเต็มตัวแปร): 0000 0000 0000 …

2
สร้างวงเล็บแข่งขัน
รับรายการอินพุตของสตริงที่ไม่ว่างให้แสดงเอาต์พุต ASCII art ที่เป็นตัวแทนของทัวร์นาเมนต์ตามกฎการวาดภาพต่อไปนี้: จำนวนสตริงรับประกันได้ว่าเป็นปริมาณ 2,4,8,16,etc. สองสายแรกเล่นกันและอีกสองสายเล่นกันและอื่น ๆ นี่คือรอบแรก สำหรับแต่ละเกมให้เลือกผู้ชนะแบบสุ่มโดยมีความน่าจะเป็นเท่ากัน สำหรับรอบต่อไปผู้ชนะในเกมแรกจะเป็นผู้ชนะในเกมที่สองผู้ชนะในเกมที่สามจะเป็นผู้ชนะในเกมที่สี่และต่อไป รอบต่อมาตามรูปแบบ ในที่สุดก็มีหนึ่งผู้ชนะโดยรวม สำหรับการส่งออกสวย (จำเป็น) _สายทั้งหมดจะต้องใช้ได้และต่อท้ายด้วยการขีดเส้นใต้ เพื่อให้วงเล็บเข้าแถวอย่างเหมาะสมแต่ละรายการจะต้องถูกบุด้วย_ความยาวเท่ากันสำหรับรอบนั้น คุณสามารถเลือกได้ว่าการเติมเต็มจะเติมหรือต่อท้ายตราบใดที่สอดคล้องกัน คุณสามารถเลือก pre-pad สตริงทั้งหมดให้มีความยาวเท่ากันแทนที่จะเป็นต่อรอบ แล้วแต่จำนวนใดจะ golfier สำหรับรหัสของคุณ กฎเพิ่มเติม ขึ้นบรรทัดใหม่หรือต่อท้ายช่องว่างหรือช่องว่างทั้งหมดเป็นตัวเลือกตราบใดที่ตัวละครตัวเองเข้าแถวอย่างถูกต้อง ยอมรับได้ทั้งโปรแกรมหรือฟังก์ชั่น หากฟังก์ชั่นคุณสามารถส่งคืนผลลัพธ์มากกว่าการพิมพ์ หากเป็นไปได้โปรดใส่ลิงค์ไปยังสภาพแวดล้อมการทดสอบออนไลน์เพื่อให้ผู้อื่นสามารถลองใช้รหัสของคุณได้! ช่องโหว่มาตรฐานเป็นสิ่งต้องห้าม นี่คือรหัส - กอล์ฟเพื่อให้ใช้กฎการเล่นกอล์ฟตามปกติทั้งหมดและรหัสที่สั้นที่สุด (เป็นไบต์) ชนะ ตัวอย่าง ตัวอย่างกับเมือง['Boston', 'New York', 'Charlotte', 'Atlanta', 'St. Paul', 'Chicago', 'Los Angeles', 'Phoenix']: _Boston______ \_New York____ …

4
การกลับมาของผู้ฆ่าไฮดรา
เป็นเวลานานแล้วที่คุณฆ่าไฮดรานั้นคุณก็ดื่มด่ำกับความรุ่งเรืองมาหลายปี แต่ตอนนี้ผู้คนกำลังเรียกคุณว่าถูกชะล้าง ถึงเวลาที่คุณจะพิสูจน์พวกเขาผิดคุณได้ยินเสียงของไฮดราอีก เพียงแค่ฆ่ามันและคุณจะได้รับเกียรติทั้งหมดที่คุณสมควรได้รับ คุณมาถึงคลังอาวุธเพื่อรับดาบของคุณ แต่พวกเขาทั้งหมดออกจากดาบปกติทั้งหมดที่เหลืออยู่คือภาค n- เซกเตอร์จะแบ่งจำนวนของหัวบนไฮดราโดย n แต่สามารถใช้ได้ถ้าจำนวนของหัวคือหารด้วย n คุณจะต้องเขียนโค้ดอีกครั้งเพื่อช่วยคุณฆ่าไฮดรา รหัสของคุณจะใช้เป็นจำนวนหัวที่ไฮดราเริ่มการต่อสู้ด้วยจำนวนหัวที่ไฮดราเติบโตในแต่ละตาและรายชื่อของภาค n ที่คุณสามารถใช้ รหัสของคุณจะแสดงรูปแบบการเคลื่อนไหวที่ดีที่สุดเพื่อสังหารไฮดราโดยเร็วที่สุด ในแต่ละเทิร์นของการต่อสู้คุณสามารถเลือกดาบเดี่ยวที่จะใช้หากหลังจากไฮดราไฮดรามีหัวเดียวเท่านั้นที่คุณชนะถ้าไม่ใช่มันจะเพิ่มขึ้น คุณอาจไม่มีทางเคลื่อนไหวและถ้าไม่มีการเคลื่อนไหวใด ๆ ที่เป็นไปได้คุณก็แพ้ หากไม่สามารถแก้ปัญหาได้คุณสามารถส่งออกสิ่งอื่นนอกเหนือจากโซลูชันเช่นรายการว่างเปล่าไม่มีอะไรจำนวนศูนย์ ฯลฯ นี่คือcode-golfดังนั้นคำตอบจะถูกนับเป็นจำนวนไบต์โดยมีน้อยกว่าดีกว่า กรณีทดสอบ นี่คือบางกรณีทดสอบขั้นพื้นฐานสุดกรณีทดสอบเพิ่มเติมจะถูกเพิ่มตามคำขอ 24 heads, 1 heads per turn, [2,3] -> [3,3,2,3] 25 heads, 2 heads per turn, [2,3] -> No solutions 4 heads, 2 heads per turn, …
13 code-golf  math  number  game 

28
การแยกตัวของอาเรย์
รับอาร์เรย์ของจำนวนเต็มบวกส่งออกอาร์เรย์ที่มั่นคงของปัจจัยหลักที่แตกต่างของจำนวนเต็มเหล่านี้ กล่าวอีกนัยหนึ่งสำหรับแต่ละจำนวนเต็มในอินพุตตามลำดับรับปัจจัยสำคัญเรียงลำดับและผนวกเฉพาะช่วงเวลาใด ๆ ที่ไม่ได้อยู่ในเอาต์พุตไปยังเอาต์พุต กรณีทดสอบ [1,2,3,4,5,6,7,8,9,10] -> [2,3,5,7] [10,9,8,7,6,5,4,3,2,1] -> [2,5,3,7] [100,99,98,1,2,3,4,5] -> [2,5,3,11,7] [541,60,19,17,22] -> [541,2,3,5,19,17,11] [1,1,2,3,5,8,13,21,34,45] -> [2,3,5,13,7,17] [6,7,6,7,6,7,6,5] -> [2,3,7,5] [1] -> [] [8] -> [2] [] -> [] เอาต์พุตสามารถเป็นอาร์เรย์หรือรายการของจำนวนเต็มหรือสตริง, เอาต์พุตแบบมีตัวคั่นหรือวิธีมาตรฐานอื่นใดของเอาต์พุตเอาต์พุตรายการตัวเลข นี่คือcode-golfดังนั้นคำตอบที่สั้นที่สุดในหน่วยไบต์ชนะ

5
ค่าสัมประสิทธิ์สหสัมพันธ์อันดับ
ค่าสัมประสิทธิ์สหสัมพันธ์ปกติ(ใน 2d) วัดว่าชุดของจุดสามารถอธิบายได้ดีแค่ไหนและถ้าใช่สัญญาณของมันบอกเราว่าเรามีความสัมพันธ์เชิงบวกหรือเชิงลบ แต่นี่อนุมานว่าพิกัดของจุดสามารถแปลความหมายเชิงปริมาณเช่นการวัดได้ หากคุณไม่สามารถทำเช่นนั้นได้ แต่คุณยังสามารถสั่งพิกัดได้นั่นก็คือสัมประสิทธิ์สหสัมพันธ์อันดับ : มันจะวัดว่าจุดใดที่สามารถอธิบายคะแนนได้ด้วยฟังก์ชั่นโมโนโทน ท้าทาย ได้รับรายชื่อของจุด 2d การตรวจสอบของพวกเขามีค่าสัมประสิทธิ์สหสัมพันธ์อันดับ รายละเอียด คุณสามารถสมมติว่าอินพุตเป็นจำนวนเต็มบวก (แต่คุณไม่จำเป็นต้อง) หรือค่า "เรียงลำดับ" อื่น ๆ คะแนนสามารถนำมาเป็นรายการของจุดหรือสองรายการสำหรับ x- และ y- พิกัดหรือเมทริกซ์หรืออาร์เรย์ 2d เป็นต้น ผลลัพธ์จะต้องเป็นทศนิยมหรือประเภทเหตุผลตามที่ควรเป็นตัวแทนจำนวนจริงระหว่าง 0 และ 1 คำนิยาม ตำแหน่ง:ได้รับรายชื่อของตัวเลขX=[x(1),...,x(n)]ที่เราสามารถกำหนดจำนวนบวกrx(i)เรียกว่าอันดับของx(i)แต่ละรายการ เราทำได้โดยการเรียงลำดับรายการและการกำหนดดัชนีของในรายการที่เรียงลำดับx(i) rx(i)หากสองคนขึ้นไปx(i)มีค่าเท่ากันเราก็แค่ใช้ค่าเฉลี่ยเลขคณิตของดัชนีที่สอดคล้องกันทั้งหมดเป็นอันดับ ตัวอย่าง: List: [21, 10, 10, 25, 3] Indices sorted: [4, 2, 3, 5, 1] หมายเลข10ปรากฏสองครั้งที่นี่ ในรายการที่เรียงลำดับก็จะครอบครองดัชนีและ2 …

1
กลายเป็นผู้ฆ่าไฮดรา
คุณเป็นฮีโร่ที่ดีที่สุดและมีชื่อเสียงที่สุดในพื้นที่ เมื่อไม่นานมานี้มีข่าวลือว่าไฮดราถูกแขวนอยู่ในหุบเขาใกล้เคียง เป็นฮีโร่ที่กล้าหาญและมีคุณธรรมที่คุณเป็นคุณจะต้องไปตรวจสอบในวันนี้ ปัญหาของไฮดราคือทุกครั้งที่คุณพยายามที่จะตัดหัวของพวกเขาบางคนก็งอกใหม่ โชคดีสำหรับคุณคุณมีดาบที่สามารถตัดหัวได้หลายหัวในครั้งเดียว แต่มีการจับถ้าไฮดรามีหัวน้อยกว่าการตัดดาบของคุณคุณจะไม่สามารถโจมตีไฮดรา เมื่อไฮดรามีหัวเป็นศูนย์แน่นอนคุณได้ฆ่ามัน นอกจากนี้ยังมีดาบพิเศษที่เรียกว่าThe Bisectorซึ่งจะตัดหัวของไฮดราออกครึ่งหนึ่ง แต่ถ้าจำนวนหัวเท่ากัน Bisector ไม่สามารถใช้งานได้เลยเมื่อจำนวนของหัวเป็นเลขคี่ สิ่งนี้แตกต่างจากการตัดศูนย์หัว ดังนั้นคุณตัดสินใจว่าคุณจะเขียนโปรแกรมคอมพิวเตอร์เพื่อหาวิธีที่ดีที่สุดในการสังหารไฮดรา งาน คุณจะได้รับเป็นอินพุต จำนวนหัวที่ไฮดราเริ่มต้นด้วย จำนวนของหัวที่ไฮดรางอกใหม่ในแต่ละเทิร์น รายการดาบที่มีให้ใช้งานแต่ละอัน (แต่ละอันคือเส้นแบ่งครึ่งหรือตัดจำนวนคงที่ของหัวแต่ละตา) คุณควรแสดงรายการการเคลื่อนไหวที่จะฆ่าไฮดราในจำนวนรอบที่น้อยที่สุดที่เป็นไปได้ หากไม่มีวิธีที่จะฆ่าไฮดราคุณต้องส่งออกค่าอื่น ๆ ที่ระบุดังนี้ หากมีหลายวิธีที่ดีที่สุดในการฆ่าไฮดราคุณสามารถส่งออกหนึ่งในนั้นหรือทั้งหมด นี่เป็นคำถามเกี่ยวกับรหัสกอล์ฟดังนั้นคำตอบจะได้คะแนนเป็นไบต์โดยมีจำนวนไบต์น้อยกว่าดีกว่า กรณีทดสอบ เพิ่มเติมตามคำขอ 5 heads, 9 each turn, [-1,-2,-5] -> [-5] 12 heads, 1 each turn, [/2,-1] -> No solution 8 heads, 2 each turn, …
13 code-golf  math  game 

5
การแฮ็กสถานีออกมาเสีย
มีใครที่นี่ที่เป็นแฟนของ Bethesda หรือ? บางทีคุณอาจชอบ Obsidian Entertainment? ถ้าคุณเป็นอย่างใดอย่างหนึ่งของสิ่งเหล่านั้นกว่าภาพต่อไปนี้ควรจะค่อนข้างคุ้นเคยกับคุณ ฉันได้รับอิสรภาพในการเตรียมการท้าทาย ASCII-Art ที่ไม่เหมือนใครดังนั้นนี่เป็นเงื่อนงำแรกเกี่ยวกับสิ่งที่ฉันจะให้คุณทำ: _____________________________________________________ / \ | _____________________________________________ | | | | | | | Welcome to ROBCO Industries (TM) Termlink | | | | Password Required | | | | Attempts Remaining: | | | | | | | | 0x01 | …

8
แผนที่ระยะทางรถแท็กซี่น้อยที่สุด
คำอธิบายการท้าทาย ในตัวชี้วัดรถแท็กซี่ระยะห่างระหว่างจุดสองจุดถูกกำหนดเป็น: พิจารณาเมทริกซ์ที่มีค่าศูนย์และรายการเดียว: 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 0 0 0 Let 's map แต่ละ1ระยะทางที่ใกล้ที่สุดที่จะแตกต่างกัน 1ในเมทริกซ์ (แน่นอนสมมติว่าระยะห่างระหว่างสองแถวที่อยู่ติดกัน / คอลัมน์ที่มีค่าเท่ากับ 1): 0 0 0 3 0 2 0 0 0 0 0 0 0 …

4
แฟร์มาต์หมายเลขนี้เป็นอย่างไร?
ตัวเลขแฟร์มาต์เป็นจำนวนเต็มบวกที่สามารถแสดงเป็น 2 2 x +1 ด้วยจำนวนเต็ม x ให้เรากำหนดคุณลักษณะของจำนวนที่เรียกว่า "แฟร์มาต์เนส": แฟร์มาต์ของจำนวนนั้นน้อยกว่าความยาวของห่วงโซ่แห่งพลังทั้งสองเริ่มต้นจากฐานด้วยพลังของทั้งสองขยายตัวเพื่อเพิ่มความสมบูรณ์ของแฟร์มาต์ หมายเลขที่ไม่ใช่หมายเลขแฟร์มาต์มีจำนวนแฟร์มาต์เป็นศูนย์ ดังนั้น 17 (= 2 2 2 2 0 +1) มีแฟร์มาต์สามคน ท้าทาย รับจำนวนเต็มบวกที่ไม่ใช่ศูนย์เป็นอินพุตส่งออกแฟร์มาต์ของจำนวน กฎระเบียบ คุณสามารถรับอินพุตเป็นเลขฐานสองทศนิยมฐานสิบหกเป็นค่าขยายหรือรูปแบบใดก็ตามที่ช่วยให้คุณตีกอล์ฟได้ดีที่สุด โซลูชันของคุณจะต้องสามารถประมวลผลหมายเลขที่มีความยาวบิตมากกว่า 64 ไม่ว่าคุณจะใช้วิธีใด จำนวนเต็มไม่ใช่ค่าลบเท่านั้น แน่นอนช่องโหว่มาตรฐานเป็นสิ่งต้องห้าม นี่คือรหัสกอล์ฟคำตอบที่สั้นที่สุดจึงชนะ กรณีทดสอบ input->outputเหล่านี้อยู่ในรูปแบบ อินพุตอยู่ในเลขฐานสิบหกเพื่อประหยัดพื้นที่ 10000000000000000000000000000000000000000000000000000000000000001 -> 2 1000000000000BC00000000000000000000000000000000001000000000000001 ->0 1234567890ABCDEF -> 0 100000000000000000000000000000001 -> 1 5 -> 2 11 -> …

3
ถนนสามารถข้ามแม่น้ำได้หลายวิธี
ลองนึกภาพแม่น้ำตรงและถนนที่จะไปข้ามแม่น้ำnครั้งผ่านสะพาน ถนนไม่วนตัวเองและมีความยาวไม่ จำกัด ถนนเส้นนี้จะถือว่าเป็นเส้นทางคดเคี้ยว เปิดคดเคี้ยวเป็นเส้นโค้งเปิดที่ไม่ได้ตัดเองและขยายอนันต์ที่ปลายทั้งสองซึ่งตัดเป็นเส้นnครั้ง คดเคี้ยวที่ถูกต้องอาจอธิบายได้ทั้งหมดตามคำสั่งของจุดตัดที่มันเข้าชม จำนวนของรูปแบบที่แตกต่างของจุดตัดกับnแยกคดเคี้ยวสามารถเป็นจำนวน meandric ที่ n ตัวอย่างเช่น n = 4: ตัวเลขสองสามตัวแรกของลำดับนี้คือ: 1, 1, 1, 2, 3, 8, 14, 42, 81, 262, 538, 1828, 3926, 13820, 30694, 110954... นี่คือOEIS ลำดับ A005316 ท้าทาย เขียนโปรแกรม / ฟังก์ชั่นที่ใช้เป็นจำนวนเต็มบวกnเป็น input และพิมพ์จำนวน meandric ที่ n ข้อมูลจำเพาะ ใช้กฎ I / O มาตรฐาน ช่องโหว่มาตรฐานจะต้องห้าม …

1
องค์ประกอบทั่วไปของรายการใน Python
นี่คือคำถามเคล็ดลับสำหรับการเล่นกอล์ฟใน Python ซึ่งอยู่ในหัวข้อหลัก ฉันกำลังมองหาวิธีที่สั้นที่สุดเพื่อให้ได้องค์ประกอบทั้งหมดที่พบบ่อยที่สุดของรายการใน Python ในวิธีที่สั้นที่สุด นี่คือสิ่งที่ฉันได้ลองสมมติว่ารายการอยู่ในตัวแปรที่เรียกว่าl: from statistics import* mode(l) การทำเช่นนี้จะเกิดข้อผิดพลาดหากมีหลายโหมด max(l,key=l.count) คืนนี้มีเพียง 1 รายการฉันต้องได้องค์ประกอบทั้งหมดที่มีค่ามากที่สุด from collections import* Counter(l).most_common() ส่งคืนรายการของ tuples ของ(element, count)เรียงตามจำนวน จากนี้ฉันสามารถดึงองค์ประกอบทั้งหมดที่มีจำนวนที่สอดคล้องกันเท่ากับครั้งแรก แต่ฉันไม่เห็นวิธีการเล่นกอล์ฟที่ดีกว่านี้มาก: from collections import* c=Counter(l).most_common() [s for s,i in c if i==c[0][1]] ฉันแน่ใจว่ามีวิธีที่สั้นกว่า! นอกจากนี้หากสามารถทำได้โดยไม่ต้องกำหนดค่าตัวแปรหรือใช้หลายครั้งlฉันสามารถเก็บรหัสที่เหลือไว้เป็นนิพจน์แลมบ์ดาเพื่อประหยัดไบต์ได้มากขึ้น แก้ไข: ตามข้อเสนอแนะของ @ Uriel เราสามารถทำได้: {s for s in l if …
13 code-golf  tips  python 

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