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

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

1
ประมาณค่าคงที่ของFransén-Robinson
รับอินพุตnส่งออกค่าของค่าคงที่Fransén-Robinsonด้วยnตัวเลขหลังจุดทศนิยมด้วยการปัดเศษ กฎระเบียบ คุณอาจจะสมมติว่าอินพุตทั้งหมดเป็นจำนวนเต็มระหว่าง 1 ถึง 60 คุณไม่สามารถจัดเก็บค่าที่เกี่ยวข้องใด ๆ - ค่าคงที่ต้องคำนวณไม่ถูกเรียกคืน การปัดเศษต้องกระทำด้วยเกณฑ์ต่อไปนี้: หากตัวเลขถัดจากตัวเลขสุดท้ายน้อยกว่าห้าหลักสุดท้ายจะต้องยังคงเหมือนเดิม หากตัวเลขหลังตัวเลขสุดท้ายมากกว่าหรือเท่ากับห้าหลักสุดท้ายจะต้องเพิ่มขึ้นทีละหนึ่ง คุณต้องส่งออกn+1ตัวเลขแรกเท่านั้น ช่องโหว่มาตรฐานใช้ กรณีทดสอบ >>> f(0) 3 >>> f(1) 2.8 >>> f(11) 2.80777024203 >>> f(50) 2.80777024202851936522150118655777293230808592093020 >>> f(59) 2.80777024202851936522150118655777293230808592093019829122005 >>> f(60) 2.807770242028519365221501186557772932308085920930198291220055

2
ผกผันของดอกเบี้ยทบต้น
Koronkorkoเป็นคำภาษาฟินแลนด์ที่ให้ความสนใจทบต้น เราไม่ต้องการความสนใจแบบรวมในสายของเราดังนั้นให้หานิพจน์ปกติที่สั้นที่สุดที่เป็นไปได้เพื่อแยกออก กำหนดสตริงประกอบด้วยเฉพาะของตัวอักษรตัวพิมพ์ใหญ่ AZ, KORONKORKOตรวจสอบการแสดงออกปกติที่สั้นที่สุดที่ตรงกับสายถ้ามันไม่ได้มีอักขระย่อย สตริงใด ๆ ที่มีKORONKORKOเป็นสตริงย่อยไม่ควรจับคู่โดย regex เพียง แต่ตัวละครA- Z, [, ], -, ^, , ?, *, +, |, (และ)ควรจะใช้ในการแสดงออก ฉันคิดว่าสิ่งนี้สามารถทำได้กับ 118 ตัวอักษรในการแสดงออก คุณทำให้มันสั้นลงได้ไหม หมายเหตุ: ความท้าทายนี้มาจากOhjelmointiputka (เป็นภาษาฟินแลนด์)

3
ลดความซับซ้อนของวันที่
สิ่งนี้คล้ายกับเศษส่วนที่ทำให้ง่ายขึ้น แต่ใช้วันที่! อินพุตของโปรแกรมของคุณจะต้องเป็นของแบบฟอร์มmm/dd ตัวอย่างเช่น 3/4 //March 4 12/15 //December 15 1/1 // January 1 เราคิดว่าข้อมูลจะถูกต้องเช่นเดือนที่มีจำนวนวันเหล่านี้: January 31 February 28 March 31 April 30 May 31 June 30 July 31 August 31 September 30 October 31 November 30 December 31 งานของโปรแกรมของคุณคือการป้อนข้อมูลที่ถูกต้องสันนิษฐานและซ้ำแล้วซ้ำอีก (หรือเรียกซ้ำ) ทำให้วันที่ง่ายขึ้นและในแต่ละการวนซ้ำ (รวมทั้ง 0) ส่งออกวันที่ด้วยชื่อเต็มของเดือนตามที่เขียนไว้ด้านบน ตัวอย่างเช่น: รับอินพุต: 12/18 จะเอาท์พุท December …

