คำถามติดแท็ก data-structures

สำหรับความท้าทายที่เกี่ยวข้องกับวิธีการจัดระเบียบข้อมูล (ชนิดข้อมูลอาร์เรย์ต้นไม้ไบนารี ... )

30
ค้นหาคำนำหน้าและทำรายการคำต่อท้ายทั้งหมดในข้อความ
ฉันใช้ "คำต่อท้าย" ที่นี่อย่างอิสระเพื่อหมายถึง "สตริงย่อยใด ๆ ที่ตามหลังคำนำหน้า" "คำนำหน้า" ที่นี่หมายถึงการเริ่มต้นของคำที่คำเริ่มต้นถูกกำหนดให้เป็นหลังช่องว่างหรือจากอักขระตัวแรกของข้อความที่ป้อน (สำหรับคำแรก) "คำนำหน้า" ในช่วงกลางของคำจะถูกละเว้น เช่นถ้าคำนำหน้าการป้อนข้อมูลของคุณคือ "แขน" และข้อความอินพุตคือ "กองทัพของดัมเบิลดอร์มีอาวุธครบมือสำหรับอาร์มาเก็ดดอนที่กำลังจะมา" ดังนั้นรายการเอาท์พุทจะมี (y, ed, ageddon) กรณีทดสอบ ถือว่าเป็นกรณี ๆ ไปสตริงสิ้นสุดลงหลังจากช่องว่าง อินพุตจะไม่ขึ้นต้นด้วยช่องว่าง การลบรายการที่ซ้ำกันเป็นทางเลือก Input prefix: "1" Input text: "He1in aosl 1ll j21j 1lj2j 1lj2 1ll l1j2i" Output: (ll, lj2j, lj2) - in any permutation Input prefix: "frac" Input …

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

13
มันเป็นจำนวนสูงสุดหรือไม่
กองยังเป็นที่รู้จักลำดับความสำคัญคิวเป็นชนิดข้อมูลนามธรรม โดยหลักการแล้วมันเป็นต้นไม้ไบนารีที่ลูกของทุกโหนดมีขนาดเล็กกว่าหรือเท่ากับโหนดเอง (สมมติว่าเป็น max-heap.) เมื่อองค์ประกอบถูกผลักหรือผุด heap จะจัดเรียงตัวเองใหม่ดังนั้นองค์ประกอบที่ใหญ่ที่สุดคือถัดไปที่จะถูกตอก มันสามารถนำมาใช้เป็นต้นไม้หรือเป็นอาร์เรย์ได้อย่างง่ายดาย ความท้าทายของคุณถ้าคุณเลือกที่จะยอมรับมันคือการพิจารณาว่าอาร์เรย์เป็นฮีปที่ถูกต้องหรือไม่ อาเรย์อยู่ในรูปแบบฮีปถ้าลูกทุกองค์ประกอบมีขนาดเล็กกว่าหรือเท่ากับองค์ประกอบนั้น ใช้อาร์เรย์ต่อไปนี้เป็นตัวอย่าง: [90, 15, 10, 7, 12, 2] จริงๆนี่คือต้นไม้ไบนารีที่จัดเรียงในรูปแบบของอาร์เรย์ นี่เป็นเพราะทุกองค์ประกอบมีลูก 90 มีลูกสองคน 15 และ 10 15, 10, [(90), 7, 12, 2] 15 มีเด็ก 7 และ 12: 7, 12, [90, (15), 10, 2] 10 มีลูก: 2 [90, 15, (10), 7, 12, ] …

