วิทยาศาสตร์คอมพิวเตอร์

ถาม - ตอบสำหรับนักเรียนนักวิจัยและผู้ปฏิบัติงานด้านวิทยาการคอมพิวเตอร์

2
คาดเดาจำนวนเต็มบวกเฉพาะที่เล็กที่สุด
ให้เราพิจารณาเกมต่อไปนี้: มีผู้เล่นบางคนและคอมพิวเตอร์ ผู้เล่นแต่ละคนป้อนจำนวนเต็มบวกหนึ่งตัวและชื่อของเขา (ผู้เล่นไม่ทราบหมายเลขของผู้อื่นซึ่งเป็นของตัวเอง) เมื่อผู้เล่นทุกคนทำการเคลื่อนไหวคอมพิวเตอร์จะส่งชื่อผู้ชนะ - ผู้ส่งหมายเลขเฉพาะที่ต่ำที่สุด คุณคิดว่าอย่างไรกลยุทธ์ที่ดีที่สุดสำหรับเกมนี้คืออะไร?

2
จำนวนพา ธ การค้นหาที่เป็นไปได้เมื่อค้นหาใน BST
ฉันมีคำถามต่อไปนี้ แต่ไม่มีคำตอบสำหรับเรื่องนี้ ฉันจะขอบคุณถ้าวิธีการของฉันถูกต้อง: Q. เมื่อค้นหาค่าคีย์ 60 ในแผนผังการค้นหาแบบไบนารีโหนดที่มีค่าคีย์ 10, 20, 40, 50, 70, 80, 90 จะถูกสำรวจไม่จำเป็นต้องเรียงตามลำดับที่กำหนด คำสั่งซื้อที่แตกต่างกันมีความเป็นไปได้เท่าใดที่ค่าคีย์เหล่านี้สามารถเกิดขึ้นได้บนเส้นทางการค้นหาจากโหนดรูทที่มีค่า 60 (A) 35 (B) 64 (C) 128 (D) 5040 จากคำถามฉันเข้าใจว่าโหนดทั้งหมดที่ให้ไว้จะต้องรวมอยู่ในการสำรวจเส้นทางและท้ายที่สุดเราต้องไปถึงที่สำคัญเช่น 60 ตัวอย่างเช่นการรวมกันอย่างใดอย่างหนึ่งจะเป็น: 10, 20, 40, 50, 90, 80, 70, 60 เนื่องจากเราต้องข้ามโหนดทั้งหมดที่ระบุข้างต้นเราต้องเริ่มต้นด้วย 10 หรือ 90 ถ้าเราเริ่มต้นด้วย 20 เราจะไม่ถึง 10 (ตั้งแต่ 60> 20 และเราจะทรีย่อยทรีขวาของ 20) ในทำนองเดียวกันเราไม่สามารถเริ่มต้นด้วย …

