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

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

8
สงครามบอลลูนน้ำ
เกม king-of-the-the-hill เกมนี้เป็นเกมวางแผนที่คุณจะต้องโยนลูกโป่งน้ำและหลีกเลี่ยงการโดนน้ำ เป้าหมายคือเพื่อให้ได้คะแนนมากที่สุด คุณจะได้รับแผนที่ของสนามและที่ตั้งของบอลลูนน้ำ คุณสามารถกลับมาว่าคุณต้องการที่จะตีลูกโป่งน้ำ (ถ้าคุณอยู่ใกล้พอ) ในทิศทางที่แน่นอนหรือว่าคุณต้องการที่จะย้ายไปในทิศทางที่แน่นอน โดยเฉพาะ: บอลลูนน้ำจะเริ่มที่(0, 0)30 หน่วยและลดลง หากบอลลูนน้ำกระแทกพื้นผู้เล่นจะถูกสุ่มเลือกให้ลด 4 คะแนนโดยให้น้ำหนักแก่ผู้ที่อยู่ใกล้บอลลูนมากขึ้น นอกจากนี้ผู้เล่นที่ตีบอลลูนครั้งสุดท้ายจะได้รับ 3 คะแนน ดังนั้นหากคุณกดลูกโป่งลงไปคุณจะเสียคะแนนมากที่สุด 1 แต้ม Playerคุณจะเขียนคลาสที่ขยาย คุณจะต้องใช้ตัวสร้าง ตัวสร้างจะมีลักษณะ: public Player1() { super(/* Some numbers */ 3, 3, 4) } ตัวเลขเหล่านี้เป็นdoubles หมายเลขแรกหมายถึงความเร็วของผู้เล่นที่สองหมายถึงความแข็งแกร่งและที่สามหมายถึงโชค ตัวเลขต้องรวมกันไม่เกิน 10 หรือน้อยกว่าและไม่มีตัวเลขใดที่อาจน้อยกว่าหรือเท่ากับศูนย์ ประการที่สองคุณต้องใช้moveวิธีการ นี่เป็นmoveวิธีตัวอย่าง: @Override protected Action move(Map<Player, Point2D> map, Balloon b) …

2
สร้างหุ่นยนต์ขุด
โปรแกรมของคุณจะควบคุมหุ่นยนต์ขุดเพื่อค้นหาแร่ธาตุที่มีค่า หุ่นยนต์ของคุณจะบอกคอนโทรลเลอร์ว่าคุณต้องการย้ายและขุดที่ใดและคอนโทรลเลอร์จะให้ข้อเสนอแนะเกี่ยวกับสถานะหุ่นยนต์ของคุณ ในขั้นแรกหุ่นยนต์ของคุณจะได้รับแผนที่รูปภาพของเหมืองที่มีเพลาขุดอยู่แล้วและไฟล์ข้อมูลที่ระบุค่าและความแข็งของแร่ในเหมือง หุ่นยนต์ของคุณจะเคลื่อนที่ผ่านเพลาเพื่อค้นหาแร่ธาตุที่มีค่าสำหรับการขุด หุ่นยนต์ของคุณสามารถขุดผ่านพื้นโลกได้ แต่ถูกทำให้ช้าลงด้วยฮาร์ดร็อค หุ่นยนต์ที่กลับมาพร้อมกับสินค้าที่มีค่าที่สุดหลังจากเปลี่ยน 24 ชั่วโมงจะเป็นผู้ชนะ มันอาจจะเป็นความท้าทายที่ซับซ้อน แต่ก็เป็นเรื่องง่ายที่จะสร้างหุ่นยนต์ขุดขั้นพื้นฐาน การทำงาน โปรแกรมของคุณจะเริ่มโดยผู้ควบคุมพร้อมรูปเหมืองข้อมูลแร่และชื่อไฟล์อุปกรณ์ หุ่นยนต์สามารถใช้ข้อมูลภาพและแร่ของเหมืองเพื่อค้นหาแร่ที่มีค่าและหลีกเลี่ยงฮาร์ดร็อค หุ่นยนต์อาจต้องการซื้ออุปกรณ์จากรายการอุปกรณ์ เช่น: python driller.py mineimage.png minerals.txt equipmentlist.txt หลังจากช่วงเวลาเริ่มต้น 2 วินาทีตัวควบคุมจะสื่อสารกับโปรแกรมหุ่นยนต์ผ่าน stdin และ stdout หุ่นยนต์จะต้องตอบสนองด้วยการกระทำภายใน 0.1 วินาทีหลังจากได้รับข้อความสถานะ ในการเลี้ยวแต่ละครั้งผู้ควบคุมจะส่งสายสถานะของหุ่นยนต์: timeleft cargo battery cutter x y direction เช่น: 1087 4505 34.65 88.04 261 355 right จำนวนเต็มtimeleftเป็นวินาทีของเกมที่เหลือก่อนสิ้นสุดกะ นี่ cargoคือค่าจำนวนเต็มของแร่ธาตุที่คุณขุดจนน้อยกว่าที่คุณจ่ายสำหรับอุปกรณ์ batteryระดับร้อยละจำนวนเต็มของค่าใช้จ่ายแบตเตอรี่ที่เหลืออยู่ …