6
ประเมินสเปรดชีตอย่างง่าย
กฎระเบียบ ไม่มีการอ้างอิงช่วงเซลล์ ( A2:B3) สูงสุด 9 แถวและ 9 คอลัมน์ ไม่มีการอ้างอิงแบบวงกลมหรือข้อผิดพลาดของสูตร 0เซลล์ว่างประเมิน ข้อมูลเป็นตัวเลขเท่านั้น แต่อาจถูกใช้เป็นสตริง สูตรเป็นสตริง ตัวเลือกการนำไปใช้ คุณต้องระบุตัวเลือกของคุณในเรื่องเหล่านี้: ต้องการสูตรที่จะนำหน้าด้วยอักขระตัวเดียวเช่น=- หรือไม่ เซลล์ซ้ายสุดของแถวที่สองคือA2หรือR2C1ตามอนุสัญญาทั้งสองที่ใช้โดย Excel et al ต้องการตัวอักษรล่วงหน้าหรือคำต่อท้ายในการอ้างอิงเซลล์เช่น$- หรือไม่ หนึ่งใน null, สตริงว่าง, รายการว่าง, ฯลฯ , (แต่ไม่ใช่0) เพื่อแทนเซลล์ว่าง ภาษาที่คุณส่ง (ผู้จัดการสเปรดชีตไม่ได้รับอนุญาต) ภาษาสำหรับสูตร (อาจแตกต่างจากด้านบน) * บราวนี่ชี้หรือคุกกี้เพื่ออธิบายการแก้ปัญหาของคุณ ตัวอย่าง ทางเลือก: 7 =:; 8 A2:; 9: ไม่มี 10 "":; 12: ภาษาสูตร …