4
ทำไมไม่มีการเปลี่ยนแปลงใน Regexes? (แม้ว่าภาษาปกติจะสามารถทำได้)
ปัญหา ไม่มีวิธีง่ายๆในการรับการเปลี่ยนแปลงด้วย regex การเปลี่ยนแปลง:การเดินทางคำ ( "aabc") ในการสั่งซื้ออื่นโดยไม่มีการเปลี่ยนแปลงจำนวนหรือชนิดของตัวอักษรw = x1… xnW=x1...xnw=x_1…x_n Regex:การแสดงออกปกติ สำหรับการตรวจสอบ: "การเปลี่ยนลำดับ Regex โดยไม่มีการทำซ้ำ"คำตอบจะสร้างรหัส JavaScript แทนการใช้ Regex โดยสมมติว่าสิ่งนี้ง่ายกว่ามาก "วิธีหาวิธีเรียงสับเปลี่ยนทั้งหมดของคำที่กำหนดในข้อความที่กำหนด" - คำตอบไม่ได้ใช้ regexes เช่นกัน "Regex จับคู่ทั้งหมด {1, 2, 3, 4} โดยไม่มีการทำซ้ำ" - คำตอบนั้นใช้ regexes แต่ก็ไม่สามารถปรับเปลี่ยนได้หรือไม่ง่าย คำตอบนี้ยังเรียกร้อง: "นิพจน์ทั่วไปไม่สามารถทำในสิ่งที่คุณขอมันไม่สามารถสร้างพีชคณิตจากสตริง." วิธีการแก้ปัญหาที่ฉันค้นหา ควรมีแบบฟอร์ม: » aabc « (หรืออะไรก็ได้ที่คุณสามารถใช้วงเล็บเปิดและปิด) (aabc)! (คล้ายกับ (abc)? แต่มีสัญลักษณ์อื่นในตอนท้าย) [aabc]! (คล้ายกับ [abc] …

2
การลบการเรียกซ้ำซ้ายในไวยากรณ์ขณะที่ยังคงความสัมพันธ์ด้านซ้ายของโอเปอเรเตอร์
ฉันมีปัญหากับแบบฝึกหัดนี้: ให้ G เป็นไวยากรณ์ที่ไม่ชัดเจนต่อไปนี้สำหรับ calcul-แคลคูลัส: E → v | λv.E | EE | (E) โดยที่ E คือสัญลักษณ์ที่ไม่ใช่ขั้วเดี่ยวλv.Eแสดงถึงนามธรรม abtraction wrt ตัวแปร v ใน E และ EE แทนแอ็พพลิเคชัน กำหนดไวยากรณ์LL (1) G ′เช่น L (G′) = L (G) และความคลุมเครือของ G ได้รับการแก้ไขโดยกำหนดอนุสัญญาตามปกติดังต่อไปนี้: สิ่งที่เป็นนามธรรมคือการเชื่อมโยงที่ถูกต้อง แอปพลิเคชันนั้นเชื่อมโยงกันอยู่ แอปพลิเคชันมีลำดับความสำคัญสูงกว่านามธรรม แสดง LL (1) การแยกโต๊ะ G λv1. λv2. v1v2v1และต้นไม้แยกที่ได้รับเมื่อแยกสตริง ฉันตัดความกำกวมของการตั้งค่าความสำคัญและการเชื่อมโยงเพื่อให้ได้ไวยากรณ์นี้: …

2
MIN-2-XOR-SAT และ MAX-2-XOR-SAT: พวกเขา NP-hard หรือไม่
ความซับซ้อนของMIN-2-XOR-SATMIN-2-XOR-SAT\text{MIN-2-XOR-SAT}และMAX-2-XOR-SATMAX-2-XOR-SAT\text{MAX-2-XOR-SAT}คืออะไร พวกเขาอยู่ใน P หรือไม่? พวกเขา NP-hard หรือไม่ เพื่อให้เป็นระเบียบนี้แม่นยำยิ่งขึ้นให้ Φ ( x ) = ∧nผมคผม,Φ(x)=∧inCi,\Phi\left(\mathbf x\right)={\huge\wedge}_{i}^{n}C_i, ที่x =( x1, … , xม.)x=(x1,…,xm)\mathbf{x} = (x_1,\dots,x_m)และแต่ละข้อคผมCiC_iเป็นของแบบฟอร์ม( xผม⊕ xJ)(xi⊕xj)(x_i \oplus x_j)หรือx_j)( xผม⊕ ¬ xJ)(xi⊕¬xj)(x_i \oplus \neg x_j) ปัญหาคือการหามอบหมายให้ที่น่าพอใจ\ปัญหานี้อยู่ในตามที่มันสอดคล้องกับระบบการทำงานของสมการเชิงเส้นสมัย22 แฮคเกอร์-SAT2-XOR-SAT\text{2-XOR-SAT}xx\mathbf{x}ΦΦ\PhiPPP222 ปัญหาคือการค้นหาการมอบหมายให้ที่เพิ่มจำนวนของอนุประโยคที่ทำให้พอใจสูงสุด ปัญหาคือการค้นหาการมอบหมายให้ที่ลดจำนวนอนุประโยคที่ทำให้พอใจน้อยที่สุด ความซับซ้อนของปัญหาเหล่านี้คืออะไร?MAX-2-XOR-SATMAX-2-XOR-SAT\text{MAX-2-XOR-SAT}xx\mathbf{x}MIN-2-XOR-SATMIN-2-XOR-SAT\text{MIN-2-XOR-SAT}xx\mathbf{x} ได้รับแรงบันดาลใจจากMIN หรือ MAX-True-2-XOR-SAT NP-hard หรือไม่

