คำถามติดแท็ก binary-tree

โครงสร้างข้อมูลระดับสูงประกอบด้วยโหนดแต่ละโหนดมีลูกได้สูงสุด 2 ลูก (ซ้ายและขวา) โหนดที่ไม่มีลูกเรียกว่าใบไม้และสองโหนดที่มีพ่อแม่เดียวกันเรียกว่าพี่น้อง

3
สร้างต้นไม้ตัวแบ่งที่ชื่นชอบสกอร์
ต้นไม้หารสกอร์ที่ชื่นชอบเป็นต้นไม้แห่งหารของใส่nว่าสำหรับจำนวนคอมโพสิตใด ๆmมีสองโหนดเด็กที่มีคู่ของตัวหารที่ใกล้เคียงกับรากที่สองmของ โหนดซ้ายควรจะเป็นตัวหารขนาดเล็กและโหนดที่เหมาะสมควรจะเป็นตัวหารขนาดใหญ่ของm mจำนวนเฉพาะในต้นไม้ไม่ควรมีโหนดลูก ต้นไม้ของคุณอาจอยู่ในรูปแบบของข้อความหรือรูปภาพ กฎสำหรับการส่งออกข้อความศิลปะมีดังนี้ กฎการเว้นวรรค ในการเว้นช่องว่างของโหนดบนต้นไม้เรามีกฎต่อไปนี้: โหนดที่ระดับความลึกที่กำหนดจากรูทควรอยู่ในบรรทัดข้อความเดียวกันในเอาต์พุต / \ Not / \ / \ / 3 2 3 2 สำหรับโหนดด้านซ้ายสาขาที่เข้ามาควรจะอยู่ทางด้านขวาบนหากโหนดนั้นเป็นตัวเลขหลักเดียวมิฉะนั้นจะอยู่เหนือหลักสุดท้าย ตัวอย่าง: / และ / 3 720 สำหรับโหนดที่ถูกต้องสาขาที่เข้ามาควรจะอยู่ทางด้านซ้ายบนหากโหนดนั้นเป็นตัวเลขหลักเดียวมิฉะนั้นจะอยู่เหนือหลักแรก ตัวอย่าง: \ AND \ 7 243 สำหรับสาขาซ้ายออกสาขาควรเริ่มต้นหนึ่งช่องทางด้านซ้ายของหมายเลข ตัวอย่าง: 275 / 11 สำหรับสาขาด้านขวาขาออกสาขาควรเริ่มต้นหนึ่งช่องทางด้านขวาของหมายเลข ตัวอย่าง: 275 \ 25 ใด ๆ ที่สองโหนดในระดับเดียวกันของต้นไม้ควรมีอย่างน้อยสองช่องว่างระหว่างพวกเขา ในเวลาเดียวกันทรีย่อยสองอันในระดับเดียวกันของทรีควรมีช่องว่างน้อยที่สุดระหว่างที่เป็นไปได้ ต้นไม้นี้ใช้งานไม่ได้เพราะต้นไม้ย่อย …

