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

Code-golf เป็นการแข่งขันเพื่อแก้ไขปัญหาเฉพาะในส่วนที่น้อยที่สุดของซอร์สโค้ด

29
การถอดช่องว่างเพิ่มเติมจากสตริง
คุณจะได้รับสตริง ส่งออกสตริงที่มีหนึ่งช่องว่างต่อคำ ท้าทาย การป้อนข้อมูลจะเป็นสตริง (ไม่ได้nullหรือเปล่า) ล้อมรอบด้วยคำพูด ( ") stdinส่งผ่านทาง ลบช่องว่างนำหน้าและต่อท้ายออกจากช่องว่างนั้น นอกจากนี้หากมีมากกว่าหนึ่งช่องว่างระหว่างคำสองคำ (หรือสัญลักษณ์หรืออะไรก็ตาม) ให้ตัดออกเป็นช่องว่าง เอาต์พุตสตริงที่แก้ไขด้วยเครื่องหมายคำพูด กฎระเบียบ สตริงจะต้องไม่ยาวเกิน 100 ตัวอักษรและจะมีเฉพาะอักขระ ASCII ในช่วง(ช่องว่าง) ถึง~(ตัวหนอน) (รหัสตัวอักษร 0x20 ถึง 0x7E, รวม) ยกเว้น"กล่าวคือสตริงจะไม่มีคำพูด ( ") และตัวละครอื่น ๆ นอก ช่วงที่ระบุข้างต้น ดูตาราง ASCIIสำหรับการอ้างอิง คุณต้องรับข้อมูลจากstdin(หรือตัวเลือกอื่นที่ใกล้เคียงที่สุด) เอาต์พุตต้องมีเครื่องหมายคำพูด ( ") คุณสามารถเขียนโปรแกรมแบบเต็มหรือฟังก์ชั่นที่รับอินพุต (จากstdin) และส่งออกสตริงสุดท้าย กรณีทดสอบ "this is a string " --> "this …
12 code-golf  string 

3
การคำนวณตัวเลขที่ถูกตัดทอนจำนวนของพลังของ pi
กำหนดจำนวนเต็มบวกnการส่งออกรวมของแรกnตัวเลขทศนิยมของส่วนที่เป็นเศษส่วนของπ n ตัวอย่างอินพุตและเอาต์พุต: 1 → 1 2 → 14 3 → 6 4 → 13 5 → 24 50 → 211 500 → 2305 5000 → 22852 ไม่อนุญาตให้ใช้ฟังก์ชันการคำนวณตัวเลขในตัวของπหรือประเมินอนุกรมกำลังหรือเศษส่วนต่อเนื่อง ช่องโหว่มาตรฐานใช้ อินพุต / เอาต์พุตสามารถอยู่ในรูปแบบที่สะดวก (stdin, stdout, ฟังก์ชันใน / เอาต์พุต ฯลฯ ) รหัสที่สั้นที่สุดในหน่วยไบต์ชนะ

7
คะแนนเศษส่วนในบรรทัด
บางครั้งเมื่อฉันเบื่อจริง ๆ (เบื่อจริง ๆ ) ฉันชอบวาดส่วนของเส้นและวาดจุดบน ก่อนอื่นฉันวาดส่วนของเส้นตรงในขนาดที่กำหนดซึ่งเท่ากับ 2 ^ N สำหรับค่าบางส่วนของ N เส้นจะถูกแทนด้วยชุด.อักขระ ................ จากนั้นฉันวางแผนจุดที่ด้านซ้าย คะแนนจะถูกแสดงโดยXตัวละคร X............... จากนั้นฉันก็ทำตามรูปแบบ เริ่มต้นที่จุดที่พล็อตล่าสุด (ซึ่งฉันจะเรียกว่า A) ฉันจะไปยังจุดที่พล็อตถัดไป (B) บนบรรทัด (ล้อมรอบตามความจำเป็น) จากนั้นฉันไปยังจุดที่วางแผนต่อไปในบรรทัด (C) จากนั้นฉันพล็อตจุดใหม่แบบครึ่งทางระหว่างจุดที่สามนี้ (C) และจุดที่วางแผนไว้แล้วถัดไป (D) เมื่อใดก็ตามที่คุณล้อมรอบเส้น "กลาง" จะถูกกำหนดในลักษณะการห่อ จุดที่วางแผนใหม่นั้นอยู่ทางด้านขวาของ C เสมอ สมมุติว่าบรรทัดต่อไปนี้เป็นบรรทัดปัจจุบันของฉัน นี่คือวิธีที่ฉันจะลงจุดสองจุดถัดไป สำหรับตัวอย่างนี้ฉันจะติดป้ายแต่ละจุดสำคัญด้วยตัวอักษร X...A...X.X...X. ^ X...A...B.X...X. ^ X...A...B.C...X. ^ X...A...B.C...D. ^ X...X...X.X.A.X. ^ …
12 code-golf 

1
ฉันเขียนรหัสกอล์ฟอย่างถูกต้องหรือไม่?
ฉันอยากรู้อยากเห็นถ้าฉันเป็นรหัสกอล์ฟอย่างถูกต้อง ฉันตั้งความท้าทายสำหรับตัวเองในการสร้างโปรแกรมแฮชขนาดเล็กเป็นคำสั่งเดียวใน Python ก่อนอื่นฉันเริ่มด้วย: from itertools import permutations from string import ascii_lowercase from random import sample def test(): chars = sample(ascii_lowercase, 9) sums = list(map(h, permutations(chars))) if len(set(sums)) == len(sums): print("unique results for permutations of given string") else: print("duplicate entries present in test results") def h(s): r = 0 for …
12 code-golf  tips  python 

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 

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