2
ปัญหา NP-Complete ใด ๆ สามารถแก้ไขได้โดยใช้พื้นที่พหุนามส่วนใหญ่ (แต่ในขณะที่ใช้เวลาชี้แจง)
ฉันอ่านเกี่ยวกับNPCและความสัมพันธ์กับPSPACEและฉันต้องการทราบว่าปัญหา NPC สามารถแก้ไขได้อย่างแน่นอนโดยใช้อัลกอริทึมที่ต้องการพื้นที่พหุนามกรณีเลวร้ายที่สุด แต่อาจใช้เวลาชี้แจง (2 ^ P (n) โดยที่ P คือพหุนาม) ยิ่งไปกว่านั้นมันสามารถนำมาใช้กับEXPTIMEโดยทั่วไปได้หรือไม่? เหตุผลที่ฉันถามสิ่งนี้คือฉันได้เขียนโปรแกรมบางโปรแกรมเพื่อแก้ปัญหากรณี NPC ที่แย่ลงและพวกเขาสามารถใช้ RAM จำนวนมากสำหรับอินสแตนซ์ที่ยากและฉันสงสัยว่ามีวิธีที่ดีกว่านี้หรือไม่ สำหรับการอ้างอิงดูhttps://fc-solve.shlomifish.org/faq.html

1
IO monad ทางเทคนิคไม่ถูกต้องหรือไม่?
บนวิกิ Haskell มีตัวอย่างต่อไปของการใช้งานตามเงื่อนไขของ IO monad (ดูที่นี่) when :: Bool -> IO () -> IO () when condition action world = if condition then action world else ((), world) โปรดทราบว่าในตัวอย่างนี้คำจำกัดความของIO aถูกนำไปใช้RealWorld -> (a, RealWorld)เพื่อทำให้ทุกอย่างเข้าใจง่ายขึ้น ตัวอย่างนี้เรียกใช้การกระทำใน IO monad แบบมีเงื่อนไข ตอนนี้สมมติว่านั่นconditionคือFalseการกระทำที่actionไม่ควรดำเนินการ ใช้ความหมายสันหลังยาวนี่จะเป็นกรณี อย่างไรก็ตามมีการบันทึกไว้ที่นี่ว่า Haskell พูดถึงเทคนิคที่ไม่เข้มงวด ซึ่งหมายความว่าคอมไพเลอร์ได้รับอนุญาตให้รันaction worldบนเธรดอื่นที่แตกต่างกันและจากนั้นทิ้งการคำนวณนั้นเมื่อพบว่าไม่ได้ต้องการมัน อย่างไรก็ตามตามจุดนั้นผลข้างเคียงจะเกิดขึ้นแล้ว ในตอนนี้เราอาจนำ IO monad ไปใช้ในลักษณะที่ผลข้างเคียงจะแพร่กระจายเมื่อโปรแกรมทั้งหมดเสร็จสิ้นและเรารู้ว่าควรใช้ผลข้างเคียงใด อย่างไรก็ตามนี่ไม่ใช่กรณีเนื่องจากเป็นไปได้ที่จะเขียนโปรแกรมที่ไม่มีที่สิ้นสุดใน …

5
มีกรณีการใช้งานสำหรับประเภทด้านล่างเป็นประเภทพารามิเตอร์ฟังก์ชั่น?
หากฟังก์ชันมีชนิดส่งคืนเป็น⊥ ( ชนิดด้านล่าง ) นั่นหมายความว่าจะไม่ส่งคืน มันสามารถยกตัวอย่างเช่นออกหรือโยนทั้งสถานการณ์ธรรมดา สันนิษฐานว่าถ้าฟังก์ชั่นมีพารามิเตอร์ประเภท⊥มันจะไม่สามารถเรียก (ปลอดภัย) มีเหตุผลใดบ้างในการนิยามฟังก์ชั่นดังกล่าว?