4
เห็นภาพตัวเลขของคริสตจักร
พื้นหลัง การแสดงเงื่อนไข calcul-แคลคูลัส lambda-juggler ที่มีชื่อเสียง (และนักกอล์ฟโค้ด ) John Tromp คิดค้นภาพที่น่าสนใจของคำศัพท์ในλ-แคลคูลัส ในคำพูดของเขา: abstractions (lambdas) แสดงด้วยเส้นแนวนอนตัวแปรตามเส้นแนวตั้งเล็ดลอดออกมาจาก lambda ที่มีผลผูกพันและแอปพลิเคชันโดยลิงก์แนวนอนที่เชื่อมต่อตัวแปรซ้ายสุด ตัวอย่างเช่นคำแลมบ์ดาλf.λx.f (f (f (f (fx)))) สอดคล้องกับการสร้างภาพ: ------------------- | | | | ------------------- | | | | | | | | |---- | | |---- | |---- |---- | อ่านจากบนลงล่าง: เส้นแนวนอนแรกแสดงถึง first เส้นแรก เส้นสี่เส้นที่ลงมาจากนั้นแทนค่าfในร่างกาย ในทำนองเดียวกันเส้นแนวนอนที่สองแสดงถึง …

1
การเข้ารหัสความยาวสองเท่า
ทุกคนรู้ว่าการเข้ารหัสความยาวรันคืออะไร มันเป็นเรื่องของการแข่งขันกอล์ฟโค๊ด เราจะดูรูปแบบที่แน่นอน ตัวอย่าง Normal: 11222222222222222222233333111111111112333322 Run-length: 112(19)3(5)1(11)2333322 จำนวนในวงเล็บระบุจำนวนครั้งที่สัญลักษณ์ก่อนหน้าเกิดขึ้น ในตัวอย่างมีการเข้ารหัสเฉพาะอักขระ 5 ตัวขึ้นไป นี่เป็นเพราะการเข้ารหัสการรัน 4 หรือน้อยกว่านั้นไม่ช่วยปรับปรุงการนับจำนวนตัวอักษร ท้าทาย เขียนฟังก์ชั่น / โปรแกรมที่ใช้รูปแบบของการเข้ารหัสแบบ run-length แต่ยังสามารถเข้ารหัสการทำงานของสองสัญลักษณ์ การวิ่งของสองสัญลักษณ์จะต้องอยู่ในวงเล็บด้วย กลุ่มจะถูกล้อมรอบด้วยวงเล็บ โปรแกรมของคุณต้องยอมรับสตริงเป็นอินพุตและเอาต์พุตสตริงที่ถูกแก้ไขด้วยการแก้ไขที่ทำให้สตริงสั้นลง ตัวอย่าง Normal: 111244411144411144411167676767222222277777222222277777123123123123 Double run-length: 1112((444111)(3))67676767((2(7)7(5))(2))123123123123 หมายเหตุ 111ไม่ได้เข้ารหัสเพราะการเข้ารหัสมัน ( 1(3)) ไม่สั้น สตริง444111เกิดขึ้น 3 ครั้งดังนั้นจึงถูกเข้ารหัส 676767ไม่ได้เข้ารหัสเพราะ((67)(4))มีความยาวมากกว่าเดิม 222222277777222222277777((222222277777)(2))ไม่ได้ถูกเข้ารหัสเป็น ทำไม? เพราะ222222277777ตัวเองสามารถลด2(7)7(5)ได้ 123123123123 ไม่ได้เข้ารหัสเพราะโปรแกรมของคุณควรจัดการกับการทำงานของสองสัญลักษณ์ไม่ใช่สามอย่าง นี่คือ รหัสกอล์ฟรหัสที่สั้นที่สุดจึงชนะ Tie-breaker เป็นการส่งเร็ว หากฉันพลาดอะไรหรือคุณไม่แน่ใจในสิ่งใดโปรดแจ้งให้ฉันทราบในความคิดเห็น

