Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python
Python
  1. โปรแกรมประเมินนิพจน์บูลีนจากสตริงใน Python

    สมมติว่าเรามีสตริง s ที่เป็นนิพจน์บูลีน มีออเปอเรเตอร์ and และ or อาจมีวงเล็บ ต้องประเมินค่าและคืนผลลัพธ์ วงเล็บต้องประเมินก่อน ตัวอย่าง อินพุต: s = T and (F or T) เอาต์พุต: True ขั้นตอนการแก้ปัญหา ใช้สแต็กและการประมวลผลทีละโทเคน (token): แยกสตริงด้วยช่องว่างเป็นรายการโทเคน t กำหนด dictionary

  2. โปรแกรมตรวจสอบว่าผู้เล่นคนแรกชนะในเกมเอาลูกอมออกหรือไม่ใน Python

    สมมติว่าเรามีรายการตัวเลขชื่อ candies สองผู้เล่นสลับกันเอาลูกอมออก ในแต่ละรอบ ผู้เล่นต้องเอาลูกอมที่ติดกันสองลูกซึ่งมีค่าเท่ากันออก ผู้ที่ไม่สามารถเอาลูกอมออกได้ถือว่าแพ้ ผู้เล่นคนแรกเริ่มก่อน ตรวจสอบว่าผู้เล่นคนแรกจะชนะหรือไม่ ตัวอย่าง อินพุต: nums = [2, 2, 5] เอาต์พุต: True ผู้เล่นคนแรกเอาลูกอมสอ

  3. โปรแกรมแปลงเลขโรมันเป็นจำนวนเต็มใน Python

    สมมติว่าเรามีตัวเลขโรมัน ต้องแปลงเป็นจำนวนเต็ม กฎหลัก: สัญลักษณ์โรมันเขียนจากซ้ายไปขวา เรียงจากค่ามากไปน้อย ยกเว้นกรณีที่เขียนค่าน้อยกว่าหนึ่งหน่วย (เช่น IV = 4, IX = 9) ค่าของสัญลักษณ์โรมัน M: 1000 D: 500 C: 100 L: 50 X: 10 V: 5 I: 1 ตัวอย่าง อินพุต: numeral = MCLXVI เอาต์พุต: 116

  4. โปรแกรมหาจำนวนกล่องที่สร้างโซ่ยาวที่สุดใน Python

    สมมติว่าเรามีรายการกล่อง แต่ละกล่องมีค่า [start, end] (โดย start < end) เราสามารถต่อกล่องสองกล่องได้หาก end ของกล่องหนึ่งเท่ากับ start ของอีกกล่อง เป้าหมายคือหาความยาวของโซ่กล่องที่ยาวที่สุด ตัวอย่าง อินพุต: boxes = [[4, 5], [5, 6], [4, 8], [1, 2], [2, 4]] เอาต์พุต: 4 โซ่ที่ยาวที่สุด: [5, 6] ขั้น

  5. โปรแกรมหาจำนวนคอร์สสูงสุดที่เรียนได้จากช่วงเวลาใน Python

    สมมติว่าเรามีรายการช่วงเวลาในรูป [start, end] แสดงเวลาเริ่มต้นและสิ้นสุดของคอร์ส เราต้องหาจำนวนคอร์สสูงสุดที่เรียนได้ โดยเรียนทีละคอร์ส และคอร์สถัดไปต้องเริ่มหลังจากคอร์สก่อนหน้าจบสิ้นสุด ตัวอย่าง อินพุต: times = [[3, 6], [6, 9], [7, 8], [9, 11]] เอาต์พุต: 3 คอร์สที่เลือก: [3, 6], [7, 8], [9, 11]

  6. โปรแกรมหาจำนวนคอลัมน์ที่ต้องพลิกเพื่อให้แถวที่มีค่าเท่ากันมากที่สุดใน Python

    สมมติว่าเรามีเมทริกซ์ไบนารี เราสามารถเลือกคอลัมน์ใดก็ได้และพลิกค่าทุกเซลล์ในคอลัมน์นั้น (0 กลายเป็น 1, 1 กลายเป็น 0) เป้าหมายคือหาจำนวนแถวสูงสุดที่มีค่าทุกเซลล์เท่ากัน (ทั้ง 0 หรือทั้ง 1) หลังจากการพลิกคอลัมน์บางส่วน ตัวอย่าง เมทริกซ์: [[0, 0, 0], [0, 0, 1], [1, 1, 0]] เอาต์พุต: 2 คำอธิบาย: พลิกค

  7. โปรแกรมหาความยาวสตริงที่ต่อกันได้จากอักขระที่ไม่ซ้ำกันใน Python

    สมมติว่าเรามีรายการสตริงชื่อ words เราต้องสร้างสตริงโดยการต่อย่อยลำดับ (subsequence) ของคำใน words โดยที่อักขระทุกตัวในสตริงที่ได้ต้องไม่ซ้ำกัน เป้าหมายคือหาความยาวสูงสุดของสตริงดังกล่าว ตัวอย่าง อินพุต: words = [xyz, xyw, wab, cde] เราสามารถเลือกคำ xyz, wab, cde มาต่อกันได้ เพราะอักขระทั้งหมดไม่ซ้

  8. โปรแกรมหาผลรวมของคู่ที่ต่อกันได้ของทุกสมาชิกในลิสต์ด้วย Python

    สมมติว่าเรามีรายการตัวเลขชื่อ nums เราต้องหาผลรวมของการต่อตัวเลข (concatenation) ของทุกคู่ที่เป็นไปได้ใน nums โดยคู่ (i, j) และ (j, i) ถือเป็นคู่ที่ต่างกัน ตัวอย่าง อินพุต: nums = [5, 3] การต่อคู่ที่เป็นไปได้: 5 concat 5 = 55 5 concat 3 = 53 3 concat 5 = 35 3 concat 3 = 33 ผลรวม = 55 + 53

  9. โปรแกรมค้นหาเมทริกซ์สำหรับความสูงของคอนโดมิเนียมที่เพิ่มขึ้นเป็นสูงสุดที่เป็นไปได้ใน Python

    สมมติว่าเรามีเมทริกซ์ 2 มิติ ซึ่ง matrix[r][c] แสดงความสูงของคอนโดมิเนียมในเมือง สไลน์ทิศตะวันตก-ตะวันออก (west-east skyline) มองเห็นได้โดยการหาค่าสูงสุดของแต่ละแถว ส่วนสไลน์ทิศเหนือ-ใต้ (north-south skyline) มองเห็นได้โดยการหาค่าสูงสุดของแต่ละคอลัมน์ เราต้องหาเมทริกซ์ใหม่ที่ความสูงของแต่ละคอนโดมิเน

  10. หาความยาวไม้กาวที่ยาวที่สุดจากการต่อไม้กาวใน Python

    มีลิสต์ไม้กาว sticks แต่ละอันมีปลาย 2 ด้าน (ค่า 1-6) ต่อได้ก็ต่อเมื่อปลายตรงกัน ไม้ใหม่มีปลายเป็นปลายที่เหลือ ความยาวเพิ่มขึ้น หาความยาวสูงสุด ตัวอย่าง: sticks = [[2,3], [2,4], [3,5], [6,6]] → 3 (ต่อ [2,3]+[2,4]=[3,4] → +[3,5]=[4,5]) แนวทาง (DFS บนกราฟ) สร้างกราฟ: โหนด = ค่าปลาย (1-6), ขอบ = ไม

  11. ลบโหนดที่มีลูกเพียงข้างเดียวออกจาก Binary Tree ใน Python

    กำหนด Binary Tree root ลบโหนดที่มีลูกเพียงข้างเดียว (left XOR right) ออก ให้ลูกขึ้นแทนที่ ตัวอย่าง: → แนวทาง (Recursive) Base case: root เป็น None หรือ leaf → คืน root ถ้ามีลูกข้างเดียว → คืนผลลัพธ์ของการ solve ลูกข้างนั้นแทน ถ้ามีครบทั้งสองข้าง → solve ทั้งสองข้าง แล้วคืน root ตัวอย่าง

  12. หาสถานะถัดไปของเมทริกซ์เซลล์ (Game of Life) ใน Python

    Conways Game of Life: เมทริกซ์ไบนารี 1=มีชีวิต 0=ตาย กฎ: เซลล์มีชีวิต + เพื่อนบ้านมีชีวิต 2-3 ตัว → มีชีวิตต่อ เซลล์ตาย + เพื่อนบ้านมีชีวิต 3 ตัว → เกิดใหม่ อื่นๆ → ตาย เพื่อนบ้าน = 8 ทิศทาง (แนวนอน แนวตั้ง ทแยง) ตัวอย่าง Input: 1100 0100 0101 1101 Output: 1100 0100 0100

  13. นับออปปอเรชันน้อยที่สุดทำให้สองจำนวนไม่ Coprime ใน Python

    มีจำนวน A, B ออปปอเรชัน: เลือก A หรือ B แล้ว +1 หรือ -1 หาออปปอเรชันน้อยที่สุดให้ GCD(A,B) ≠ 1 ตัวอย่าง: A=8, B=9 → 1 (9→10, GCD(8,10)=2) สังเกต ถ้า GCD ≠ 1 อยู่แล้ว → 0 ถ้าหนึ่งในสองเป็นเลขคู่ → 1 (เลขคู่มีตัวหาร 2) ทั้งคู่คี่: ลอง +1/-1 แต่ละตัว ดูว่า GCD ≠ 1 ได้ไหม → 1 มิฉะนั้น → 2 (เส

  14. พิมพ์จำนวนตัวอักษรมากที่สุดจาก Copy-Paste ใน n ขั้นตอน Python

    มี n ออปปอเรชัน แต่ละอันเป็น: พิมพ์ x, Copy ทั้งหมด, หรือ Paste หาจำนวน x สูงสุด ตัวอย่าง: n = 12 → 81 แนวทาง (Pattern Recognition) กลยุทธ์ที่ดีที่สุด: พิมพ์ 3 ตัว → Copy → Paste × 2 → Copy → Paste × 2 → ... (บล็อก 3 ขั้น: Copy, Paste, Paste ให้คูณ 3) ขั้นตอน ถ้า n <= 4 คืน n เริ่ม v=6, x=3,

  15. หาต้นทุนน้อยที่สุดปีนบันไดถึงปลายด้วยการกระโดดสูงสุด k ขั้นใน Python

    มีลิสต์ stairs ค่าแต่ละขั้น = ต้นทุน เริ่มขั้น 0 ต้องไปขั้นสุดท้าย กระโดดได้ 1..k ขั้นต่อครั้ง หาต้นทุนรวมน้อยที่สุด ตัวอย่าง: stairs = [4, 11, 11, 3, 2], k = 3 → 9 (ทาง: 4 → 3 → 2) แนวทาง (Sliding Window Minimum ด้วย Deque) ใช้ Deque เก็บคู่ (cost, index) เรียง cost น้อยไปมาก 2. สำหรับแต่ละข

  16. หาความยาวโซ่คำ Diminishing ที่ยาวที่สุดใน Python

    มีลิสต์คำที่ถูกต้องและสตริง s หาความยาวโซ่ยาวที่สุดที่ลบตัวอักษรทีละตัวจาก s ได้คำในลิสต์ทุกขั้น ตัวอย่าง: words = [lii, limit, limi, li, coffee, jug, pool, type], s = limit → 4 (limit → limi → lii → li) แนวทาง (Recursive DFS) ฟังก์ชัน solve(words, s) คืนความยาวโซ่สูงสุดจาก s ถ้า s ไม่อยู่ใน

  17. หาคู่ (i, j) ให้ nums[i] + nums[j] + (i - j) สูงสุดใน Python

    หาคู่ index i < j ที่ทำให้ nums[i] + nums[j] + (i - j) สูงสุด ตัวอย่าง: nums = [6, 6, 2, 2, 2, 8] → 11 (เลือก index 0,1: 6+6+0-1=11) แนวทาง (Greedy One Pass) จัดรูป: (nums[i] + i) + (nums[j] - j) ต้องการ maximize เก็บ large = nums[0] (ค่า nums[i] + i สูงสุดจนถึงตอนนี้) วน i = 1..n-1:

  18. หาจำนวนผลรวมเหรียญที่แตกต่างกันได้จากเหรียญและจำนวนใน Python

    มีลิสต์ coins (ค่าเหรียญ) และ quantities (จำนวนเหรียญแต่ละชนิด) หาจำนวนผลรวมที่แตกต่างกันที่ทำได้จากการนำเหรียญมารวมกัน (ต้องใช้อย่างน้อย 1 เหรียญ) ตัวอย่าง: coins = [1, 2, 5], quantities = [1, 2, 1] → 10 ผลรวม (1,2,3,4,5,6,7,8,9,10) แนวทาง (DFS + Set) ฟังก์ชัน rec(i, res): พิจารณาเหรียญชนิดที่

  19. โปรแกรมล้อมรูปแบบด้วย Bold Tag ใน Python

    กำหนดข้อความและลิสต์ patterns ห่อ substring ที่ตรง patterns ด้วย <b> และ </b> รวม tag ที่ติดหรือทับซ้อนกัน ตัวอย่าง: text = thisissampleline, patterns = [this, ssam, sample] → <b>this</b>i<b>ssample</b>line ขั้นตอน สร้าง boolean array bold ขนาดเท่าข้อความ ส

  20. เพิ่ม Command Line Arguments ใน Python ด้วย argparse

    โมดูล argparse ช่วย parse arguments จาก command line ได้ง่าย โครงสร้างพื้นฐาน import argparse def get_args(): parser = argparse.ArgumentParser(description=Example) parser.add_argument(player, metavar=player, type=str, help=Tennis Player) parser.add_argument(titles, metavar=titles, type

Total 9001 -คอมพิวเตอร์  FirstPage PreviousPage NextPage LastPage CurrentPage:187/451  20-คอมพิวเตอร์/Page Goto:1 181 182 183 184 185 186 187 188 189 190 191 192 193