3
ภาษาโปรแกรมอื่นใดนอกเหนือจาก Python และรุ่นก่อนโดยใช้การเยื้องเพื่อกำหนดบล็อคโค้ด [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นหัวข้อสำหรับ Computer Science Stack Exchange ปิดให้บริการในวันที่ 11 เดือนที่ผ่านมา งูใหญ่ค่อนข้างมีชื่อเสียงใช้เยื้องไปsyntacticallyกำหนดกลุ่มของรหัส (ดูคำสั่งผสมในการอ้างอิงภาษา Python) หลังจากใช้ Python มาหลายปีฉันยังคงรู้สึกสนใจและชอบคุณสมบัติทางไวยากรณ์นี้มาก แต่ฉันสงสัยว่า: นอกเหนือจาก Python และภาษา "ก่อนหน้า" (*) ABC แล้ว ซึ่งภาษาการเขียนโปรแกรมอื่น ๆ นั้นมีการใช้การเยื้องสำหรับคำนิยามของบล็อกรหัส ? การบล็อกโค้ดหมายถึง "ข้อความสั่งหลายรายการซึ่งในทางใดทางหนึ่งถือว่าเป็นองค์ประกอบเดียว" ฉันสนใจภาษาการเขียนโปรแกรมเชิงปฏิบัติเป็นพิเศษ แต่ภาษาลึกลับอาจจะคุ้มค่าที่จะกล่าวถึงเช่นกัน (*): " ผู้บุกเบิก " คือตัวเลือกของคำในค่าเริ่มต้นของการรู้ว่าที่นี่ดีกว่า Guido van Rossum ผู้สร้าง Python อธิบายความสัมพันธ์ระหว่าง Python และ ABC เกี่ยวกับการเยื้องในการสัมภาษณ์แบบนี้: " …

3
ทำไมสัญลักษณ์ว่างเปล่าจึงไม่ถือว่าเป็นส่วนหนึ่งของตัวอักษรอินพุตของเครื่องทัวริง
คำจำกัดความของเครื่องจักรทัวริงมักจะชัดเจนเกี่ยวกับสัญลักษณ์ว่างเปล่าที่ไม่ได้เป็นส่วนหนึ่งของตัวอักษรอินพุต ฉันสงสัยว่าสิ่งที่ผิดพลาดเมื่อคุณจะทำให้มันเป็นส่วนหนึ่งของตัวอักษรใส่ได้อย่างมีประสิทธิภาพเพราะสัญลักษณ์ว่างเปล่าอยู่แล้วน่าจะเป็นส่วนหนึ่งของการป้อนข้อมูล ในการอธิบายว่า 'ดูเหมือน' ในประโยคสุดท้ายให้พิจารณาสิ่งต่อไปนี้ ในการตั้งค่าเริ่มต้นจำนวนสัญลักษณ์ว่างเปล่าปรากฏขึ้นทางด้านขวาของอินพุต เมื่อหัวเทปเลื่อนไปเหนือสัญลักษณ์ว่างอันแรกการคำนวณสามารถทำได้ต่อเนื่องจากไม่จำเป็นต้องเป็นสถานะยอมรับหรือปฏิเสธ ตอนนี้สมมติว่าการคำนวณจะเขียนสัญลักษณ์จากตัวอักษรอินพุตไปทางขวาของสัญลักษณ์ว่างเปล่าแรกจากนั้นกลับไปที่ตำแหน่งซ้ายสุดในขณะที่กลับสู่สถานะเริ่มต้น จากนั้นจะ 'เริ่มต้นใหม่' ด้วยเทปอื่น อย่างมีประสิทธิภาพตอนนี้เริ่มต้นด้วยอินพุตที่แตกต่างกันซึ่งมีสัญลักษณ์อินพุตอยู่ทางด้านขวาของช่องว่างที่ไม่เคยมีมาก่อน ดูเหมือนว่าอินพุตจะมีสัญลักษณ์ว่างอย่างมีประสิทธิภาพ พฤติกรรมเพิ่มเติมของเครื่องในขณะนี้อาจแตกต่างกัน: หลังจากพบช่องว่างอีกครั้งตอนนี้จะพบสัญลักษณ์ที่แตกต่างกันไปทางขวา สมมติว่าสถานการณ์นี้เป็นไปได้จริง ๆ ทำไมคุณไม่พิจารณาสัญลักษณ์ว่างเปล่าส่วนหนึ่งของตัวอักษรอินพุตและทำไมคุณไม่อนุญาตให้รวมมันเป็นส่วนหนึ่งของอินพุต 'เริ่มต้น' บางทีมันอาจเป็นเพียงวิธีกำหนดอินพุตเช่นว่ามันจะไม่สิ้นสุดตลอดไปใช่ไหม

2
ถ้าขอบล่างของปัญหาเป็นเลขชี้กำลังแล้วมันคือ NP?
สมมติว่าเรามีปัญหาพีppและเราแสดงให้เห็นว่าขอบเขตล่างสำหรับการแก้ พีppคือΩ ( 2)n)Ω(2n)\mathcal{\Omega}(2^n) ) ขอบเขตล่างสามารถΩ ( 2)n)Ω(2n)\mathcal{\Omega}(2^n)แสดงถึงปัญหาในยังไม่มีข้อความPNPNPหรือไม่