13
คำนวณการแปลงฟูริเยร์แบบไม่ต่อเนื่อง
ใช้การแปลงฟูริเยร์แบบไม่ต่อเนื่อง (DFT) สำหรับลำดับความยาวใด ๆ สิ่งนี้อาจนำไปใช้เป็นทั้งฟังก์ชั่นหรือโปรแกรมและลำดับที่สามารถได้รับเป็นอาร์กิวเมนต์หรือใช้อินพุตมาตรฐาน อัลกอริทึมจะคำนวณผลลัพธ์ตาม DFT มาตรฐานในทิศทางไปข้างหน้า ลำดับการป้อนข้อมูลที่มีความยาวและประกอบด้วยN [x(0), x(1), ..., x(N-1)]ลำดับเอาต์พุตจะมีความยาวเท่ากันและประกอบด้วย[X(0), X(1), ..., X(N-1)]ตำแหน่งที่แต่ละอันX(k)ถูกกำหนดโดยความสัมพันธ์ด้านล่าง กฎระเบียบ นี่คือ รหัสกอล์ฟ ดังนั้นทางออกที่สั้นที่สุดชนะ ไม่อนุญาตให้ใช้ตัวสร้างภายในที่คำนวณ DFT ในทิศทางไปข้างหน้าหรือข้างหลัง ความไม่ถูกต้องของคะแนนลอยตัวจะไม่ถูกนับรวมกับคุณ กรณีทดสอบ DFT([1, 1, 1, 1]) = [4, 0, 0, 0] DFT([1, 0, 2, 0, 3, 0, 4, 0]) = [10, -2+2j, -2, -2-2j, 10, -2+2j, -2, …
9 code-golf  math 

5
เคล็ดลับการตีกอล์ฟใน Lisp
เคล็ดลับทั่วไปสำหรับการเล่นกอล์ฟใน Lisp (ภาษาถิ่นใด ๆ ) คืออะไร? โปรดโพสต์หนึ่งคำตอบต่อคำตอบและมีเพียงคำตอบเฉพาะสำหรับภาษาของ Lisp (เช่น "ลบความคิดเห็น" ไม่ใช่คำตอบ) กรุณาโพสต์ภาษาของเสียงกระเพื่อมปลายของคุณใช้กับปลายของคุณ
9 code-golf  tips  lisp 

16
มีสองชุดเท่ากัน
{}เป็นชุดที่ว่างเปล่า คุณสามารถใช้()หรือ[]ถ้าคุณเลือก เราจะไม่กำหนด "ชุด" อย่างจริงจัง แต่ตั้งค่าทั้งหมดตามคุณสมบัติต่อไปนี้: ชุดตามโครงสร้างทางคณิตศาสตร์ตามปกติ นี่คือบางจุดสำคัญ: ไม่มีการสั่งซื้อชุด ไม่มีชุดประกอบด้วยตัวเอง องค์ประกอบอยู่ในเซตหรือไม่นี่คือบูลีน ดังนั้นองค์ประกอบชุดจึงไม่สามารถมีหลายหลากได้ (เช่นองค์ประกอบไม่สามารถอยู่ในชุดได้หลายครั้ง) องค์ประกอบของชุดก็เป็นชุดและ{}เป็นองค์ประกอบดั้งเดิมเท่านั้น งาน เขียนโปรแกรม / ฟังก์ชั่นที่กำหนดว่าสองชุดเท่ากัน อินพุต ชุดที่ถูกต้องสองชุดผ่าน stdin หรืออาร์กิวเมนต์ของฟังก์ชัน รูปแบบการป้อนข้อมูลหลวมภายในเหตุผล อินพุตที่ถูกต้องบางส่วนคือ: {} {{}} {{},{{}}} {{{{{},{{}}}}}} {{},{{},{{}}}} {{{},{{}}},{{{{{},{{}}}}}}} อินพุตไม่ถูกต้อง: {{} {} Brackets will always be balanced. {{},{}} {} Set contains the same element twice เอาท์พุต ค่าความจริงถ้าอินพุตเท่ากันเป็นเท็จ กรณีทดสอบ การส่งของคุณควรตอบอย่างถูกต้องสำหรับอินพุตที่ถูกต้องทั้งหมดไม่เพียง …

2
ตีความ DOGO!
ตีความ DOGO DOGOเป็นภาษาการเขียนโปรแกรมที่รู้จักน้อย ในขณะที่ DOGO ดั้งเดิม (ภาษาตลกจากโพสต์ Usenet) ไม่เคยถูกนำมาใช้ แต่ภาษาที่คล้ายกันนั้นถูกสร้างขึ้น คำสั่งสำหรับภาษาคือ: +===========+================================================================+ | Command | Description | +===========+================================================================+ | SIT | If the value of the current memory cell is 0, jump to STAY. | +-----------+----------------------------------------------------------------+ | STAY | If the value of the current memory cell is not 0, …

2
ค้นหาพื้นที่ของรูปหลายเหลี่ยม
เมื่อให้ความยาวด้านต่อเนื่องs1, s2, s3... s_nของ n-gon ที่ถูกจารึกไว้ในวงกลมให้หาพื้นที่ของมัน คุณอาจคิดว่ามีรูปหลายเหลี่ยมอยู่ นอกจากนี้รูปหลายเหลี่ยมจะนูนและไม่ตัดกันเองซึ่งเพียงพอที่จะรับประกันเอกลักษณ์ บิวด์อินที่แก้ปัญหาความท้าทายนี้โดยเฉพาะรวมถึงฟังก์ชั่นในตัวที่คำนวณค่า circumradius หรือ circumcenter นั้นถูกแบน (สิ่งนี้แตกต่างจากเวอร์ชั่นก่อนหน้าของความท้าทายนี้) อินพุต: ความยาวด้านของรูปหลายเหลี่ยมแบบวงกลม อาจถูกใช้เป็นพารามิเตอร์ของฟังก์ชัน stdin ฯลฯ เอาท์พุท: พื้นที่ของรูปหลายเหลี่ยม คำตอบควรแม่นยำถึงตำแหน่งทศนิยม 6 ตำแหน่งและต้องทำงานภายใน 20 วินาทีสำหรับแล็ปท็อปที่เหมาะสม นี่คือรหัสกอล์ฟที่สั้นที่สุดที่จะชนะ! กรณีทดสอบเฉพาะ: [3, 4, 5] --> 6 [3, 4, 6] --> 5.332682251925386 [3, 4, 6, 7] --> 22.44994432064365 [5, 5, 5, 5] --> 25 …

10
ค้นหาพลังเมทริกซ์
ปัญหา สร้างโปรแกรมหรือฟังก์ชั่นที่สามารถคำนวณผลของเมทริกซ์ยกที่n THอำนาจ รหัสของคุณจะนำโดยพลเมทริกซ์ตารางและจำนวนเต็มไม่เป็นลบnและกลับเมทริกซ์ที่มีค่าn ข้อ จำกัด ฟังก์ชันในตัวที่คำนวณพลังงานเมทริกซ์และผลิตภัณฑ์เมทริกซ์ไม่ได้รับอนุญาต ส่วนที่เหลือของกฎมาตรฐานสำหรับ code-golf นำไปใช้ คำอธิบาย รับเมทริกซ์จตุรัสAค่าของA n = AA ⋯ A (ผลิตภัณฑ์เมทริกซ์ที่ทำซ้ำของAด้วยตัวมันเอง, nคูณ) ถ้าnเป็นบวกจะใช้มาตรฐานที่กล่าวถึง เมื่อnเป็นศูนย์เมทริกซ์เอกลักษณ์ที่มีคำสั่งเดียวกันของเป็นผล เป้าหมาย นี่คือรหัสกอล์ฟและรหัสที่สั้นที่สุดชนะ กรณีทดสอบ นี่เป็นเมทริกซ์ใส่nเป็นจำนวนเต็มการป้อนข้อมูลและRคือเมทริกซ์เอาท์พุทที่R = n n = 0 A = 62 72 10 34 r = 1 0 0 1 n = 1 A = 23 61 47 …

6
คำนวณผลรวม Kronecker ของสองเมทริกซ์
ในตัวอย่างด้านล่างAและBจะเป็นเมทริกซ์แบบ 2 ต่อ 2 และเมทริกซ์จะถูกจัดทำดัชนีแบบหนึ่ง Kronecker ผลิตภัณฑ์มีคุณสมบัติดังต่อไปนี้: A⊗B = A(1,1)*B A(1,2)*B A(2,1)*B A(2,2)*B = A(1,1)*B(1,1) A(1,1)*B(1,2) A(1,2)*B(1,1) A(1,2)*B(1,2) A(1,1)*B(2,1) A(1,1)*B(2,2) A(1,2)*B(2,1) A(1,2)*B(2,2) A(2,1)*B(1,1) A(2,1)*B(1,2) A(2,2)*B(1,1) A(2,2)*B(1,2) A(2,2)*B(2,1) A(2,2)*B(1,2) A(2,2)*B(2,1) A(2,2)*B(2,2) Kronecker รวมมีคุณสมบัติดังต่อไปนี้: A⊕B = A⊗Ib + Ia⊗B IaและIbเป็นเมทริกซ์เอกลักษณ์ที่มีขนาดAและBตามลำดับ AและBเป็นเมทริกซ์จตุรัส โปรดทราบว่าAและBสามารถมีขนาดแตกต่างกัน A⊕B = A(1,1)+B(1,1) B(1,2) A(1,2) 0 B(2,1) A(1,1)+B(2,2) 0 A(1,2) …

4
รหัสที่สั้นที่สุดเพื่อความปลอดภัยในการเช็ดดิสก์
ลองเขียนโค้ดที่สั้นที่สุดเพื่อดำเนินการตัวแปรแบบง่ายของDoD 5220.22-M Wipe Methodด้วยการเขียนเพียงสองครั้ง ภาษาการเขียนโปรแกรมใด ๆ ที่ยอมรับ แต่การใช้งานไลบรารี่ที่มุ่งเน้นดิสก์เป็นสิ่งต้องห้าม นี่คือวิธีที่เราจะนำไปใช้ใน pseudocode: Set x to 0 [Start] 'Write Pass For each sector in disk write the content of x 'Verification Pass For each sector in disk { If sector does not contain the content of x then goto [Start] } 'Check whether …
9 code-golf 

5
เดินบน Hypercube
ฉันเพิ่งอ่านทฤษฎีกราฟโดยเฉพาะhypercubesและคิดเกี่ยวกับวิธีที่น่าสนใจในการสร้างเส้นทางบนพวกเขา นี่คือสิ่งที่ฉันมาด้วย ดังที่คุณอาจทราบแล้วว่าคุณสามารถสร้างไฮเปอร์คิวบ์ n- มิติได้โดยนำ n-tuples ทั้งหมดที่ประกอบไปด้วย1และ0เป็นจุดยอดและเชื่อมต่อมันถ้ามันต่างกันในหลักเดียว หากคุณตีความเลขฐานสองเหล่านี้เป็นตัวเลขจำนวนเต็มคุณจะได้กราฟที่มีจุดยอดที่เป็นตัวเลข ตัวอย่างเช่นn=3: สมมติว่าคุณต้องการที่จะใช้เวลาเดินบน hypercube 0นี้และเริ่มต้นที่จุดสุดยอด ตอนนี้คุณจะกำหนดจุดสุดยอดที่คุณต้องการเยี่ยมชมต่อไปได้อย่างไร กฎที่ฉันใช้คือนำจำนวนaจุดยอดที่คุณอยู่พลิกmod(a,n)บิตของมัน(การทำดัชนีแบบ zero-based) แล้วไปที่จุดสุดยอดที่เกิดขึ้น อย่างเป็นทางการกฎนี้สามารถกำหนดซ้ำเป็น a[m+1] = xor(a[m], 2^mod(a[m],n)). โดยทำตามกฎนี้คุณจะยังคงอยู่บนลูกบาศก์และเดินทางไปตามขอบ เส้นทางที่ได้จะมีลักษณะเช่นนี้ อย่างที่คุณเห็นคุณจะเดินเป็นวงกลม! อันที่จริงในทุกมิติและสำหรับทุกจุดเริ่มต้นเส้นทางของคุณจะจบลงด้วยการวนซ้ำ ตัวอย่างเช่นn=14และa[0]=0ดูเหมือนว่านี้ สำหรับนักวางแผนตัวยงความยาวของเส้นทางที่วางแผนไว้เป็นข้อมูลสำคัญ ดังนั้นงานของคุณคือการเขียนฟังก์ชั่นหรือโปรแกรมที่ใช้มิติ hypercube nจุดยอดเริ่มต้นa[0]เป็นอินพุตและเอาต์พุตจำนวนจุดยอดในลูปผลลัพธ์ กรณีทดสอบ n a[0] Output ----------------- 3 0 6 14 0 50 5 6 8 17 3 346 กฎระเบียบ ช่องโหว่มาตรฐานเป็นสิ่งต้องห้าม เอาต์พุต …

6
Final Fantasy XV ยังไม่ได้เปิด!
เนื่องจากฉันถูกสะกดจิตอย่างบ้าคลั่งสำหรับงานFinal Fantasy XV Uncoveredฉันต้องการให้คุณเขียนโปรแกรมเพื่อบอกฉันเมื่อมันเป็น !!! การป้อนข้อมูล การป้อนข้อมูลใช้เวลาของคุณในรูปแบบของHH:MM XDTที่HHเป็นตัวเลขที่อยู่ในช่วง1-12, MMเป็นตัวเลขระหว่าง0-60และXDTเป็นโซนเวลาด้วยXการเป็นหนึ่งในE(ตะวันออก UTC-4), C(กลาง UTC-5) P(แปซิฟิก UTC-7) หรือM(ภูเขา UTC-6) นี่เป็นเวลาที่คาดว่าจะเป็น PM อินพุตที่ถูกต้องประกอบด้วย: 1:00 EDT (1 PM Eastern Daylight Time) 4:05 MDT (4:05 PM Mountain Daylight Time) 12:23 PDT (12:23 PM Pacific Daylight Time) 1:10 CDT (1:10 PM Central Daylight Time) อินพุตอาจถือว่าถูกต้อง ผลลัพธ์ โปรแกรมของคุณจะต้องทำสิ่งต่อไปนี้: …
9 code-golf 

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