22
ปี่ธรรมชาติ # 0 - ร็อค
เป้าหมาย สร้างโปรแกรม / ฟังก์ชั่นที่รับอินพุตNตรวจสอบว่าNคู่ของจำนวนเต็มแบบสุ่มนั้นค่อนข้างดีและส่งคืนsqrt(6 * N / #coprime)หรือไม่ TL; DR ความท้าทายเหล่านี้เป็นการจำลองอัลกอริธึมที่ต้องการเพียงแค่ธรรมชาติและสมองของคุณ หากคุณต้องการ Pi ในระหว่างการเปิดเผยซอมบี้วิธีการเหล่านี้จะไม่เปลืองกระสุน ! มีอีกแปดความท้าทายที่จะมา ชำระเงินโพสต์แซนด์บ็อกซ์เพื่อให้คำแนะนำ การจำลอง เรากำลังจำลองอะไร ความน่าจะเป็นที่สองจำนวนเต็มแบบสุ่มนั้นค่อนข้างไพเราะ (เช่น coprime หรือ gcd == 1) 6/Pi/Piดังนั้นวิธีธรรมชาติในการคำนวณ Pi ก็คือการตักก้อนหินขึ้นสองถัง (หรือกำมือ) นับพวกเขา; ดูว่าgcdของพวกเขาคือ 1; ทำซ้ำ หลังจากที่ทำเช่นนี้คู่หลายครั้งจะมีแนวโน้มต่อsqrt(6.0 * total / num_coprimes) Piหากการคำนวณสแควร์รูทในโลกหลังวิกฤติทำให้คุณกังวลไม่ต้องกังวล! มีวิธีการของนิวตันสำหรับสิ่งนั้น เราจำลองสิ่งนี้ได้อย่างไร รับอินพุต N ทำตามNเวลาต่อไปนี้: สร้างเลขจำนวนเต็มบวกแบบสุ่มiและj กับ 1 <= i …
39 code-golf  math  random  pi  approximation  popularity-contest  code-golf  sequence  number-theory  binary  coding-theory  code-golf  math  3d  code-golf  code-golf  math  number  code-golf  kolmogorov-complexity  code-golf  ascii-art  graphical-output  binary-tree  code-golf  ascii-art  code-golf  ascii-art  kolmogorov-complexity  code-golf  array-manipulation  hexadecimal  code-golf  math  number  set-theory  code-golf  math  arithmetic  number-theory  integer  code-golf  string  kolmogorov-complexity  code-golf  math  sequence  arithmetic  decision-problem  code-golf  code-golf  ascii-art  code-golf  array-manipulation  parsing  code-golf  string  ascii-art  kolmogorov-complexity  code-challenge  code-golf  sequence  code-golf  number  array-manipulation  sorting  code-golf  string  function  code-golf  arithmetic  code-golf  math  sequence  number-theory  primes  restricted-source  javascript  code-challenge  polyglot  rosetta-stone  code-golf  code-golf  regular-expression  code-golf  math  code-golf  math  primes  code-golf  ascii-art  kolmogorov-complexity  binary  code-golf  math  sequence  code-golf  sequence  subsequence  code-golf  string  code-golf  parsing  music  code-golf  grid  game  path-finding  board-game  code-golf  string  binary  code-golf  array-manipulation  balanced-string  code-golf  code-golf  algorithm  code-golf  string  number  arithmetic  array-manipulation  code-golf  array-manipulation  binary-tree  tree-traversal  code-golf  code-golf  tips  code-golf  string  base-conversion  code-golf  tips  s.i.l.o.s  code-golf  string  ascii-art  code-golf  code-challenge  code-golf  game 

7
ปลูกป่าไบนารี!
แรงบันดาลใจจากA014486 ท้าทาย กำหนดอินพุตจำนวนเต็มในฐาน 10 สร้างการแสดงสำหรับฟอเรสต์ไบนารีที่สอดคล้องกับอินพุต การเป็นตัวแทนรวมถึง แต่ไม่ จำกัด เพียงอาร์เรย์และสตริงที่ซ้อนกัน อย่างไร? แปลงอินพุตเป็นไบนารี 1s เป็นตัวแทนของสาขาและ0เป็นตัวแทนของใบ เพื่อให้ง่ายต่อการเข้าใจลองใช้834(1101000010 เป็นไบนารี่) เป็นตัวอย่าง เราเริ่มต้นด้วยหลักแรก ตัวเลขแรกคือ a 1ดังนั้นเราจึงวาดกิ่ง: \ / 1 หรือเป็นอาร์เรย์ {{1}} ตัวเลขถัดไปคือ1เราจึงดึงกิ่งก้านสาขาเพิ่มเติม (จากซ้ายไปขวา): \ / 1 \ / 1 หรือเป็นอาร์เรย์ {{1, {1}}} หลักถัดไปคือ0ดังนั้นเราวางใบไม้: 0 \ / 1 \ / 1 หรือเป็นอาร์เรย์ {{1, {1, 0}}} ตัวเลขถัดไปคือ a …

14
นี่คือการสำรวจเส้นทางการสั่งซื้อล่วงหน้าของ BST หรือไม่
พื้นหลัง ต้นไม้ไบนารีเป็นต้นไม้ที่มีรากทุกโหนดมีที่มากที่สุดเด็กสองคน ต้นไม้ไบนารีที่มีข้อความเป็นต้นไม้ไบนารีที่มีทุกโหนดมีป้ายที่มีจำนวนเต็มบวก; ยิ่งไปกว่านั้นป้ายชื่อทั้งหมดจะแตกต่างกัน BST (ต้นไม้ค้นหาแบบทวิภาค) เป็นต้นไม้ไบนารีที่มีข้อความที่ป้ายชื่อของแต่ละโหนดมากกว่าฉลากของโหนดทั้งหมดในทรีย่อยซ้ายของตนและมีขนาดเล็กกว่าป้ายทุกโหนดในทรีย่อยด้านขวา ตัวอย่างเช่นต่อไปนี้คือ BST: การสำรวจเส้นทางล่วงหน้าของต้นไม้ไบนารีที่ติดป้ายกำกับนั้นถูกกำหนดโดยรหัสหลอกต่อไปนี้ function preorder(node) if node is null then return else print(node.label) preorder(node.left) preorder(node.right) ดูภาพต่อไปนี้เพื่อรับสัญชาติญาณที่ดีขึ้น: จุดยอดของต้นไม้ไบนารีนี้จะถูกพิมพ์ตามลำดับต่อไปนี้: F, B, A, D, C, E, G, I, H คุณสามารถอ่านเพิ่มเติมเกี่ยวกับ BSTs ที่นี่และอื่น ๆ เกี่ยวกับการสำรวจเส้นทางการสั่งซื้อล่วงหน้าที่นี่ ท้าทาย ได้รับรายชื่อของจำนวนเต็มงานของคุณคือการตรวจสอบว่ามีการ BST ที่มีการสั่งซื้อล่วงหน้า traversal พิมพ์ว่าaaaaaa อินพุต ไม่ว่างเปล่ารายการของที่แตกต่างกันจำนวนเต็มบวกaaa เลือกความยาวของaaa เอาท์พุต truthyค่าถ้าเป็นสำรวจเส้นทางการสั่งซื้อล่วงหน้าของ BST …

9
ระบุต้นไม้ไบนารี
ต้นไม้ไบนารี ต้นไม้ไบนารีเป็นต้นไม้ที่มีโหนดสามประเภท: โหนดเทอร์มินัลซึ่งไม่มีลูก โหนดเดียวซึ่งมีลูกหนึ่งคน โหนดฐานสองซึ่งมีลูกสองคน เราสามารถเป็นตัวแทนของพวกเขาด้วยไวยากรณ์ต่อไปนี้ที่กำหนดในBNF (รูปแบบ Backus – Naur): <e> ::= <terminal> | <unary> | <binary> <terminal> ::= "0" <unary> ::= "(1" <e> ")" <binary> ::= "(2" <e> " " <e> ")" ในไวยากรณ์นี้โหนดจะได้รับในการสั่งซื้อล่วงหน้าและแต่ละโหนดจะมีตัวเลขซึ่งเป็นจำนวนของเด็กที่มี ตัวเลข Motzkin หมายเลข Motzkin ( OEIS ) ( Wikipedia ) มีการตีความหลายอย่าง แต่หนึ่งการตีความคือnหมายเลข Motzkin ที่สามคือจำนวนของต้นไม้ไบนารีที่แตกต่างกับnโหนด ตารางหมายเลข Motzkin …

27
เขียนล่ามสำหรับ *
งานง่าย เขียนล่ามภาษาที่* นี่คือลิงก์ที่ใหญ่กว่าไปยังวิกิ มีโปรแกรม * ที่ใช้ได้เพียงสามโปรแกรมเท่านั้น: * พิมพ์ "Hello World" * พิมพ์ตัวเลขสุ่มระหว่าง 0 ถึง 2,147,483,647 *+* ทำงานตลอดไป กรณีที่สามจะต้องเป็นวงไม่สิ้นสุดตามข้อกำหนดใน คำถามนี้ การป้อนข้อมูล: อินพุตสามารถใช้วิธีการอินพุตที่ยอมรับได้โดยกฎ I / O มาตรฐานของเรา มันจะเป็นหนึ่งในโปรแกรมข้างต้น เอาท์พุท: กรณีแรกควรพิมพ์อย่างแน่นอนHello Worldโดยมีหรือไม่มีตัวแบ่งบรรทัดต่อท้าย สำหรับกรณีที่สองหากจำนวนเต็มสูงสุดของภาษาของคุณน้อยกว่า 2,147,483,647 ให้ใช้จำนวนเต็มสูงสุดของภาษาของคุณ เคสแรกและเคสที่สองสามารถพิมพ์ไปยังเอาต์พุตที่ยอมรับได้โดยกฎ I / O มาตรฐานของเรา กรณีที่สามไม่ควรให้ผลลัพธ์ใด ๆ เกณฑ์การให้คะแนน: เช่นนี้คือcode-golfคำตอบที่สั้นที่สุดเป็นไบต์ชนะ
20 code-golf  interpreter  code-golf  array-manipulation  sorting  code-golf  halting-problem  code-golf  javascript  code-golf  algorithm  code-golf  arithmetic  code-golf  math  counting  code-golf  math  code-golf  decision-problem  radiation-hardening  code-golf  conversion  bitwise  code-golf  number  decision-problem  code-golf  string  decision-problem  code-golf  random  game  code-golf  ascii-art  graphical-output  code-golf  decision-problem  binary-tree  tree-traversal  code-challenge  array-manipulation  code-challenge  graphical-output  path-finding  test-battery  algorithm  code-golf  integer  factorial  code-golf  binary-tree  code-golf  grid  graph-theory  code-golf  regular-expression  quine  code-golf  encoding  code-golf  king-of-the-hill  javascript 

19
เขียนโปรแกรมที่สั้นที่สุดเพื่อคำนวณความสูงของต้นไม้ไบนารี
ความสูงของต้นไม้ไบนารีคือระยะทางจากรูตโหนดไปยังโหนดชายด์ที่อยู่ห่างจากรูทมากที่สุด ด้านล่างเป็นตัวอย่าง: 2 <-- root: Height 1 / \ 7 5 <-- Height 2 / \ \ 2 6 9 <-- Height 3 / \ / 5 11 4 <-- Height 4 ความสูงของต้นไม้ไบนารี: 4 ความหมายของต้นไม้ไบนารี ต้นไม้เป็นวัตถุที่มีค่าจำนวนเต็มที่มีลายเซ็นและทั้งสองต้นไม้อื่น ๆ หรือตัวชี้ไปที่พวกเขา โครงสร้างของโครงสร้างต้นไม้ไบนารีมีลักษณะดังนี้: typedef struct tree { struct tree * l; struct tree * …

5
พิมพ์ต้นไม้ไบนารี
แรงบันดาลใจจากคำถามล่าสุดเกี่ยวกับ SO ... เขียนฟังก์ชั่นเพื่อพิมพ์ต้นไม้ไบนารีในรูปแบบต่อไปนี้: 3 / \ 1 5 \ / \ 2 4 6 ผลลัพธ์ควรประกอบด้วยบรรทัดของโหนดตามด้วยบรรทัดของ/และ\อักขระที่ระบุความสัมพันธ์ตามด้วยบรรทัดของโหนด ฯลฯ คุณสามารถสมมติว่าโหนดทั้งหมดสามารถแสดงได้เป็นอักขระเดียว โหนดที่อยู่ติดกันในระดับต่ำสุดควรถูกคั่นด้วยพื้นที่อย่างน้อยหนึ่งโหนดโหนดที่อยู่ไกลออกไปควรแยกออกจากกันตามความเหมาะสม ควรวางโหนดที่มีลูกสองคนไว้ตรงกลางของลูกที่อยู่ตรงกลาง เครื่องหมายทับความสัมพันธ์ควรอยู่กึ่งกลางระหว่างผู้ปกครองและเด็กที่เหมาะสม (รอบใดก็ตามที่คุณต้องการ) การป้อนข้อมูล: อินพุตจะถูกจัดเตรียมไว้เป็นอาร์กิวเมนต์สำหรับฟังก์ชันของคุณ ฉันจะไม่ระบุโครงสร้างที่แน่นอนของต้นไม้อย่างไรก็ตามมันต้องใช้งานได้เป็นต้นไม้ไบนารีจริง ไม่มี "ต้นไม้แสดงอยู่ในโปรแกรมของฉันเนื่องจากสตริงมีลักษณะเหมือนผลลัพธ์ที่คาดหวัง" คุณอาจพิมพ์ไปที่กระแสออกหรือส่งกลับสตริงที่มีเอาท์พุทที่คุณเลือก คะแนนสำหรับรหัสที่สั้นที่สุด แต่ฉันต้องการโซลูชันที่ใช้งานได้ยาวนานกว่า short-working 90% อัพเดทสำหรับรางวัล: สำหรับเงินรางวัลฉัน (เครื่องมือเพิ่มประสิทธิภาพ) กำลังทำการเปลี่ยนแปลงเล็กน้อย: อินพุตอาจมาจาก STDIN, ARGV หรืออาร์กิวเมนต์ของฟังก์ชัน เอาต์พุตต้องอยู่ใน STDOUT (หรือconsole.logสำหรับ JS) คุณสามารถสันนิษฐานได้ว่าอินพุตนั้นอยู่ในรูปของอาร์เรย์ตัวอย่างเช่น [1,2,3]หรือ[1 2 3] อัพเดท 2 …

1
Regex กำลังตรวจสอบความถูกต้องของ regex [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัพเดตคำถามเพื่อให้เป็นไปตามหัวข้อสำหรับ Code Golf Stack Exchange ปิดให้บริการใน2 ปีที่ผ่านมา สร้าง regex ที่จะยอมรับสตริง regex เป็นอินพุตและตรวจสอบว่ามันถูกต้อง โดยทั่วไป regex ของคุณควรจะสามารถตรวจสอบตัวเอง (ไม่ควรตรวจสอบ regex ที่ไม่ถูกต้องดังนั้นคุณจึงไม่สามารถใช้.*;) รสชาติของคุณจะต้องได้รับการสนับสนุนอย่างเต็มที่จากการใช้งานที่รู้จักกันดี (Perl, sed, grep, gawk, ฯลฯ ) และต้องสนับสนุนอย่างเต็มที่ว่าการใช้งานเหล่านั้นรองรับอะไรบ้าง [ไม่ต้องกังวลกับทนายพูด ฉันแค่พยายามลบช่องว่างที่เป็นไปได้สำหรับสมาร์ท ***] ฉันเขียนโค้ดกอล์ฟแต่ฉันกังวลว่ามันจะให้ความรู้แก่ผู้ที่รู้จักและใช้รสชาติที่ไม่มีคุณสมบัติ หรือความกังวลของฉันไม่มีมูลความจริง?
17 code-challenge  code-golf  code-golf  game  sudoku  code-challenge  math  ai-player  code-challenge  sorting  rosetta-stone  code-challenge  code-challenge  programming-puzzle  code-golf  number  code-golf  maze  code-golf  math  regular-expression  code-golf  sequence  code-golf  graph-theory  code-golf  string  word-puzzle  natural-language  brainfuck  metagolf  optimized-output  fastest-algorithm  code-golf  game-of-life  cellular-automata  code-golf  puzzle-solver  grid  code-golf  combinatorics  binary-tree  popularity-contest  code-challenge  code-golf  ascii-art  kolmogorov-complexity  brainfuck  metagolf  code-golf  c  date  code-golf  word-puzzle  crossword  word-search  code-golf  code-golf  quine  code-golf  string  random 

7
การหมุนของต้นไม้ไบนารี
แผนผังการค้นหาแบบไบนารีที่สมดุลเป็นสิ่งจำเป็นในการรับประกันการค้นหาO (บันทึก n) (หรือการดำเนินการที่คล้ายกัน) ในสภาพแวดล้อมแบบไดนามิกที่มีการแทรกและสุ่มคีย์จำนวนมากและ / หรือลบต้นไม้อาจทำให้รายการเชื่อมโยงแย่ลงซึ่งน่ากลัวสำหรับการค้นหา ดังนั้นจึงมีหลายชนิดของต้นไม้ไบนารีสมดุลตัวเองที่ต่อต้านผลกระทบนี้ (เช่นต้นไม้ AVLหรือต้นไม้ splay ) ต้นไม้เหล่านี้ขึ้นอยู่กับการหมุนแบบต่าง ๆที่ปรับสมดุลของต้นไม้ ผลัด ในความท้าทายนี้เราจะดูเฉพาะการหมุนทางขวาเดียวการหมุน (การหมุนซ้ายจะสมมาตร) เช่นนี้: 5 3 / \ / \ 3 6 => 1 5 / \ / \ 1 4 4 6 หากมีใบใดใบ1หนึ่ง4หรือ6มีต้นไม้ย่อยทางซ้ายหรือขวาการหมุนก็จะทำให้พวกมันอยู่ตรงนั้น หากนี่เป็นทรีย่อยของต้นไม้ที่มีขนาดใหญ่ขึ้นเราเพียงแค่ "ตัดมันออก" ที่โหนด5และ "แนบใหม่" ต้นไม้ที่หมุน (ตอนนี้โหนด3) ไปยังโหนดนั้น ท้าทาย ให้แผนภูมิการค้นหาแบบไบนารี่1และคีย์หมุนทรีบนโหนดนั้นตามที่อธิบายไว้ข้างต้น 5ที่สำคัญที่ให้ไว้ในตัวอย่างข้างต้นจะเป็น กฎและ I …

10
เขียนโปรแกรมที่สั้นที่สุดเพื่อตรวจสอบว่าต้นไม้ไบนารีมีความสมดุลหรือไม่
สำหรับแต่ละโหนดในต้นไม้ไบนารีที่สมดุลความแตกต่างสูงสุดในความสูงของทรีย่อยของเด็กซ้ายและทรีย่อยของเด็กที่ถูกต้องคือมากที่สุด 1 ความสูงของต้นไม้ไบนารีคือระยะทางจากรูตโหนดไปยังโหนดชายด์ที่อยู่ห่างจากรูทมากที่สุด ด้านล่างเป็นตัวอย่าง: 2 <-- root: Height 1 / \ 7 5 <-- Height 2 / \ \ 2 6 9 <-- Height 3 / \ / 5 11 4 <-- Height 4 ความสูงของต้นไม้ไบนารี: 4 ต่อไปนี้เป็นต้นไม้ไบนารีและรายงานว่ามีความสมดุลหรือไม่: ต้นไม้ข้างต้นเป็นความไม่สมดุล ต้นไม้ด้านบนมีความสมดุลมีความสมดุล เขียนโปรแกรมที่สั้นที่สุดที่ยอมรับได้ว่าป้อนรากของต้นไม้ไบนารีและคืนค่าเท็จถ้าต้นไม้ไม่สมดุลและค่าจริงถ้าต้นไม้มีความสมดุล อินพุต รากของต้นไม้ไบนารี นี่อาจเป็นในรูปแบบของการอ้างอิงไปยังวัตถุรากหรือแม้แต่รายการที่เป็นตัวแทนที่ถูกต้องของต้นไม้ไบนารี เอาท์พุต ส่งกลับค่าความจริง:ถ้าต้นไม้มีความสมดุล ส่งคืนค่า falsey:หากต้นไม้ไม่สมดุล ความหมายของต้นไม้ไบนารี ต้นไม้เป็นวัตถุที่มีค่าและต้นไม้หรือพอยน์เตอร์อีกสองตัว โครงสร้างของต้นไม้ไบนารีมีลักษณะดังนี้: …

12
สาขาไบนารี
รับเลขฐานสองงานของคุณคือการสร้าง 'สาขา' ของจำนวนที่มีความลึก 2 ตัวอย่างเช่นให้0เป็นอินพุตคุณควรส่งออกตรงนี้: /000 /00 / \001 0 \ /010 \01 \011 นี่ควรอธิบายตนเองอย่างเป็นธรรมว่าควรสร้างสาขาอย่างไร ความลึก 2 หมายถึงเราคำนวณสาขาสำหรับจำนวนที่ยาวได้สูงสุด 2 หมายเลข นอกจากนี้เรายังคำนวณสาขาตามลำดับด้วยเลขศูนย์ที่ด้านบนและสาขาที่ด้านล่าง กรณีทดสอบเพิ่มเติม: 0 /000 /00 / \001 0 \ /010 \01 \011 1 /100 /10 / \101 1 \ /110 \11 \111 00 /0000 /000 / \0001 00 \ /0010 …

12
สร้าง BST ที่สมดุลจาก Listed Integers
รับรายการจำนวนเต็มเรียงลำดับสร้างแผนภูมิการค้นหาแบบไบนารีที่สมดุลซึ่งแสดงเป็นอาร์เรย์โดยไม่ต้องใช้การสอบถามซ้ำ ตัวอย่างเช่น: func( [1,2,3,5,8,13,21] ) => [5,2,13,1,3,8,21] ก่อนที่เราจะเริ่มต้นคำแนะนำ: เราสามารถทำให้ปัญหานี้ง่ายขึ้นเป็นตันเพื่อที่เราจะได้ไม่ต้องคิดเกี่ยวกับจำนวนเต็มอินพุท (หรือวัตถุใด ๆ ที่เทียบเท่าสำหรับเรื่องนั้น!) หากเรารู้ว่ารายการอินพุตถูกเรียงลำดับแล้วเนื้อหาจะไม่เกี่ยวข้อง เราสามารถคิดถึงมันในแง่ของดัชนีไปยังอาร์เรย์เดิม การเป็นตัวแทนภายในของอาร์เรย์อินพุตจะกลายเป็น: func( [0,1,2,3,4,5,6] ) => [3,1,5,0,2,4,6] นี่หมายถึงแทนที่จะเขียนสิ่งที่ต้องจัดการกับวัตถุที่เทียบเคียงได้เราเพียงแค่ต้องเขียนฟังก์ชันที่แมปจากช่วง [0, n) ไปยังอาร์เรย์ผลลัพธ์ เมื่อเรามีคำสั่งซื้อใหม่เราสามารถใช้การจับคู่กลับกับค่าในอินพุตเพื่อสร้างอาร์เรย์ส่งคืน โซลูชั่นที่ถูกต้องจะต้อง: ยอมรับอาร์เรย์ที่มีองค์ประกอบเป็นศูนย์และส่งกลับอาร์เรย์ที่ว่างเปล่า ยอมรับอาร์เรย์จำนวนเต็มที่มีความยาวnและส่งคืนอาร์เรย์จำนวนเต็ม ของความยาวระหว่างnและกำลังสูงสุดถัดไปคือ 2 ลบ 1 (เช่นสำหรับขนาดอินพุต 13 จะคืนค่าได้ทุกที่ระหว่าง 13 ถึง 15) Array ซึ่งแสดงถึง BST โดยที่โหนดรูทอยู่ที่ตำแหน่ง 0 และความสูงเท่ากับlog (n)โดยที่ 0 แทนโหนดที่หายไป (หรือnullค่าที่เหมือนกันถ้าภาษาของคุณอนุญาต) โหนดว่างเปล่าหากมีจะต้องมีอยู่ที่ส่วนท้ายของต้นไม้ (เช่น[2,1,0]) …

11
ตีความช่วงหลวม
ตีความช่วงหลวม ListSharpเป็นภาษาการเขียนโปรแกรมตีความที่มีคุณสมบัติมากมายหนึ่งในคุณสมบัติเหล่านั้นเป็นผู้สร้างช่วงดัชนี 1 ที่ทำงานเช่นนี้: คุณกำหนดช่วงเป็น(INT) TO (INT)หรือ(INT)ที่ทั้งสองหรือ int เดียวสามารถไปจากค่า min ถึงmax int32 จากนั้นคุณสามารถใช้ช่วงเหล่านั้นเพื่อแยกองค์ประกอบของอาร์เรย์โดยไม่ต้องกลัวที่จะก้าวล้ำขอบเขตของมัน ดังนั้น: 1 TO 5 สร้าง: {1,2,3,4,5} 3 สร้าง: {3} สามารถเพิ่มช่วงได้โดยใช้ANDโอเปอเรเตอร์ 1 TO 5 AND 3 TO 6 สร้าง: {1,2,3,4,5,3,4,5,6} จำได้ว่ามันใช้ได้กับจำนวนลบเช่นกัน 3 TO -3 สร้าง: {3,2,1,0,-1,-2,-3} ความท้าทายมีดังต่อไปนี้: อินพุต อาร์เรย์อักขระและประโยคช่วงที่กำหนดไว้ก่อนหน้าเป็นสตริง เอาท์พุต องค์ประกอบที่ 1 ตามดัชนีตำแหน่งของช่วง (ดัชนีที่ไม่อยู่ / ลบที่มีอยู่แปลเป็นอักขระว่าง) วิธีที่จะชนะ ในฐานะที่เป็นความท้าทายของcode-golfคุณควรสร้างโปรแกรมด้วยจำนวนไบต์ที่สั้นที่สุดที่จะชนะ …
13 code-golf  array-manipulation  parsing  code-golf  string  ascii-art  kolmogorov-complexity  code-challenge  code-golf  sequence  code-golf  number  array-manipulation  sorting  code-golf  string  function  code-golf  arithmetic  code-golf  math  sequence  number-theory  primes  restricted-source  javascript  code-challenge  polyglot  rosetta-stone  code-golf  code-golf  regular-expression  code-golf  math  code-golf  math  primes  code-golf  ascii-art  kolmogorov-complexity  binary  code-golf  math  sequence  code-golf  sequence  subsequence  code-golf  string  code-golf  parsing  music  code-golf  grid  game  path-finding  board-game  code-golf  string  binary  code-golf  array-manipulation  balanced-string  code-golf  code-golf  algorithm  code-golf  string  number  arithmetic  array-manipulation  code-golf  array-manipulation  binary-tree  tree-traversal  code-golf  code-golf  tips  code-golf  string  base-conversion  code-golf  tips  s.i.l.o.s  code-golf  string  ascii-art  code-golf  code-challenge  code-golf  game 

5
ฟรีต้นไม้ไบนารี
ดังนั้นก่อนที่คุณจะอ่านแนวคิดวิทยาศาสตร์คอมพิวเตอร์ขั้นพื้นฐาน ต้นไม้ไบนารีเป็นโครงสร้างที่จัดสรรแบบไดนามิก (มักจะใช้สำหรับการจัดเก็บข้อมูลที่สั่งซื้อ) เพราะธรรมชาติของมันผ่านต้นไม้ไบนารีมักจะเรียกซ้ำ; นี่เป็นเพราะการเคลื่อนที่แบบเชิงเส้น (ผ่านลูป) นั้นไม่เป็นธรรมชาติเมื่อมีการวนลูปสองทาง วนซ้ำ: นี่หมายถึงฟังก์ชั่นที่เรียกตัวเองว่า ในภาษาที่ล้าสมัยการจัดการหน่วยความจำจำเป็นต้องมีการจัดการหน่วยความจำด้วยตนเอง คู่มือ: หมายความว่าคุณต้องทำด้วยตัวเอง เมื่อคุณทำการจัดการหน่วยความจำแบบแมนนวลคุณจะต้องขอให้ระบบที่อยู่ภายใต้นั้นว่างให้กับสมาชิกของแผนผังแต่ละตัว ฟรี: กู้คืนหน่วยความจำไปยัง poos ทั่วโลกเพื่อให้สามารถนำมาใช้ใหม่และคุณไม่ได้ใช้หน่วยความจำไม่เพียงพอ การทำให้พ้น: สิ่งนี้ทำได้โดยการเรียกใช้ฟังก์ชันfree()และส่งต่อตัวชี้ที่คุณต้องการกู้คืน ตัวชี้: มันเหมือนแท่งเสมือนจริง ในตอนท้ายของหน่วยความจำคือ เมื่อคุณขอหน่วยความจำคุณจะได้รับพอยน์เตอร์ (แท่งเสมือน) ที่มีหน่วยความจำ เมื่อคุณทำเสร็จแล้วให้คืนพอยน์เตอร์ (แท่งเสมือน) โซลูชันแบบเรียกซ้ำ: freeTree(Node* node) { freeTree(node->left); freeTree(node->right); free(node); } ปัญหาคือการเรียกซ้ำหมายความว่าคุณกำลังเรียกฟังก์ชันเดียวกันซ้ำ ๆ สิ่งนี้จะเพิ่มจำนวนสแต็ก การขยายสแต็กใช้หน่วยความจำมากขึ้น เหตุผลที่คุณทำให้ต้นไม้ว่างอยู่เพราะคุณต้องการให้หน่วยความจำกลับมาใช้หน่วยความจำมากขึ้นก็เป็นสิ่งที่ตรงกันข้าม (แม้ว่าคุณจะได้รับหน่วยความจำทั้งสองกลับมา) ในที่สุดคำถาม: ดังนั้นศูนย์จะมีปัญหาเกี่ยวกับการแปลงเวอร์ชั่นซ้ำข้างต้นเป็นโซลูชันเชิงเส้น (เพื่อให้คุณไม่ต้องใช้หน่วยความจำ) กำหนดประเภทโหนด typedef struct Node Node; struct …

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