2
โปรแกรม Word ตัวประกอบใน
รับสองสตริงS1,S2S1,S2S_1, S_2เราเขียนS1S2S1S2S_1S_2สำหรับการต่อกัน ได้รับสตริงSSSและจำนวนเต็มk≥1k≥1k\geq 1เราเขียน(S)k=SS⋯S(S)k=SS⋯S(S)^k = SS\cdots Sสำหรับการเรียงต่อกันของkkkสำเนาของSSSSตอนนี้รับสายเราสามารถใช้สัญกรณ์นี้เพื่อ 'บีบอัด' มันคือAABAABAABAABAABAABอาจจะเขียนเป็น((A)2B)2((A)2B)2((A)^2 B)^2 . ลองเรียกน้ำหนักของการบีบอัดตามจำนวนตัวอักษรที่ปรากฏในนั้นดังนั้นน้ำหนักของ((A)2B2)((A)2B2)((A)^2 B^2)คือสองและน้ำหนักของ(AB)2A(AB)2A(AB)^2 A (การบีบอัดของABABAABABAABABA ) คือสาม (AAAแยกต่างหากจะนับแยกต่างหาก) ตอนนี้ให้พิจารณาปัญหาของการคำนวณการบีบอัด 'เบาที่สุด' ของสตริงSSSด้วย|S|=n|S|=n|S|=n n หลังจากคิดว่ามีวิธีการเขียนโปรแกรมแบบไดนามิกที่ชัดเจนซึ่งทำงานในO(n3logn)O(n3log⁡n)O(n^3 \log n)หรือO(n3)O(n3)O(n^3)ขึ้นอยู่กับวิธีที่แน่นอน อย่างไรก็ตามฉันได้รับแจ้งว่าปัญหานี้สามารถแก้ไขได้ในเวลาO(n2logn)O(n2log⁡n)O(n^2 \log n)แม้ว่าฉันจะไม่สามารถหาแหล่งข้อมูลเกี่ยวกับวิธีการทำเช่นนี้ได้ ปัญหานี้ได้รับจากการประกวดการเขียนโปรแกรมเมื่อเร็ว ๆ นี้ (ปัญหา K ที่นี่สองหน้าสุดท้าย) ในระหว่างการวิเคราะห์อัลกอริทึมO(n3logn)O(n3log⁡n)O(n^3 \log n)ถูกนำเสนอและในตอนท้ายกล่าวถึงขอบเขตกำลังสองหลอก ( ที่นี่ที่เครื่องหมายสี่นาที) น่าเสียดายผู้นำเสนอเพียงเรียกว่า 'คำศัพท์ที่ซับซ้อน combinatorics lemma' ดังนั้นตอนนี้ฉันมาที่นี่เพื่อขอคำตอบ :-)

2
มีวงเล็บกี่คู่ที่เพียงพอที่จะทำให้ Brainfuck ทัวริงสมบูรณ์
Brainfuck เป็นภาษาโปรแกรมทัวริงที่สมบูรณ์ซึ่งใช้เพียง 8 สัญลักษณ์ (6 ถ้าคุณไม่สนใจ I / O) สองสิ่งที่น่าสังเกตมากที่สุดที่ผลักดันให้ทัวริงสมบูรณ์คือ[และ]โดยพื้นฐานแล้วป้ายของ Brainfuck และข้ามไป โดยปกติแล้วโปรแกรมใน Brainfuck ใช้หลายชุด[]แต่ฉันก็สงสัยว่าจะต้องใช้วงเล็บจำนวนเท่าใดในการทำให้ Brainfuck ทัวริงสมบูรณ์ อะไรคือจำนวนขั้นต่ำของวงเล็บที่คุณต้องจำลองเครื่องทัวริงของ n-state (ให้จำนวนวงเล็บสำหรับ 1, 2 และสามเครื่องทัวริงรัฐ) หมายเหตุ: เรากำลังสมมติว่าไม่มีที่สิ้นสุดเทปและไม่มีข้อ จำกัด ในการคำนวณ เป็นเครื่องจักรทัวริง 2 สัญลักษณ์

