คำถามติดแท็ก array-manipulation

การแข่งขันเพื่อแก้ปัญหาเฉพาะผ่านการใช้งานและการจัดการของอาร์เรย์

27
พิมพ์เมทริกซ์ Block-Diagonal Matrix
นี่คือรหัสกอล์ฟแบบง่ายๆขนาดกัด (ขนาดไบต์): เนื่องจากรายการจำนวนเต็มบวกที่ไม่ว่างน้อยกว่า 10 ให้พิมพ์เมทริกซ์บล็อกเส้นทแยงมุมที่รายการจะระบุขนาดของบล็อกตามลำดับ บล็อกจะต้องประกอบด้วยจำนวนเต็มบวกน้อยกว่า 10 ดังนั้นหากคุณได้รับเป็นอินพุต [5 1 1 2 3 1] ตัวอย่างเช่นผลลัพธ์ของคุณอาจเป็นเช่นนั้น 1 1 1 1 1 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 …

23
ทำให้เท่าเทียมกันอาร์เรย์
ท้าทาย คุณได้รับอาร์เรย์aaaจำนวนเต็ม ด้วยการย้ายคุณสามารถเพิ่มหรือลดองค์ประกอบของอาร์เรย์โดย 1 งานของคุณคือการเกลี่ยอาร์เรย์นั่นคือทำให้องค์ประกอบทั้งหมดของอาร์เรย์เท่ากับโดยการดำเนินการบางส่วนย้าย แต่นั่นยังไม่เพียงพอ! คุณยังต้องการที่จะทำเป็นเพียงการเคลื่อนไหวที่เป็นไปได้ อินพุต ไม่ว่างเปล่าอาร์เรย์ aaaของจำนวนเต็ม เลือกที่มีความยาวของaaa เอาท์พุต จำนวนขั้นต่ำของการเคลื่อนไหวที่จำเป็นในการเกลี่ยอาร์เรย์aaa กฎระเบียบ กฎระเบียบมาตรฐานสำหรับการส่งที่ถูกต้อง , I / O , ช่องโหว่ใช้ นี่คือรหัส - กอล์ฟดังนั้นทางออกที่สั้นที่สุด (เป็นไบต์) ชนะ ตามปกติอย่าให้คำตอบสั้น ๆ อย่างน่าขันในภาษากอล์ฟกีดกันคุณจากการโพสต์คำตอบที่ยาวกว่าในภาษาที่คุณเลือก นี่ไม่ใช่กฎ แต่คำตอบของคุณจะได้รับดีกว่าถ้ามันมีลิงค์สำหรับทดสอบการแก้ปัญหาและคำอธิบายว่ามันทำงานอย่างไร ตัวอย่าง Input --> Output [10] --> 0 [-1, 0, 1] --> 2 [4, 7] --> 3 [6, 2, 3, …

12
ค้นหาเพลงกล่อมเด็กของนักวางเพลิง
ลองนึกภาพนักวางเพลิงที่เดินไปรอบ ๆ เมืองและเลือกเหยื่อตามรูปแบบที่เฉพาะเจาะจง (หรือมิฉะนั้นให้ลองนึกภาพผึ้งที่บินไปรอบ ๆ สวนและเก็บดอกไม้เพื่อผสมเกสรตามรูปแบบที่เฉพาะเจาะจงมาก ) สมมติว่าเมืองเป็นN ร Nเมทริกซ์ที่Nเป็นจำนวนเต็มสูงกว่าหรือเท่ากับ2 นักวางเพลิงเริ่มต้นจากมุมบนซ้ายและกำหนดจุดMบ้านต่อหน้าพวกเขา (โดยที่Mคือจำนวนบ้านที่พวกเขากำลังอยู่ในขณะนี้) ในขณะที่เปลี่ยนทิศทางที่มันเคลื่อนเข้าหลังไฟแต่ละครั้งตามลำดับ ตะวันออก⟶ใต้⟶ตะวันตก⟶เหนือ⟶ตะวันออก⟶ใต้ ... และอื่น ๆ เพลงกล่อมเด็กของผู้วางเพลิงคือมูลค่าของMที่ทำให้พวกเขาออกจากเมือง (เช่นบ้านหลังสุดท้ายที่พวกเขาไปเยี่ยมก่อนหยุดสิ่งที่น่ารังเกียจ) นี่เป็นวิธีที่ง่ายต่อการเข้าใจด้วยตัวอย่าง ใช้เมทริกซ์ต่อไปนี้เป็นตัวอย่าง: 3 2 3 2 7 3 1 4 1 6 2 5 3 1 1 4 4 3 2 4 1 1 1 1 1 1 เราเริ่มต้นที่มุมบนซ้ายดังนั้นM = 3 …

30
ใช้ Lazy Drop Sort
ความท้าทายนี้ได้อธิบายเกี่ยวกับ dropsort แล้ว แต่ฉันขี้เกียจครับและผมจะต้องอาร์เรย์ของฉันจะเป็นบิตเรียงขึ้นกว่า แต่ก่อนก็ไม่ได้จะต้องมีการจัดเรียงทุกทาง ใน Drop Sort เราปล่อยทุกองค์ประกอบน้อยกว่าองค์ประกอบใด ๆก่อนหน้านี้ ใน Lazy วางเรียงเราวางทุกองค์ประกอบน้อยกว่าหนึ่งอย่างเคร่งครัดก่อนหน้ามัน นี่คือตัวอย่าง พิจารณาอาร์เรย์ต่อไปนี้: 8 6 9 9 7 2 3 8 1 3 ลองทำเครื่องหมายทุกองค์ประกอบที่น้อยกว่าหนึ่งก่อน 8 6 9 9 7 2 3 8 1 3 ^ ^ ^ ^ แจ้งให้ทราบว่าไม่ถูกทำเครื่องหมายหรือที่ผ่านมา3 8พวกเขาทั้งหมดมีขนาดใหญ่กว่าองค์ประกอบเดียวทางด้านซ้ายของพวกเขา การทำให้อัลกอริธึมเสร็จสมบูรณ์ลบองค์ประกอบที่ทำเครื่องหมายไว้เราได้ 8 9 9 3 8 3 นั่นโดยทั่วไปแล้วดูเรียงมากขึ้น …

29
ผลรวมการหมุน
ใช้เมทริกซ์จตุรัสที่มีจำนวนเต็มบวกเป็นอินพุตและคำนวณ "ผลรวมการหมุน" ของเมทริกซ์ ผลรวมการหมุน: หาผลรวมของเมทริกซ์ดั้งเดิมและเมทริกซ์เดียวกันหมุน 90, 180 และ 270 องศา สมมติว่าเมทริกซ์คือ: 2 5 8 3 12 8 6 6 10 จากนั้นผลรวมการหมุนจะเป็น: 2 5 8 8 8 10 10 6 6 6 3 2 3 12 8 + 5 12 6 + 8 12 3 + 6 12 5 = 6 …

30
ความแตกต่างที่ N
ในคณิตศาสตร์วิธีหนึ่งที่จะคิดออกว่าประเภทของความสัมพันธ์ที่กำหนด (เส้นตรง, กำลังสอง, ฯลฯ ) คือการคำนวณความแตกต่าง ในการทำเช่นนั้นคุณจะต้องบันทึกรายการค่า y ที่ช่องว่างระหว่างค่า x ที่เหมือนกันและลบแต่ละค่าออกจากตัวเลขด้านบนสร้างรายการของตัวเลขหนึ่งที่สั้นกว่าจากรายการก่อนหน้า หากรายการผลลัพธ์ประกอบด้วยตัวเลขที่เหมือนกันทั้งหมดความสัมพันธ์มีความแตกต่าง 1 (เป็นเส้นตรง) หากพวกเขาไม่เหมือนกันแล้วคุณทำซ้ำกระบวนการในรายการใหม่ หากตอนนี้พวกเขาเหมือนกันความสัมพันธ์มีความแตกต่างของ 2 (มันเป็นกำลังสอง) หากพวกเขาไม่เหมือนกันคุณเพียงดำเนินการต่อกระบวนการนี้จนกว่าพวกเขาจะ ตัวอย่างเช่นหากคุณมีรายการค่า y [1,6,15,28,45,66] สำหรับการเพิ่มค่า x แบบเพิ่มหน่วย: First Differences: 1 6 1-6 =-5 15 6-15 =-9 28 15-28=-13 45 28-45=-17 66 45-66=-21 Second differences: -5 -9 -5+9 =4 -13 -9+13 =4 -17 …

21
จัดกลุ่มรายการตามความถี่
รับรายการจำนวนเต็มจัดกลุ่มองค์ประกอบที่เกิดขึ้นเป็นอันดับแรกจากนั้นจัดกลุ่มรายการถัดไปเป็นลำดับถัดไปเรื่อย ๆ จนกระทั่งแต่ละองค์ประกอบที่ไม่ซ้ำกันในรายการได้รับการจัดกลุ่มหนึ่งครั้ง ตัวอย่าง: การป้อนข้อมูล: [1,2,3] เอาท์พุท: [[1,2,3]] การป้อนข้อมูล: [1,1,1,2,2,3,3,4,5,6] เอาท์พุท: [[1],[2,3],[4,5,6]] การป้อนข้อมูล: [1,1,1,4,5,6,6,6,7,7,8,8,8,8,8,8,8,9,5,6,5,6,5,6,5,6,-56] เอาท์พุท: [[6, 8],[5],[1],[7],[9,4,-56]] การป้อนข้อมูล: [] เอาท์พุท: [] การป้อนข้อมูล: (empty input) เอาท์พุท: ERROR/Undefined/Doesn't matter กฎระเบียบ การจัดกลุ่มจะต้องเปลี่ยนจากความถี่สูงสุดไปเป็นความถี่ต่ำสุด คำสั่งภายในของการจัดกลุ่มเป็นแบบสุ่ม (ตัวอย่างที่ 3 อาจมี[8,6]แทน) นี่คือรหัส - กอล์ฟชนะน้อยที่สุดนับไบต์ ที่เกี่ยวข้อง เรียงลำดับองค์ประกอบที่แตกต่างของรายการตามลำดับจากมากไปน้อยตามความถี่

24
เมื่อจำนวนเต็มเข้าร่วมคิว
บทนำ คิวเป็นชนิดข้อมูลนามธรรมที่องค์ประกอบเพิ่มไปด้านหน้า (enqueue) และลบออกจากด้านหลัง (dequeue) นอกจากนี้ยังเป็นที่รู้จักกันFIFO (First In First Out)หลักการ มันจะแสดงที่ดีที่สุดด้วยตัวอย่าง: ท้าทาย รับอาร์เรย์ที่ไม่ว่างเปล่าที่มีจำนวนเต็มบวกและองค์ประกอบที่ระบุdequeue (ลบองค์ประกอบ) ออกรายการสุดท้ายของคิว สมมุติว่าXเป็น dequeue ในตัวอย่างนี้ ลองดูรายการต่อไปนี้: [45, X, X, 37, 20, X, 97, X, 85] สิ่งนี้สามารถแปลเป็นรหัสคิวหลอกต่อไปนี้: Queue Enqueue 45 -> 45 Dequeue -> Dequeue -> (dequeue on an empty queue is a no-op) Enqueue 37 -> 37 …

21
เก็บค่าที่ไม่ใช่ศูนย์และเพื่อนบ้าน
นำมาจากคำถามนี้ที่ Stack Overflow ขอขอบคุณ @miles และ @Dada สำหรับการแนะนำอินพุตทดสอบที่กล่าวถึงบางกรณี ความท้าทาย รับอาร์เรย์ของค่าจำนวนเต็มลบศูนย์ทั้งหมดที่ไม่ได้ขนาบข้างด้วยค่าที่ไม่ใช่ศูนย์ รายการควรถูกเก็บไว้อย่างใดอย่างหนึ่งหากเป็นค่าที่ไม่ใช่ศูนย์หรือหากเป็นศูนย์ที่อยู่ใกล้กับค่าที่ไม่ใช่ศูนย์ทันที รายการที่เก็บไว้ควรเก็บไว้ในเอาท์พุทตามลำดับที่มีในอินพุต ตัวอย่าง ป.ร. ให้ไว้ [2 0 4 -3 0 0 0 3 0 0 2 0 0] ค่าที่ควรลบจะถูกทำเครื่องหมายด้วยx: [2 0 4 -3 0 x 0 3 0 0 2 0 x] และผลลัพธ์ควรเป็น [2 0 4 -3 0 0 3 …

29
ชุดผลรวมย่อย
บทนำ [3, 2, 4, 1, 1, 5, 1, 2]ลองสังเกตอาร์เรย์นี้: แต่ละองค์ประกอบจะแสดงความยาวของสตริงย่อยซึ่งจะต้องสรุปรวม ลองดูที่องค์ประกอบแรกของอาร์เรย์ด้านบน: [3, 2, 4, 1, 1, 5, 1, 2] ^ องค์ประกอบที่ดัชนีแรกคือ3ดังนั้นตอนนี้เรารับสตริงย่อยของความยาวสามด้วยดัชนีเดียวกันกับตำแหน่งเริ่มต้น: [3, 2, 4] เมื่อสรุปผลนี้ใน9ดังนั้นองค์ประกอบแรกของชุดย่อยรวม9เป็น เราทำสิ่งนี้สำหรับองค์ประกอบทั้งหมดในอาร์เรย์: 3 -> [3, 2, 4] 2 -> [2, 4] 4 -> [4, 1, 1, 5] 1 -> [1] 1 -> [1] 5 -> [5, …

29
การสั่งซื้อรายการ
สรุป รับรายการจำนวนเต็มคืนค่าดัชนีแต่ละจำนวนเต็มท้ายเมื่อเรียง ตัวอย่างเช่นถ้ารายการเป็นคุณควรกลับ[0,8,-1,5,8] [1,3,0,2,4]โปรดทราบว่าทั้งสอง8รักษาลำดับของพวกเขาสัมพันธ์กับแต่ละอื่น ๆ (เรียงลำดับมีเสถียรภาพ) ใส่วิธีอื่น: สำหรับแต่ละองค์ประกอบในรายการให้คืนจำนวนองค์ประกอบในรายการที่มีขนาดเล็กกว่าองค์ประกอบที่เลือกหรือ (เท่ากับองค์ประกอบและปรากฏขึ้นก่อนองค์ประกอบที่เลือก) ดัชนีจะต้องเริ่มต้นด้วย 0 (ไม่ใช่ 1)แก้ไข: จากการกดย้อนกลับครั้งใหญ่ฉันจะอนุญาตการบ่งชี้ที่อิง 1 รายการ กรณีทดสอบ: 0 -> 0 23 -> 0 2,3 -> 0,1 3,2 -> 1,0 2,2 -> 0,1 8,10,4,-1,-1,8 -> 3,5,2,0,1,4 0,1,2,3,4,5,6,7 -> 0,1,2,3,4,5,6,7 7,6,5,4,3,2,1,0 -> 7,6,5,4,3,2,1,0 4,4,0,1,1,2,0,1 -> 6,7,0,2,3,5,1,4 1,1,1,1,1,1,1,1 -> 0,1,2,3,4,5,6,7 1,1,1,1,1,1,1,0 -> 1,2,3,4,5,6,7,0

24
การจัดเรียงอาร์เรย์ที่กำหนดไว้แล้ว
การป้อนข้อมูล: อาร์เรย์สามจำนวนเต็ม: 0, 1และ2ในลำดับใด ๆ (เช่น[2, 0, 1]) และสตริงที่มีความยาว> = 2 เท่านั้นที่มีตัวอักษรตัวอักษร (ทั้งตัวพิมพ์เล็กและใหญ่) และตัวเลข (เช่นa1B2c3) เอาท์พุท: ขึ้นอยู่กับอาร์เรย์ที่เราเรียงลำดับและส่งออกสตริง มันทำงานอย่างไร อาร์เรย์ชี้ให้เห็นความสำคัญของการสั่งซื้อa-z, A-Zและ0-9ตัวแรก0; เป็นอันดับสอง1; 2และความเป็นอยู่ที่สาม อักขระแต่ละตัวของสตริงนั้นสามารถสั่งซื้อได้ตามนั้น ตัวอย่าง: อาร์เรย์: [2, 0, 1] สตริง: a1B2c3 0-9a-zA-Zขึ้นอยู่กับอาร์เรย์เรารู้ว่ามีความสำคัญของเราคือการสั่งซื้อ ขึ้นอยู่กับว่าเราสามารถแปลงและผลผลิตสตริง: 123acB กฏท้าทาย: สำหรับอาร์เรย์คุณสามารถเลือกที่จะใช้อินพุต 0 ดัชนีหรือดัชนี 1 ดัชนีดังนั้นจึง[3, 1, 2]เป็นอินพุตที่ถูกต้องหากคุณต้องการใช้อาร์เรย์ 1 ดัชนี สตริง (ทั้ง input และ output) abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789มีเพียงตัวละครที่ถูกต้อง: ถ้าภาษาของคุณไม่สนับสนุนอาร์เรย์ …

24
ค้นหาช่วงของค่า True ในรายการ
ท้าทาย: เขียนฟังก์ชั่นหรือโปรแกรมที่ยอมรับรายการค่าบูลีนและส่งกลับช่วงทั้งหมดของ True กรณีทดสอบ: f [F] = [] f [T] = [[0,0]] f [T,T,F,T] = [[0,1],[3,3]] f [F,T,T,F,F,T,T,T] = [[1,2],[5,7]] f [F,T,T,F,F,F,T,T,T,T] = [[1,2],[6,9]] f [T,T,F,F,F,T,T,T,T,T,T,T,T,T,T,F] = [[0,1],[5,14]] f [F,F,T,T,F,F,F,F,F,F,F,F,T,T,T,T,T,T,T,T,F,F,F,F,F,F,F,F,F,F,F,F,F,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,T,T] = [[2,3],[12,19],[33,54],[93,94]] กฎ: คุณสามารถเลือกวิธีการป้อนข้อมูลที่เข้ารหัสเช่นรายการอาร์เรย์สตริง ฯลฯ ผลลัพธ์จะต้องถูกเข้ารหัสเป็น list-like ของ list-ชอบหรือสตริงที่แสดงเช่นอาร์เรย์ดังนั้นรายการ list, tuples, เมทริกซ์, เวกเตอร์เป็นต้น ค่าบูลีนต้องเข้ารหัสเป็นค่าคงที่ แต่ไม่เช่นนั้นการแปลง T / F อย่างง่ายไปเป็นค่าคงที่ที่ต้องการจะได้รับอนุญาต แก้ไข: …

30
แยกรายการออกเป็นส่วนที่จัดทำดัชนีและส่วนที่มีการจัดทำดัชนีคี่
ได้รับแรงบันดาลใจจากคำถามนี้ : ทำให้ฟังก์ชั่น (หรือโปรแกรมเต็มรูปแบบ) ที่ได้รับรายการของตัวเลขและเอาท์พุทรายการที่จัดเรียงใหม่ดังนั้นตัวเลขที่จัดทำดัชนีแม้ปรากฏขึ้นก่อนและหมายเลขคี่ทำดัชนีตามมา ค่าของตัวเลขนั้นไม่มีผลต่อการสั่งซื้อ - เฉพาะดัชนีของพวกเขาเท่านั้น ดัชนีทั้งหมดเป็นศูนย์ ตัวอย่างเช่น: การป้อนข้อมูล: [0, 1, 2, 3, 4] เอาท์พุท: [0, 2, 4, 1, 3] ตัวอย่างอื่น: การป้อนข้อมูล: [110, 22, 3330, 4444, 55555, 6] เอาท์พุท: [110, 3330, 55555, 22, 4444, 6] ใช้การนำเสนอที่เป็นธรรมชาติที่สุดสำหรับรายการที่ภาษาของคุณมี ไม่มีข้อ จำกัด ด้านความซับซ้อน (เช่นการจัดสรรรายการชั่วคราวก็โอเค - ไม่จำเป็นต้องทำแทน) PS มันควรจะทำงานกับรายการที่ว่างเปล่า (ว่างเปล่า = => การส่งออกที่ว่างเปล่า)

21
กำลังคำนวณคลื่น
ฉันได้เลื่อนดูไซต์นี้มาระยะหนึ่งแล้ว แต่เพิ่งได้รับความสนใจจริง ๆ ลองใช้ความท้าทายบางอย่าง ฉันตั้งใจจะลองทำตามหัวข้อที่มีอยู่ในสนามกอล์ฟ แต่ฉันไม่สามารถใช้อินเทอร์เน็ตได้สักพักหนึ่งเมื่อวานนี้และในระหว่างนี้ฉันก็นึกถึงความท้าทายของตัวเอง งานของคุณคือการสร้างโปรแกรมหรือฟังก์ชั่นที่รับอาร์เรย์ของ Floats aและจำนวนเต็มnจากนั้นตั้งค่าแต่ละค่าaเป็นค่าเฉลี่ยของทั้งสองข้างโดยคูณด้วยnเวลา เมื่อใช้ซ้ำ ๆ กับการเพิ่มค่าของnสิ่งนี้จะสร้างการเคลื่อนไหวคล้ายคลื่น: ข้อมูลจำเพาะ: หากเกิดขึ้นมีเพียงหนึ่งรายการในaหรือถ้าnเป็น 0 หรือน้อยกว่าโปรแกรมควรกลับอาร์เรย์เดิม อินพุตและเอาต์พุตสามารถอยู่ในรูปแบบที่คุณต้องการตราบใดที่แยกออกจากกันอย่างชัดเจน สำหรับแต่ละขั้นตอน: รายการแรกในaควรกลายเป็นค่าเฉลี่ยของตัวเองและรายการถัดไป รายการสุดท้ายในaควรกลายเป็นค่าเฉลี่ยของตัวเองและรายการก่อนหน้า รายการอื่น ๆ ในaควรเป็นค่าเฉลี่ยของรายการก่อนหน้าและรายการถัดไป ตรวจสอบให้แน่ใจว่าคุณกำลังคำนวณอาเรย์ของขั้นตอนก่อนหน้าและไม่ใช่อาเรย์ปัจจุบัน กรณีทดสอบ: หมายเหตุ: อินพุต / เอาต์พุตของคุณไม่จำเป็นต้องอยู่ในรูปแบบนี้! [0, 0, 1, 0, 0], 1 -> [0, 0.5, 0, 0.5, 0] [0, 0, 1, 0, 0], 2 -> [0.25, 0, …

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