14
Kolmogorov ที่ไม่มีความซับซ้อน (-Smirnov)
ในสถิติบางครั้งมันมีประโยชน์ที่จะทราบว่าตัวอย่างข้อมูลสองตัวอย่างมาจากการแจกแจงต้นแบบเดียวกัน วิธีหนึ่งที่จะทำเช่นนี้คือการใช้สองตัวอย่างทดสอบ Kolmogorov-Smirnov งานของคุณคือการเขียนโปรแกรมที่อ่านในอาร์เรย์จำนวนเต็มสองตัวที่ไม่ได้ลบและคำนวณค่าสถิติหลักที่ใช้ในการทดสอบ รับอาร์เรย์Aและจำนวนจริงx, กำหนดฟังก์ชันการแจกแจงFโดย F(A,x) = (#number of elements in A less than or equal to x)/(#number of elements in A) รับสองอาร์เรย์A1และA2กำหนด D(x) = |F(A1, x) - F(A2, x)| ทั้งสองตัวอย่าง Kolmogorov-Smirnov สถิติเป็นค่าสูงสุดของมากกว่าจริงทั้งหมดDx ตัวอย่าง A1 = [1, 2, 1, 4, 3, 6] A2 = [3, 4, 5, 4] แล้ว: …

9
Pair-golfing twin primes และลำดับ Collatz
นี้เป็นชนิดใหม่ของความท้าทายแรงบันดาลใจจากการกู้คืนรหัสที่มากลายพันธุ์ปัญหา คุณควรเขียนสองโปรแกรมหรือฟังก์ชั่นทั้งสองในภาษาเดียวกัน อันแรกควรแก้ไข Task # 1 และอันที่สองควรแก้ Task # 2 คะแนนของคุณจะเป็นผลรวมของโปรแกรมที่ยาวขึ้นและระยะทางของ Levenshteinระหว่างซอร์สโค้ดโปรแกรมทั้งสอง คะแนนที่ต่ำกว่าดีกว่าดังนั้นคุณควรพยายามทำให้ทั้งสองโซลูชันคล้ายกันในขณะที่รักษาความยาวของโปรแกรมไว้สั้น ๆ ภารกิจ # 1 คุณได้รับจำนวนเต็มบวกNและคุณควรส่งออกลำดับ CollatzของNคั่นด้วยช่องว่างหรือขึ้นบรรทัดใหม่ อนุญาตให้ใช้ตัวคั่นต่อท้าย องค์ประกอบแรกของลำดับ Collatz Nคือ ส่วนที่เหลือขององค์ประกอบที่จะถูกสร้างขึ้นอยู่กับทายาทของพวกเขาฉัน- 1 :ai−1ai−1a_{i-1} ai={ai−123ai−1+1 if ai−1 is even if ai−1 is oddai={ai−12 if ai−1 is even3ai−1+1 if ai−1 is odd a_i = \begin{cases} \frac{a_{i-1}}{2} & \text{ if …

25
สุ่มกอล์ฟประจำวัน # 2: ตัวเลขจากการแจกแจงแบบปกติ
เกี่ยวกับซีรี่ส์ ก่อนอื่นคุณอาจปฏิบัติเช่นนี้กับการแข่งขันกอล์ฟอื่น ๆ และตอบคำถามโดยไม่ต้องกังวลเกี่ยวกับซีรี่ส์เลย อย่างไรก็ตามมีลีดเดอร์บอร์ดสำหรับทุกความท้าทาย คุณสามารถค้นหาลีดเดอร์พร้อมกับข้อมูลบางอย่างเพิ่มเติมเกี่ยวกับซีรีส์ในโพสต์แรก แม้ว่าฉันจะมีแนวความคิดมากมายสำหรับซีรีส์ แต่ความท้าทายในอนาคตยังไม่เกิดขึ้น หากคุณมีข้อเสนอแนะใด ๆ โปรดแจ้งให้เราทราบเกี่ยวกับการโพสต์ Sandbox ที่เกี่ยวข้อง หลุม 2: ตัวเลขจากการแจกแจงแบบปกติ ฉันไม่อยากจะเชื่อเลยว่านี่ยังไม่ได้ทำ! คุณจะสร้างตัวเลขสุ่ม, การวาดภาพจากการแจกแจงแบบปกติ กฎบางอย่าง (ส่วนใหญ่ของพวกเขาอาจถูกครอบคลุมโดยอัตโนมัติโดยการส่งส่วนใหญ่ แต่บางคนอยู่ในสถานที่เพื่อให้แน่ใจว่าผลลัพธ์ที่สอดคล้องกันระหว่างภาษาที่แตกต่างกันอย่างมากมาย): คุณควรใช้จำนวนเต็มที่ไม่เป็นลบสองตัวเป็นอินพุต : seed SและจำนวนNของตัวเลขที่จะส่งคืน การส่งออกควรจะมีรายการของNหมายเลขจุดลอยมาจากการแจกแจงแบบปกติที่มีค่าเฉลี่ย 0และความแปรปรวน 1 เมื่อใดก็ตามที่การส่งของคุณได้รับเมล็ดเดียวกันSก็ควรสร้างหมายเลขเดียวกัน โดยเฉพาะอย่างยิ่งถ้ามันถูกเรียกครั้งเดียวและครั้งเดียวกับรายการแรกของทั้งสองเอาท์พุทควรจะเหมือนกัน นอกจากนี้อย่างน้อย 2 16ค่าที่ต่างกันควรสร้างลำดับที่แตกต่างกัน(S, N1)(S, N2)min(N1, N2)S คุณสามารถใช้เครื่องกำเนิดตัวเลขสุ่มแบบบิวท์อินใด ๆ ที่มีเอกสารเพื่อดึงตัวเลขจากการแจกแจงแบบสม่ำเสมอ (โดยประมาณ) หากคุณสามารถส่งSต่อไปได้และสนับสนุนอย่างน้อย 2 16เมล็ดที่แตกต่างกัน หากคุณทำเช่นนั้นRNG ควรจะสามารถส่งคืนค่าที่แตกต่างกันอย่างน้อย 2 20ค่าสำหรับหมายเลขใดก็ตามที่คุณร้องขอจากมัน หาก RNG …

2
ตรรกะ Dot Shapes
เกม เมื่อเร็ว ๆ นี้เวลาส่วนใหญ่ของฉันถูกนำขึ้นเกมการเสพติดบนโทรศัพท์ของฉันที่ชื่อว่า Logic Dots ซึ่งเป็นแรงบันดาลใจให้ฉันเขียนความท้าทายนี้ เป็นการง่ายกว่าที่จะอธิบายกฎถ้าฉันแสดงให้คุณเห็นเกมดังนั้นนี่คือภาพหน้าจอของปริศนาที่ยังไม่แก้และแก้ไข: ตอนนี้ที่นี่มีสามสิ่งหลักที่ต้องแจ้งให้ทราบ กระดานเกม (ตาราง 4x4 ของสี่เหลี่ยมอยู่ตรงกลาง) รูปร่างที่ต้องการ (จุดเชื่อมโยงในแถบที่สองจากด้านบนใต้คะแนนและเมนู ฯลฯ ) ซึ่งเป็นเส้นทั้งหมดหรือa1 สี่เหลี่ยม ตัวเลขเหนือแถวและคอลัมน์ซึ่งแสดงถึงจำนวนจุดที่ต้องอยู่ในคอลัมน์สำหรับการแก้ปัญหา วัตถุประสงค์ของเกมคือเพื่อให้พอดีกับรูปร่างที่ต้องการในกริด คุณสามารถหมุนรูปร่างได้ แต่จะไม่สามารถเคลื่อนที่ในแนวทแยงมุมได้ ในการแก้ปัญหาให้สังเกตว่ารูปร่างทั้งหมดจะถูกสร้างขึ้นเพียงครั้งเดียว (เพราะพวกเขาอยู่ในรูปร่างที่ต้องการเพียงครั้งเดียว) และในกรณีนี้พวกเขาเป็นแนวนอนทั้งหมด แต่พวกเขาสามารถแนวตั้ง สีชมพูที่เต็มไปด้วยสี่เหลี่ยมหมายถึงสี่เหลี่ยมที่ไม่ได้ใช้ นี่คือตารางที่ใหญ่กว่าและซับซ้อนกว่าเล็กน้อย: โปรดสังเกตว่าในปริศนาที่ยังไม่แก้มีสี่เหลี่ยมอยู่สองสามตัวในสี่เหลี่ยมสีเทาที่มีความหมายว่าสี่เหลี่ยมที่ถูกบล็อกซึ่งคุณไม่สามารถวางจุดบน จุดที่มีก้อยบอกคุณว่าจุดนั้นอยู่ในจุดนั้นและมันเชื่อมโยงไปยังจุดอย่างน้อยหนึ่งจุดในทิศทางของหาง แต่ไม่ใช่ในทิศทางอื่น (รวมถึงทิศทางตรงกันข้าม) เอกสาร สำหรับส่วนที่เหลือของโพสต์นี้ฉันจะอ้างถึงบอร์ดโดยใช้สัญลักษณ์ต่อไปนี้: <,>, ^, v -หมายถึงจุดที่วางไว้ล่วงหน้าโดยมีหางยื่นออกไปในทิศทางของจุด * -หมายถึงจุด หากได้รับในตารางที่ไม่ได้แก้ไข (อินพุต) มันเป็นรูปร่างของแต่ละบุคคล หากอยู่ในเอาต์พุตก็จะเชื่อมต่อกับจุดโดยรอบ # -หมายถึงสี่เหลี่ยมกริดที่ถูกบล็อก (ซึ่งคุณไม่สามารถวางจุดได้) -, | …

5
วิธีเขียน N เป็นผลิตภัณฑ์ของจำนวนเต็ม M มีกี่วิธี
รับจำนวนเต็มN , นับจำนวนวิธีที่สามารถแสดงเป็นผลคูณของMจำนวนเต็ม> 1 อินพุตเป็นเพียงNและMและเอาต์พุตคือจำนวนรวมของกลุ่มจำนวนเต็มที่แตกต่างกัน ความหมายคุณสามารถใช้จำนวนเต็มมากกว่าหนึ่งครั้ง แต่แต่ละกลุ่มจะต้องแตกต่างกัน ( 3 x 2 x 2จะไม่นับถ้า2 x 2 x 3มี) ข้อ จำกัด 1 < N <2 31 1 < M <30 ตัวอย่าง อินพุต30 2ให้เอาต์พุต3เนื่องจากสามารถแสดงได้ 3 วิธี: 2 x 15 3 x 10 5 x 6 อินพุต16 3ให้เอาต์พุต1เนื่องจากมีเพียงกลุ่มเดียวเท่านั้น: 2 x 2 x 4 อินพุต2310 …

4
ไดเรกทอรีต้นไม้ H
โปรแกรมเมอร์มักหมกมุ่นอยู่กับการวาดเศษส่วน ฉันคิดว่าเราต้องการสื่อที่ใช้คอมพิวเตอร์เครื่องใหม่ ต้นไม้ Hเป็นชนิดที่ค่อนข้างง่ายของเศษส่วนที่ทำจากเส้นแนวนอนและแนวตั้ง ที่นี่มันอยู่ที่การทำซ้ำสิบ ( มารยาท Wikipedia ): ตอนนี้ลองนึกภาพแต่ละบรรทัดในรูปภาพเป็นไดเรกทอรี (โฟลเดอร์) ในระบบไฟล์คอมพิวเตอร์มาตรฐาน ทั้งหมดยกเว้นเส้นที่เล็กที่สุดตัดกันสองบรรทัดเล็กกว่าตัวพวกมันเอง สองเส้นเล็ก ๆ เหล่านี้เป็นไดเรกทอรีย่อยของบรรทัดที่ใหญ่กว่า ดังนั้นเส้นแนวนอนขนาดใหญ่ที่อยู่ตรงกลางจึงเป็นไดเรคทอรีหลักของเส้นแนวตั้งที่ใหญ่ที่สุดสองเส้นซึ่งอยู่ในแนวเดียวกันกับพ่อแม่ปู่ย่าตายาย ฯลฯ ของเส้นที่เหลือในภาพ ท้าทาย เขียนโปรแกรมที่รับจำนวนเต็มบวก N ผ่าน stdin หรือบรรทัดคำสั่ง (หรือตัวเลือกอื่นที่ใกล้เคียงที่สุด) และสร้างแผนผังไดเร็กทอรีที่สะท้อนการวนซ้ำ Nth ของเศษส่วนต้นไม้ H การทำซ้ำครั้งแรก (N = 1) เป็นเส้นแนวนอนเดียว ในแต่ละการวนซ้ำที่ตามมาชุดใหม่ของเส้นแนวตั้งหรือแนวนอนจะถูกเพิ่มเข้าไปที่ปลายของบรรทัดปัจจุบัน ดังนั้นสำหรับ N = 2 จะมีการเพิ่มเส้นแนวตั้งสองเส้น (ทำให้เป็นรูปร่าง H) สำหรับ N = 3 สี่เส้นแนวนอนจะถูกเพิ่มเข้าไปในนั้นเป็นต้น treeชื่อของไดเรกทอรีรากจะต้องเสมอ ชื่อของไดเรกทอรีย่อยจะต้องตรงกับทิศทางที่พวกเขาอยู่ในส่วนที่เกี่ยวกับเส้นพ่อแม่ของพวกเขาโดยใช้right, …

1
รหัสปริศนารหัส Slidey!
เป็นที่รู้จักมากที่สุดปริศนาเลื่อนเป็นปริศนาสิบห้า มันมีตาราง 4 โดย 4, 15 กระเบื้องและพื้นที่ว่างหนึ่งตาราง กระเบื้องสามารถย้ายไปยังพื้นที่ว่างได้เท่านั้นและจะต้องสอดคล้องกับตารางเสมอ ลองกำหนดตัวต่อแบบเลื่อนโดยทั่วไปเป็นWสองมิติกว้างด้วยตารางสูงH ( W , Hทั้งจำนวนเต็มบวก) ที่มีจำนวนของกระเบื้องที่ไม่มีเครื่องหมายเหมือนกันจำนวนหนึ่ง(ระหว่าง 0 ถึงW × Hของพวกเขา) ที่จัดเรียงในตาราง ไม่ว่าจะด้วยวิธีใดก็ตาม (โดยไม่ทับซ้อนกัน) ด้วยพื้นที่ตารางว่างเปล่าเติมส่วนที่เหลือของพื้นที่ ตัวอย่างเช่นถ้าWและHเป็น 3 และไทล์เป็นTและพื้นที่ว่างเป็นEหนึ่งในการจัดเรียงปริศนาเข้าข้างได้มากที่สุดคือ TTT TET EET สำหรับปริศนาเหล่านี้มี 4 ย้ายเป็นไปได้ทุกอย่างซุกขึ้น , ซุกทุกอย่างลงทุกอย่างซุกซ้ายหรือซุกทุกอย่างที่เหมาะสม 'การผลัก' ไปในทิศทางใดทิศทางหนึ่งทำให้ไพ่ทั้งหมดเดินทางไปในทิศทางนั้นไกลที่สุดเท่าที่จะเป็นไปได้จนกว่าพวกเขาจะชนกระเบื้องหรือขอบตาราง บางครั้งการผลักจะไม่เปลี่ยนเค้าโครงของกริด หากกริดตัวอย่างถูกผลักไปทางขวาผลลัพธ์จะเป็น TTT ETT EET ผลักไปทางซ้ายผลคือ TTT TTE TEE ลดผลลัพธ์ลงไปคือ EET TET TTT (สังเกตว่าทั้งคู่เคลื่อนไหวไปทางซ้ายสุดT) การเลื่อนขึ้นไม่ได้เปลี่ยนเค้าโครงตารางในกรณีนี้ …

3
หมายเลขพาร์ติชันที่ใกล้ที่สุด
จำนวนพาร์ติชันของจำนวนเต็มคือจำนวนวิธีที่สามารถแสดงจำนวนเต็มเป็นผลรวมของจำนวนเต็มบวก ตัวอย่างเช่น: 5 4 + 1 3 + 2 3 + 1 + 1 2 + 2 + 1 2 + 1 + 1 + 1 1 + 1 + 1 + 1 + 1 มี 7 วิธีในการแทนค่าหมายเลข 5 ดังนั้น 7 คือหมายเลขพาร์ติชันที่สอดคล้องกับหมายเลข 5 หมายเลขพาร์ติชัน: OEIS: # A000041 คำสั่ง เขียนโปรแกรมที่ใช้จำนวนเต็มบวกเป็นอินพุตและเอาต์พุตตัวเลขสองตัวที่สร้างหมายเลขพาร์ติชันที่ใกล้เคียงที่สุดสองตัวไปยังหมายเลขอินพุต ข้อมูลที่ป้อนต้องเป็นจำนวนเต็มบวก …

1
เล่นกอล์ฟแถบลายควินินในภาษาต่าง ๆ
คุณจะเลือกม.ภาษาและการเขียนnโปรแกรมในแต่ละภาษาแต่ละคนมีความยาวn M * โปรแกรมk th ควรเอาต์พุตอักขระk th ของแต่ละโปรแกรมเรียงลำดับตามหมายเลขโปรแกรม ตัวอย่างเช่นในการส่งนี้ (สำหรับการสาธิตเท่านั้นพวกเขาสามารถเป็นตัวละครใด ๆ รวมถึงการขึ้นบรรทัดใหม่และแท็บ): ABC DEF GHI โปรแกรมABCควรออกADGและโปรแกรมDEFและGHIควรออกBEHและCFIตามลำดับ โปรแกรมทั้งหมดในรายการจะต้องไม่เป็น quine ปกติ ดังนั้นABCและADGจะต้องแตกต่างกัน เช่นเดียวกันกับอีกสองโปรแกรม โปรดทราบว่าn * mต้องมีอย่างน้อย 2 เพื่อให้เป็นไปได้ คุณไม่จำเป็นต้องใช้ภาษาตามลำดับที่เฉพาะเจาะจง ดังนั้นคุณสามารถเขียนโปรแกรมสองโปรแกรมในภาษา A, สามโปรแกรมในภาษา B, และอีกภาษาหนึ่งในภาษา A อีกครั้ง แต่ทุกภาษาจะต้องใช้จำนวนเท่ากันทุกประการ ขึ้นบรรทัดใหม่ / ต่อท้ายบรรทัดในโปรแกรมและผลลัพธ์ของคุณไม่สำคัญ คำตอบด้วยขั้นต่ำn (m + 10) / m 3ชนะ แต่ฉันจะให้รางวัลอย่างน้อย 100 กับคำตอบด้วยภาษาส่วนใหญ่หากใช้อย่างน้อย 3 ในนั้น …

22
สร้างลำดับStöhr
ฉันกำลังเรียนรู้ทับทิมและเขียนรหัสที่ไม่น่าสนใจครั้งแรกของฉันเพื่อแก้ปัญหานี้ ความท้าทายคือการสร้างองค์ประกอบแรกnของลำดับStöhr , Sซึ่งกำหนดไว้ดังนี้ S [0] = 1 S [n] เป็นจำนวนที่น้อยที่สุดที่ไม่สามารถแสดงเป็นผลรวมขององค์ประกอบก่อนหน้านี้สองที่แตกต่างกันในลำดับ ดังนั้นลำดับเริ่มต้นด้วย 1, 2, 4, 7 และ 10 องค์ประกอบถัดไปคือ 13 เพราะ 11 (= 1 + 10) และ 12 (= 2 + 10) เป็นผลรวมขององค์ประกอบก่อนหน้า แต่ 13 ไม่ใช่ ฉันกำลังมองหารหัสที่สั้นที่สุด ใน Ruby ของฉันเองมีความยาว 108 ตัวอักษร แต่บางทีฉันอาจจะรอดูว่าคนอื่น ๆ คิดอะไรก่อนที่จะโพสต์มัน

1
อัลกอริธึมสี่เหลี่ยมจัตุรัสเล็ก ๆ
อัลกอริธึมแบบไดมอนด์สแควร์เป็นอัลกอริธึมการสร้างภูมิประเทศเศษส่วน (ความสูง) คุณสามารถหาคำอธิบายที่ดีว่ามันทำงานอย่างไรที่นี่: http://www.gameprogrammer.com/fractal.html (ใช้เป็นข้อมูลอ้างอิง) http://www.playfuljs.com/realistic-terrain-in-130-lines/ (การใช้งาน JS ที่ยอดเยี่ยมบางทีคุณอาจต้องการขโมย renderer ของเขาดูที่นี่ว่าอัลกอริทึมนี้มีความสามารถในhttp: // สาธิตได้อย่างไร playfuljs.com/terrain/ .) แนวคิดทั่วไปคือคุณมี 4 มุมเป็นเมล็ด (ก) และคำนวณความสูงของจุดกึ่งกลางโดยเฉลี่ยทั้งสี่มุมเหล่านั้นและเพิ่มค่าสุ่มเช่นระหว่าง -0.5 ถึง 0.5 (b) หากคุณนำสิ่งนี้ไปใช้กับตารางคุณจะได้รับตารางของเพชรอีกครั้ง (สี่เหลี่ยมจตุรัส 45 °) และคุณทำซ้ำเหมือนเดิม (c, d) แต่ช่วงสุ่มจะลดลงเช่น -0.125 ถึง 0.125 เป็นต้น โปรแกรมของคุณต้องยอมรับอินพุตจำนวนหนึ่ง: จำนวนเต็มที่กำหนดขนาดของตารางสี่เหลี่ยมที่มีความยาวด้านข้างl=1,2,3,... 2^l+1ที่l=10คุณจะต้องเก็บประมาณหนึ่งล้านหมายเลข สี่เมล็ด (จุดลอย) สำหรับแต่ละมุม พารามิเตอร์0<h<1ที่กำหนดความหยาบ ( Hในลิงก์) ซึ่งหมายถึงระยะเริ่มต้นของการสุ่ม พารามิเตอร์a,bที่แสดงขอบเขตเริ่มต้นล่างและบนสำหรับช่วงสุ่มและได้รับการคูณด้วยhในแต่ละขั้นตอนการปรับแต่ง (จำนวนสุ่มได้รับการแต่งตั้งอย่างสม่ำเสมอระหว่างและab เอาต์พุตจะต้องประกอบด้วยกริด 2d …
12 code-golf  random  grid 

5
คำนวณจำนวน Delacorte ของตาราง
ถาม: ใช้การคำนวณหมายเลข Delacorte ในภาษาใด ๆ รหัสที่สั้นที่สุดชนะ สำหรับเมทริกซ์จตุรัสที่กำหนดของจำนวนเต็มชัดเจน1..n² (ความยาวด้านที่เป็นไปได้nอย่างน้อยระหว่าง 3 และ 27) หมายเลข Delacorte ของมันคือผลรวมของผลิตภัณฑ์gcd (a, b) ×distance² (a, b)สำหรับแต่ละจุดที่แตกต่างกัน จำนวนเต็ม {a, b} ตัวอย่างต่อไปนี้แสดงตาราง 3 × 3 พร้อมหมายเลข Delacorte เป็น 160 3 2 9 4 1 8 5 6 7 ในตารางนี้เรามีการคำนวณ 36 คู่ที่แตกต่างกันเช่นคู่ที่ 4 และ 6: gcd (4, 6) × ระยะทาง …
12 code-golf  math 

2
จัดกลุ่มตัวเลขด้วยผลรวมเดียวกัน
งานของคุณคือให้ตารางสี่เหลี่ยมของตัวเลข ( 0-9) เอาท์พุทวิธีหนึ่งที่สามารถจัดกลุ่มตัวเลขดังกล่าว: แต่ละหลักเป็นส่วนหนึ่งของกลุ่มหนึ่งกลุ่ม ทุกกลุ่มมีจำนวนหลักเท่ากัน กลุ่มทั้งหมดถูกล้อมรอบด้วยรูปร่างคล้ายรูปหลายเหลี่ยมหนึ่งอัน (ซึ่งหมายความว่าทุกหลักในกลุ่มอยู่ถัดจาก [ซ้าย, ขวา, ขึ้น, ลง] อย่างน้อยหนึ่งตัวเลขอื่นในกลุ่มเดียวกันเว้นแต่แต่ละกลุ่มจะมี 1 องค์ประกอบ) ทุกกลุ่มมีผลรวมเท่ากัน กริดอินพุตจะเป็นสี่เหลี่ยมจัตุรัสเสมอ: คุณสามารถเลือกวิธีป้อนข้อมูลใดก็ได้ที่คุณต้องการ (รวมถึงการจัดหาอาร์กิวเมนต์ให้กับฟังก์ชันหรือเมธอด) นอกจากนี้อินพุตจะระบุจำนวนกลุ่มที่โปรแกรมของคุณควรจัดกลุ่มตัวเลขให้เป็น อินพุตตัวอย่าง: stringOfDigits numberOfGroupsสมมติว่ารูปแบบการป้อนข้อมูลของคุณ ตัวอย่างอินพุตจะเป็น: 156790809 3 ซึ่งจะแปลเป็น (กริดของsqrt(9) * sqrt(9)) 1 5 6 7 9 0 8 0 9 ซึ่งคุณจะต้องแบ่งออกเป็น 3 กลุ่มแต่ละกลุ่มควรมี9 / 3 = 3องค์ประกอบที่มีผลรวมเดียวกัน เอาท์พุท: เอาท์พุทควรเป็นสตริงของตัวเลขโดยมีเว้นวรรคและบรรทัดใหม่สำหรับการจัดรูปแบบโดยแต่ละหลักตามด้วยตัวอักษรที่a-zระบุกลุ่มของมัน ควรมีnumberOfTotalDigits / …
12 code-golf 

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