4
ตัวดำเนินการประตูหมุนชั้นนำหมายถึงอะไร
ฉันรู้ว่าผู้เขียนที่แตกต่างกันใช้สัญกรณ์ที่แตกต่างกันเพื่อเป็นตัวแทนความหมายของการเขียนโปรแกรมภาษา เป็นเรื่องของความเป็นจริงผู้ชายสตีลที่อยู่ในปัญหานี้ในวิดีโอที่น่าสนใจ ฉันต้องการที่จะรู้ว่าใครรู้ว่าผู้ประกอบการประตูหมุนชั้นนำมีความหมายที่รู้จักกันดี ตัวอย่างเช่นฉันไม่เข้าใจตัวดำเนินการชั้นนำที่จุดเริ่มต้นของตัวส่วนต่อไปนี้:⊢⊢\vdash x:T1⊢t2:T2⊢λx:T1.t2 : T1→T2x:T1⊢t2:T2⊢λx:T1.t2 : T1→T2\frac{x:T_1 \vdash t_2:T_2}{\vdash \lambda x:T_1 . t_2 ~:~ T_1 \to T_2} มีคนช่วยฉันเข้าใจไหม ขอบคุณ

2
ปัญหาที่ให้ความรู้สึกเป็นเลขยกกำลัง แต่เป็น P
ฉันกำลังพยายามสร้างรายการของอัลกอริทึม / ปัญหาที่ "มีประโยชน์เป็นพิเศษ" ในขณะที่การแก้ปัญหาที่ 'ดูเหมือน' เป็นจำนวนมากในธรรมชาติ แต่มีอัลกอริทึมที่ชาญฉลาดบางอย่างที่แก้พวกเขาในที่สุด ตัวอย่างของสิ่งที่ฉันหมายถึง: การเขียนโปรแกรมเชิงเส้น (อัลกอริทึม simplex เป็นเวลาแบบเอ็กซ์โปเนนเชียลใช้เวลานานในการค้นหาวิธีแก้ปัญหาเวลาพหุนาม!) โดยทั่วไปการเขียนโปรแกรม Semidefinite การทดสอบเบื้องต้น 2-SAT และ HORNSAT การคำนวณดีเทอร์มิแนนต์ (หากฟังดูไม่ยากให้พิจารณาแบบถาวร) ค้นหาการจับคู่ที่สมบูรณ์แบบ ความหลากหลายของปัญหาทางทฤษฎีกลุ่มยากที่สามารถทำได้โดยใช้การจำแนกประเภทของกลุ่มง่าย จำกัด ความหลากหลายของปัญหากราฟยากที่สามารถทำได้โดยใช้ลักษณะที่ต้องห้ามของผู้เยาว์ที่ซับซ้อน (ความสามารถในการฝังบนพื้นผิวโดยพลการ; ขอบเขตของความว่องไวและความกว้างแบนด์วิธ; การคำนวณเลขชี้กำลังในกลุ่มที่ถูกล้อมรอบ (เช่นการคำนวณในขั้นตอน, ทำได้โดย squaring ซ้ำ)abmodkabmodka^b \mod klogblog⁡b\log b การคำนวณอาศัยอัลกอริธึม LLL (เป็นกรณีพิเศษ: อัลกอริทึมแบบยุคลิดในกรณีทั่วไปมากขึ้น: อัลกอริทึม PSLQ หรือ HJLS) ปัญหาข้อ จำกัด ที่ไม่มีข้อกำหนดเทย์เลอร์ (?) ฉันยอมรับว่าฉันไม่เข้าใจอย่างถ่องแท้ แต่ดูเหมือนว่าอาจเป็นกรณีของ 2-SAT …

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