7
คำนำหน้าทรี Traversal
เขียนโปรแกรมที่รับ (ผ่าน stdin หรือบรรทัดคำสั่ง) สตริงที่มีรูปแบบเรียกซ้ำ PREFIX[SUFFIXES] ที่ไหน PREFIX อาจเป็นสตริงของตัวอักษรตัวเล็ก (az) รวมถึงสตริงว่างและ SUFFIXESอาจเป็นลำดับของสตริงใด ๆ ที่มีรูปแบบที่เรียกซ้ำPREFIX[SUFFIXES]กันรวมกันรวมถึงลำดับที่ว่างเปล่า สร้างรายการของสตริงตัวอักษรตัวพิมพ์เล็กจากอินพุตโดยการประเมินรายการสตริงซ้ำในแต่ละส่วนต่อท้ายและผนวกเข้ากับคำนำหน้า ส่งออกไปยัง stdout สตริงในรายการนี้ในลำดับใด ๆ หนึ่งรายการต่อบรรทัด (รวมถึงบรรทัดใหม่ต่อท้ายที่เป็นตัวเลือก) ตัวอย่าง หากอินพุตเป็น cat[s[up[][]][]ch[e[r[]s[]]]a[maran[]comb[]pult[[]ing[]]]] แล้วคำนำหน้าเป็นcatและและคำต่อท้ายที่มีs[up[][]], [], และch[e[r[]s[]]] a[maran[]comb[]pult[[]ing[]]]แต่ละคำต่อท้ายมีคำนำหน้าและคำต่อท้ายของตัวเองในทางกลับกัน ผลลัพธ์จะเป็น 9 คำเหล่านี้ในลำดับใด ๆ catsup cats cat catcher catches catamaran catacomb catapult catapulting เพราะอินพุตเข้ารหัสต้นไม้นี้ และคำศัพท์เอาต์พุตทั้ง 9 คำนั้นสามารถสร้างขึ้นได้โดยการข้ามต้นไม้จากรากหนึ่งไปยังอีกใบ หมายเหตุ โปรดจำไว้ว่าคำนำหน้าอาจเป็นสตริงว่างดังนั้นจึงเป็นเช่นนั้น [donut[][]cruller[]] เป็นอินพุตที่ถูกต้องซึ่งเอาต์พุตจะเป็น (ในลำดับใด …

10
ปิดการเชื่อมโยงข้อมูลทวีคูณ
รายการที่เชื่อมโยงเป็นทวีคูณเป็นโครงสร้างข้อมูลที่แต่ละโหนดมีvalue"ลิงก์" รวมถึงทั้งสองpreviousและถัดไปnodesในรายการ ตัวอย่างเช่นพิจารณาโหนดต่อไปนี้ที่มีค่า 12, 99 และ 37: นี่โหนดที่มีค่า12และ99ชี้ไปที่ของตนnextโหนดที่มีค่า99และ37 โหนดที่มีค่า37ไม่มีnextตัวชี้เนื่องจากเป็นโหนดสุดท้ายในรายการ ในทำนองเดียวกันโหนดที่มีค่า99และ37ชี้ไปที่previousโหนดที่เกี่ยวข้อง12และ99แต่12ไม่มีpreviousตัวชี้เนื่องจากเป็นโหนดแรกในรายการ การตั้งค่า ในทางปฏิบัติ "ลิงก์" ของโหนดนั้นถูกนำไปใช้เป็นตัวชี้ไปยังตำแหน่งของโหนดก่อนหน้าและถัดไปในหน่วยความจำ สำหรับวัตถุประสงค์ของเรา "หน่วยความจำ" จะเป็นอาเรย์ของโหนดและตำแหน่งของโหนดจะเป็นดัชนีในอาเรย์ โหนดสามารถจะคิดว่าเป็น 3 ( prev value next )อันดับของแบบฟอร์ม ตัวอย่างด้านบนอาจมีลักษณะเช่นนี้: แต่มันอาจเป็นแบบนี้แทน: เริ่มต้นที่โหนดใด ๆ คุณสามารถติดตามpreviousลิงก์ (แสดงเป็นจุดกำเนิดของลูกศรสีแดง) เพื่อไปยังโหนดที่อยู่ก่อนหน้าและnextลิงก์ (ลูกศรสีเขียว) เพื่อค้นหาโหนดลำดับถัดไปเพื่อรับค่าโหนดทั้งหมดตามลำดับ: [12, 99, 37]. แผนภาพแรกด้านบนสามารถแสดงเป็นอาร์เรย์[[null, 12, 1], [0, 99, 2], [1, 37, null]]ได้ [[2, 99, 1], [0, 37, …

18
การนำเข้า CSV / DSV อย่างง่าย
มากกว่าสิ่งที่ตรงกันข้ามกับสิ่งนี้เล็กน้อย ใน:ข้อมูลDSV หลายบรรทัดและอักขระตัวคั่นเดียว DSV อาจถูกใช้เป็นไฟล์ชื่อไฟล์สตริงที่คั่นด้วยตัวแบ่งบรรทัดรายการของสตริง ฯลฯ ระเบียนทั้งหมดมีจำนวนฟิลด์เท่ากันและไม่มีฟิลด์ว่าง ข้อมูลไม่มีอักขระตัวคั่นและไม่มีการอ้างอิงหรือกลไกการหลบหนี Out: โครงสร้างข้อมูลที่แสดงถึง DSV เช่นรายการของสตริงหรือเมทริกซ์ของสตริง ตัวอย่าง ["here is,some,sample","data,delimited,by commas"]และ",": [["here is","some","sample"],["data","delimited","by commas"]] ["hello;\"","\";world","\";\""]และ";": [["hello","\""],["\"","world"],["\"","\""]](Escape เนื่องจากตัวอย่างนี้ใช้ JSON) ["to be or not","that is the question"]และ" ": [["to","be","or","not"],["that","is","the","question"]]

6
ตัวเลขที่เป็น palindromes ใน N base
ได้รับจำนวนเต็มไม่เป็นลบn >= 0ออกไปตลอดกาลลำดับเลขx_i >= 3ที่มี palindromes ในตรงnฐานที่แตกต่างกันที่ฐานที่สามารถb2 <= b <= x_i-2 นี้เป็นพื้นผกผันของOEIS A126071nที่คุณส่งออกที่ดัชนีอยู่ในลำดับที่มีค่า มันแตกต่างกันเล็กน้อยเพราะฉันเปลี่ยนดังนั้นคุณจึงไม่สนใจเบสb = x_i-1, x_i, x_i+1เนื่องจากผลลัพธ์สำหรับเบสเหล่านั้นมักจะเหมือนเดิมเสมอ นอกจากนี้การชดเชยจะแตกต่างกัน x_iจะมีการ จำกัด จำนวน>= 3เพื่อให้ระยะแรกของผลสำหรับแต่ละnคือA037183 โปรดทราบว่ารูปแบบผลลัพธ์มีความยืดหยุ่น แต่ตัวเลขควรคั่นด้วยวิธีที่ดี ตัวอย่าง: n seq 0 3 4 6 11 19 47 53 79 103 137 139 149 163 167 ... 1 5 7 8 9 12 …
10 code-golf  sequence  base-conversion  palindrome  code-golf  array-manipulation  matrix  code-golf  string  ascii-art  code-golf  ascii-art  physics  code-golf  number  sequence  fibonacci  code-golf  ascii-art  packing  code-golf  string  hexadecimal  code-challenge  restricted-source  decision-problem  binary  code-golf  code-golf  code-golf  stack-exchange-api  code-golf  string  parsing  generation  data-structures  code-golf  kolmogorov-complexity  graphical-output  code-golf  array-manipulation  integer  generation  data-structures  code-golf  number  random  probability-theory  king-of-the-hill  java  minesweeper  code-golf  string  kolmogorov-complexity  animation  code-golf  string  code-golf  code-golf  quine  code-golf  internet  code-golf  arithmetic  base-conversion 

1
การงอแบบโค้งงอ
การเป็นโปรแกรมเมอร์การดูพวกเราดิ้นรนไม่น่าสนใจมาก วันนี้เราเปลี่ยนสิ่งนั้น! ในการท้าทายนี้คุณจะมีส่วนร่วมและยืดหยุ่น hexaflexagons เกี่ยวกับ สำหรับวิดีโอแนะนำดูวิดีโอวิหารบน flexagons รูปทรงโค้งงอเป็นรูปทรงที่คุณสามารถโค้งงอเพื่อเผยให้เห็นใบหน้าอื่นนอกเหนือจากด้านบนและด้านล่าง เราสร้าง hexahexaflexagon ซึ่งมี 6 หน้า ดูภาพด้านล่างเกี่ยวกับวิธีพับ hexahexaflexagon จากแถบกระดาษ Aแสดงให้เห็นถึงทั้งสองด้านของแถบ สามเหลี่ยมสีขาวสองอันติดกัน นี่คือวิธีที่คุณจะดิ้น: ด้านล่างนี้เป็นแผนผังของรัฐที่เป็นไปได้และความสัมพันธ์: วงกลมสีแสดงถึงสามเหลี่ยม 6 รูปด้วยหมายเลขเดียวกันจากภาพแรก เส้นแบ่งแต่ละอันมีสองสี - ด้านล่างส่วนใหญ่แสดงถึงด้านหลัง (สิ่งที่คุณจะเห็นว่าคุณจะพลิกงอของคุณไปรอบ ๆ ) ซึ่งคุณไม่ต้องพิจารณาในความท้าทายนี้ วงกลมสีเทาในพื้นหลังแทนวิธีที่คุณสามารถดิ้น flexagon คุณอยู่ในสถานะใดก็ตาม: มี 4 วิธีที่แตกต่างกันจะดิ้นมันที่เราเรียกเหล่านี้Left, Right, และUp Downคุณไม่ได้งอตามทิศทางเหล่านี้จริง ๆ บิตที่สำคัญคือบางอันอยู่ตรงข้ามกัน หากคุณอยู่ในศูนย์กลางคุณสามารถใช้LeftและRightไปยังศูนย์อื่น ๆ จะได้รับจากศูนย์ที่คุณใช้และUp Downหากคุณไม่ได้อยู่ตรงกลางคุณจะไม่สามารถใช้งานได้LeftRightหรือ Left/Down = clockwise Right/Up = …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.