หนึ่งในผู้อนุมัติโครงการออยเลอร์ปัญหา 213 (“ Flea Circus”) ได้อย่างไร?


11

ฉันต้องการแก้ปัญหาProject Euler 213แต่ไม่รู้ว่าจะเริ่มต้นอย่างไรเพราะฉันเป็นคนธรรมดาในสาขาสถิติสังเกตว่าต้องมีคำตอบที่ถูกต้องดังนั้นวิธี Monte Carlo จะไม่ทำงาน คุณช่วยแนะนำหัวข้อสถิติให้ฉันอ่านได้ไหม? โปรดอย่าโพสต์วิธีแก้ปัญหาที่นี่

หมัดละครสัตว์

สี่เหลี่ยมจัตุรัสขนาด 30 × 30 ประกอบด้วย 900 หมัดหมัดแรกหนึ่งหมัดต่อตาราง เมื่อระฆังดังขึ้นหมัดแต่ละตัวจะกระโดดไปที่สี่เหลี่ยมที่อยู่ติดกันโดยการสุ่ม (โดยปกติจะมีความเป็นไปได้ 4 อย่างยกเว้นหมัดที่อยู่บนขอบของตารางหรือที่มุม)

จำนวนที่คาดว่าจะเป็นสี่เหลี่ยมที่ว่างหลังจาก 50 ระฆังคืออะไร? ให้คำตอบของคุณถูกปัดเศษเป็นทศนิยมหกตำแหน่ง


7
วิธีการมอนติคาร์โลสามารถให้คำตอบที่แม่นยำมากหากคุณทำแบบจำลองมากพอ
Rob Hyndman

3
หากคุณต้องการโซลูชันการเขียนโปรแกรม monte carlo เป็นแนวทางเดียวเท่านั้น ฉันไม่เห็นเหตุผลที่คุณจะไม่ได้รับคำตอบที่ถูกต้องโดยใช้ monte carlo โซลูชันทางคณิตศาสตร์ / การวิเคราะห์อาจไม่ใช่เรื่องง่าย

ฉันเคยเห็นการสนทนาเกี่ยวกับ Monte Carlo และผู้คนพูดว่าถ้าคุณต้องการให้ได้ทศนิยม 6 ตำแหน่งมันจะใช้เวลานานเกินไปหรือบางทีฉันสับสนกับปัญหาอื่นที่คล้ายคลึงกัน เนื่องจากมันค่อนข้างง่ายในการเขียนโค้ดวิธี Monte Carlo ฉันคิดว่ามันจะคุ้มค่าที่จะลองก่อน
grokus

4
ฉันไม่ได้โต้แย้งคำตอบก่อนหน้านี้สามข้อใด ๆ แต่การวิเคราะห์ (ง่าย) ในคำตอบที่ฉันเสนอให้พูดในมุมมอง: ถ้าคุณต้องการความแม่นยำทศนิยมหกตำแหน่งสำหรับการประมาณจำนวนที่จะเป็นร้อย การจำลอง Monte Carlo จะใช้เวลาอย่างน้อยหนึ่งปีในเครื่องที่มี 10,000 CPUs ทำงานแบบขนาน
whuber

หมัดทั้งหมดถูกขังอยู่ (เช่นปัญหาเกี่ยวกับสี่เหลี่ยมที่มีหมัดมากกว่าหนึ่งอันอยู่หรือไม่) หรือนี่คือหมัดเกี่ยวกับขอบที่กระโดดออกมาและหายไปหรือไม่?
MissMonicaE

คำตอบ:


10

คุณถูก; Monte Carlo ทำไม่ได้ (ในการจำลองที่ไร้เดียงสา - นั่นคือสิ่งที่ทำซ้ำสถานการณ์ปัญหาโดยไม่มีการทำให้เรียบง่าย - การวนซ้ำแต่ละครั้งจะเกี่ยวข้องกับการเคลื่อนไหวของหมัด 900 ครั้งการประมาณคร่าวๆของสัดส่วนของเซลล์ว่างคือซึ่งหมายถึงความแปรปรวนของ Monte - ประมาณการ Carlo หลังจากNซ้ำเช่นประมาณ1 / N 1 / e ( 1 - 1 / e ) = 0.2325 / N1/อียังไม่มีข้อความ1/ยังไม่มีข้อความ1/อี(1-1/อี)=0.2325.../ยังไม่มีข้อความ. ในการปักคำตอบของตำแหน่งทศนิยมหกตำแหน่งคุณจะต้องประมาณไว้ภายใน 5.E-7 และเพื่อให้ได้ความมั่นใจ 95 +% (พูด) คุณจะต้องลดความแม่นยำลงเหลือ 2.5E-7 . การแก้ให้N>4E12โดยประมาณ นั่นจะเป็นหมัดที่อยู่รอบ ๆ 3.6E15 ซึ่งแต่ละตัวจะใช้ CPU หลายตัว ด้วย CPU ที่ทันสมัยหนึ่งตัวคุณจะต้องใช้คอมพิวเตอร์ (มีประสิทธิภาพสูง) เต็มปี และฉันคิดว่าไม่ถูกต้องและ overoptimistically คำตอบที่ได้รับเป็นสัดส่วนแทนที่จะนับ: เป็นจำนวนมันจะต้องมีตัวเลขสำคัญอีกสามร่างการคำนวณเพิ่มขึ้นหนึ่งล้านพับ ... คุณรอนานไหม?)(0.2325/ยังไม่มีข้อความ)<2.5E-7ยังไม่มีข้อความ>4E12

เท่าที่โซลูชันการวิเคราะห์ดำเนินต่อไปจะมีการทำให้เข้าใจง่ายบางอย่าง (สิ่งเหล่านี้สามารถใช้เพื่อคำนวณการคำนวณ Monte Carlo ได้เช่นกัน) จำนวนเซลล์ว่างที่คาดไว้คือผลรวมของความน่าจะเป็นของความว่างเปล่าของทุกเซลล์ ในการค้นหาสิ่งนี้คุณสามารถคำนวณการแจกแจงความน่าจะเป็นของจำนวนการเข้าพักของแต่ละเซลล์ การแจกแจงเหล่านั้นได้มาจากการสรุปผลรวม (อิสระ!) จากหมัดแต่ละอัน สิ่งนี้จะช่วยลดปัญหาของคุณในการค้นหาจำนวนเส้นทางที่มีความยาว 50 ตามตาราง 30 ถึง 30 ระหว่างคู่ของเซลล์ที่ระบุในตารางนั้น (อันแรกคือต้นกำเนิดของหมัดและอีกเซลล์หนึ่งเป็นเซลล์ที่คุณต้องการคำนวณความน่าจะเป็นของ การเข้าพักของหมัด)


2
เพียงเพื่อความสนุกฉันได้คำนวณแรงเดรัจฉานใน Mathematica คำตอบคืออัตราส่วนของจำนวนเต็ม 21,574 หลักต่อจำนวนเต็ม 21,571 หลัก ในรูปทศนิยมมันใกล้ถึง 900 / e อย่างที่คาดไว้ (แต่เนื่องจากเราถูกขอให้ไม่โพสต์วิธีแก้ปัญหาฉันจะไม่ให้รายละเอียดเพิ่มเติม)
whuber

6

คุณไม่สามารถย้ำผ่านความน่าจะเป็นของการยึดครองของเซลล์สำหรับหมัดแต่ละอัน นั่นคือหมัด k เริ่มต้นในเซลล์ (i (k), j (k)) ด้วยความน่าจะเป็น 1 หลังจากทำซ้ำ 1 ครั้งเขามีโอกาส 1/4 ในแต่ละเซลล์ที่อยู่ติดกัน 4 แห่ง (สมมติว่าเขาไม่ได้อยู่บนขอบหรือใน มุมหนึ่ง) จากนั้นการทำซ้ำครั้งต่อไปแต่ละไตรมาสจะได้รับ "ป้าย" ตามลำดับ หลังจาก 50 การวนซ้ำคุณจะมีเมทริกซ์ของความน่าจะเป็นอาชีพสำหรับหมัด ทำซ้ำทั้งหมด 900 หมัด (ถ้าคุณใช้ประโยชน์จากสมมาตรนี้จะลดลงเกือบ 8 เท่า) และเพิ่มความน่าจะเป็น (คุณไม่จำเป็นต้องจัดเก็บทั้งหมดในครั้งเดียวเพียงเมทริกซ์ของหมัดในปัจจุบัน (hmm ยกเว้นว่าคุณเป็น ฉลาดมากคุณอาจต้องการเมทริกซ์การทำงานเพิ่มเติม) และผลรวมของเมทริกซ์ปัจจุบัน) ดูเหมือนว่าฉันจะมีวิธีมากมายในการเร่งความเร็วที่นี่และที่นั่น

สิ่งนี้ไม่เกี่ยวข้องกับการจำลองเลย อย่างไรก็ตามมันเกี่ยวข้องกับการคำนวณค่อนข้างมาก มันไม่ควรยากที่จะคำนวณขนาดของการจำลองที่ต้องการเพื่อให้ได้คำตอบที่ดีกว่าความแม่นยำ 6 dp ที่มีความน่าจะเป็นสูงและหาวิธีที่จะเร็วขึ้น ฉันคาดหวังว่าวิธีการนี้จะเอาชนะการจำลองโดยมีกำไรเพิ่ม


2
คุณตอบคำถามที่แตกต่างเล็กน้อยจากคำถามที่ถาม คำถามกำลังถามจำนวนเซลล์ที่คาดว่าจะว่างเปล่าหลังจากกระโดด 50 ครั้ง แก้ไขฉันถ้าฉันทำผิด แต่ฉันไม่เห็นเส้นทางตรงจากความน่าจะเป็นที่หมัดจะลงเอยในสี่เหลี่ยมจัตุรัสหลังจาก 50 กระโดดไปที่คำตอบจำนวนเซลล์ที่คาดว่าจะว่างเปล่า
Andy W

1
@Andy W - ความคิดเห็นที่ดี; แต่ Monte Carlo สามารถใช้ในการทำขั้นตอนสุดท้าย ;-)

4
@Andy W: จริงๆแล้วส่วนที่ยากคือการได้รับความน่าจะเป็นเหล่านั้นทั้งหมด แทนที่จะเพิ่มลงในแต่ละเซลล์ให้เพิ่มการเติมนั่นคือความน่าจะเป็นที่เซลล์ว่างเปล่า ผลรวมของค่าเหล่านี้ในทุกเซลล์ให้คำตอบ วิธีการของ Glen_b จำลองสถานการณ์ด้วยขนาดของใบสั่งเจ็ดหรือแปดลำดับ ;-)
whuber

@whuber ขอบคุณสำหรับคำอธิบาย การได้รับความน่าจะเป็นเหล่านั้นภายในไม่กี่นาทีนั้นเป็นเรื่องที่ท้าทาย มันเป็นปริศนาที่สนุกและขอบคุณสำหรับการป้อนข้อมูลของคุณ
Andy W

5

ในขณะที่ฉันไม่ได้คัดค้านการปฏิบัติที่เป็นไปไม่ได้ (หรือไม่สามารถปฏิบัติได้) ของการแก้ปัญหา Monte Carlo ของปัญหานี้ด้วยความแม่นยำของทศนิยม 6 ตำแหน่งที่ชี้โดยwhuberแต่ฉันคิดว่าการแก้ไขด้วยความแม่นยำหกหลักนั้นสามารถทำได้

อย่างแรกต่อไปนี้Glen_bอนุภาคสามารถแลกเปลี่ยนได้ในระบอบการปกครองนิ่งดังนั้นมันจึงเพียงพอ (ตามความพอเพียง ) ในการตรวจสอบการครอบครองของเซลล์ต่างๆเช่นนี้ถือเป็นกระบวนการมาร์คอฟเช่นกัน การกระจายการครอบครองในขั้นตอนถัดไปเป็นที่เรียบร้อยแล้วกำหนดโดยอัตราการเข้าพักในเวลาปัจจุบันที การเขียนเมทริกซ์การเปลี่ยน Kนั้นใช้การไม่ได้แน่นอน แต่การจำลองการเปลี่ยนแปลงนั้นเป็นเรื่องง่ายเสื้อ+1เสื้อK

ประการที่สองตามที่ระบุไว้โดยshabbychefหนึ่งสามารถทำตามขั้นตอนการเข้าพักในคี่ (หรือแม้กระทั่ง) สี่เหลี่ยม 450 ซึ่งยังคงอยู่ในสี่เหลี่ยมแปลกเมื่อพิจารณาเท่านั้นแม้แต่ครั้งคือยืดมาร์คอฟเมทริกซ์ 2K2

ประการที่สามปัญหาเดิมจะพิจารณาความถี่ของศูนย์ occupancies หลังจาก50เปลี่ยนมาร์คอฟ ระบุว่าจุดเริ่มต้นมีค่าสูงมากสำหรับการกระจายความน่านิ่งของห่วงโซ่มาร์คอฟ( X ( T ) ) และได้รับที่มุ่งเน้นไปที่ค่าเฉลี่ยเดียวในเซลล์ทุก หน้าพี^050(X(เสื้อ))เราสามารถพิจารณาได้ว่าการรับรู้ของ chain(X(t))ในเวลาt

พี^0=1450Σผม=1450ผม0(Xผม(50))
(X(เสื้อ))คือการรับรู้จากการแจกแจงความน่าจะเป็นแบบคงที่ วิธีนี้จะทำให้การลดความสำคัญกับค่าใช้จ่ายในการคำนวณที่เราสามารถจำลองโดยตรงจากนี้นิ่งกระจาย πซึ่งเป็นกระจายพหุนามที่มีความน่าจะเป็นสัดส่วนกับ 2, 3, และ 4 ที่มุมแม้กระทั่งเซลล์อื่น ๆ บนขอบและเซลล์ภายใน ตามลำดับเสื้อ=50π

เห็นได้ชัดว่าการกระจายนิ่งให้โดยตรงจำนวนที่คาดหวังของเซลล์ว่างเปล่าเป็น เท่ากับ166.1069 ,

Σผม=1450(1-πผม)450
166.1069
pot=rep(c(rep(c(0,1),15),rep(c(1,0),15)),15)*c(2,
    rep(3,28),2,rep(c(3,rep(4,28),3),28),2,rep(3,28),2)
pot=pot/sum(pot)
sum((1-pot)^450)-450
[1] 166.1069

ซึ่งค่อนข้างใกล้เคียงกับ Monte Carlo ประมาณ [จากการจำลอง10⁸ซึ่งใช้เวลา 14 ชั่วโมงในเครื่องของฉัน] แต่ไม่ใกล้พอสำหรับ 6 ทศนิยม166.11

ดังที่แสดงความเห็นโดยwhuberการประเมินจะต้องคูณด้วย 2 เพื่อตอบคำถามอย่างถูกต้องดังนั้นค่าสุดท้ายของ 332.2137


1
+1 ลึกซึ้งมาก ฉันเชื่อว่าคุณต้องเพิ่มคำตอบสุดท้ายของคุณเป็นสองเท่าเนื่องจากคำถามจะถามเซลล์ทั้งหมด 900 เซลล์
whuber

1
ฉันเชื่อว่าคุณอาจเริ่มต้นเพิ่มเติมจากการกระจายนิ่งกว่าที่คุณคิด การคำนวณแบบ brute-force ที่ฉันได้ทำการคำนวณกำลังงานครั้งที่ 50 ของเมทริกซ์การเปลี่ยนแปลงโดยใช้เลขคณิต (เหตุผล) ที่แน่นอน จากนั้นฉันได้รับค่า 330.4725035083710 ... บางทีฉันทำผิดพลาด .... ฉันมีข้อผิดพลาดและตอนนี้ได้รับ 330.7211540144080 .... การตรวจสอบอย่างละเอียดแสดงให้เห็นว่าเมทริกซ์การเปลี่ยนแปลงนั้นถูกต้อง
whuber

@whuber: ขอบคุณมันเป็นไปได้แน่นอน ฉันพยายามหาข้อโต้แย้งการมีเพศสัมพันธ์เพื่อกำหนดความเร็วในการคงอยู่ แต่ไม่สามารถ การจำลอง Monte Carlo ด้วยกระบวนการดั้งเดิมทำให้ฉัน 333.96 มากกว่า10⁶แบบจำลองและการคำนวณ 57 ชั่วโมง โดยไม่มีการรับประกันเพิ่มเติมเกี่ยวกับความแม่นยำ
ซีอาน

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

1
900×900

4

วิธีการวิเคราะห์อาจน่าเบื่อและฉันไม่ได้คิดผ่านความสลับซับซ้อน แต่นี่เป็นวิธีที่คุณอาจต้องพิจารณา เนื่องจากคุณสนใจจำนวนเซลล์ที่คาดว่าว่างเปล่าหลังจาก 50 วงคุณต้องกำหนดห่วงโซ่มาร์คอฟเหนือ "ไม่มีหมัดในเซลล์" มากกว่าตำแหน่งหมัด (ดูที่ Glen_b'sคำตอบซึ่งจำลองตำแหน่งของ หมัดเป็นห่วงโซ่มาร์คอฟตามที่แอนดี้ชี้ให้เห็นในความคิดเห็นต่อคำตอบนั้นวิธีการนั้นอาจไม่ได้ในสิ่งที่คุณต้องการ)

โดยเฉพาะให้:

nผมJ(เสื้อ)ผมJ J

จากนั้นห่วงโซ่มาร์คอฟเริ่มต้นด้วยสถานะต่อไปนี้:

nผมJ(0)=1ผมJทั้งหมด

เนื่องจากหมัดย้ายไปยังหนึ่งในสี่ของเซลล์ที่อยู่ติดกันสถานะของเซลล์จะเปลี่ยนไปขึ้นอยู่กับจำนวนหมัดที่อยู่ในเซลล์เป้าหมายและจำนวนหมัดที่อยู่ในเซลล์ที่อยู่ติดกันสี่แห่งและความน่าจะเป็นที่พวกมันจะย้ายไปที่เซลล์นั้น เมื่อใช้การสังเกตนี้คุณสามารถเขียนความน่าจะเป็นในการเปลี่ยนสถานะสำหรับแต่ละเซลล์เป็นฟังก์ชันของสถานะของเซลล์นั้นและสถานะของเซลล์ที่อยู่ติดกัน

หากคุณต้องการฉันสามารถขยายคำตอบต่อไปได้ แต่สิ่งนี้พร้อมกับคำแนะนำเบื้องต้นเกี่ยวกับโซ่มาร์คอฟควรให้คุณเริ่มต้น


1
nผมJ

@whuber ไม่คุณไม่จำเป็นต้องรักษาตำแหน่งหมัดเป็นห่วงโซ่มาร์คอฟ คิดว่าสิ่งที่ฉันเสนอเป็นการเดินแบบสุ่มสำหรับเซลล์ เริ่มแรกเซลล์อยู่ที่ตำแหน่ง '1' ซึ่งสามารถไปที่ 0, 1, 2, 3, 4 หรือ 5 ความน่าจะเป็นของการเปลี่ยนสถานะขึ้นอยู่กับสถานะของเซลล์ที่อยู่ติดกัน ดังนั้นห่วงโซ่ที่เสนอจึงอยู่บนพื้นที่ของรัฐที่กำหนดใหม่ (ซึ่งนับจำนวนเซลล์สำหรับแต่ละเซลล์) แทนที่จะอยู่ในตำแหน่งหมัดเอง มันสมเหตุสมผลไหม

1
มันสมเหตุสมผล แต่ดูเหมือนว่าถอยหลังไปหนึ่งก้าวเพราะจำนวนรัฐไม่ใหญ่ขึ้นในตอนนี้หรือไม่ ในรูปแบบเดียวมี 900 รัฐ - ตำแหน่งหมัดเดียว - และไม่เกินสี่ช่วงการเปลี่ยนภาพจากแต่ละหนึ่ง การคำนวณจะต้องทำเพื่อหมัดเพียงครั้งเดียวเพราะพวกมันเคลื่อนไหวได้อย่างอิสระ ในตัวคุณดูเหมือนว่าสถานะถูกอธิบายโดยการครอบครองของเซลล์พร้อมกับการครอบครองของเพื่อนบ้านถึงสี่ นั่นจะเป็นรัฐจำนวนมากและเป็นช่วงการเปลี่ยนภาพจำนวนมากในสหรัฐฯ ฉันต้องเข้าใจว่าพื้นที่รัฐใหม่ของคุณคืออะไร
whuber

{nผมJ}

2

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


1
นั่นเป็นข้อสังเกตที่ดี อย่างไรก็ตามฉันพบว่ามันรบกวนมากกว่าที่ควรจะใช้ประโยชน์จากสิ่งนี้อย่างชัดเจน การเขียนโปรแกรมส่วนใหญ่ใช้ในการตั้งค่าเมทริกซ์การเปลี่ยนแปลง เมื่อคุณทำเช่นนั้นเพียงแค่ยกกำลังสองและทำงานกับมัน ด้วยการใช้เมทริกซ์เบาบางการเอาค่าศูนย์ออกครึ่งหนึ่งไม่ช่วยให้คุณประหยัดได้ตลอดเวลา
whuber

@ โฮเบอร์: ฉันสงสัยว่าปัญหาเหล่านี้คือการเรียนรู้เทคนิคการแก้ปัญหาแทนที่จะใช้รอบการคำนวณจำนวนมาก ความสมมาตรความเท่าเทียมกัน ฯลฯ เป็นเทคนิคคลาสสิคจากหนังสือของ Larson เกี่ยวกับการแก้ปัญหา
shabbychef

1
นั่นเป็นจุดที่ดี ในที่สุดก็จำเป็นต้องมีการตัดสินบางอย่าง Project Euler ดูเหมือนจะเน้นการแลกเปลี่ยนระหว่างความเข้าใจด้านคณิตศาสตร์และประสิทธิภาพการคำนวณ Glen_b กล่าวถึงความสมมาตรที่คุ้มค่ากับการหาประโยชน์ก่อนเพราะมีมากกว่าที่จะได้รับจากพวกเขา ยิ่งไปกว่านั้นการใช้เลขคณิตเมทริกซ์แบบกระจัดกระจายคุณจะได้รับผลตอบแทนทวีคูณโดยอัตโนมัติ (ไม่ว่าคุณจะรู้ตัวเสมอหรือไม่ก็ตาม)
whuber

1

ฉันสงสัยว่าความรู้เกี่ยวกับลูกโซ่มาร์คอฟแบบแยกเวลาอาจพิสูจน์ได้ว่ามีประโยชน์


3
นี่ควรเป็นความคิดเห็น แต่ฉันคิดว่าเราสามารถปู่ในตอนนี้
gung - Reinstate Monica

สิ่งนี้กำลังถูกตั้งค่าสถานะโดยอัตโนมัติว่ามีคุณภาพต่ำอาจเป็นเพราะมันสั้นมาก คุณสามารถขยายมันได้หรือไม่
gung - Reinstate Monica

ฉันไม่เห็นสาเหตุ: คำถามถามถึงหัวข้อที่อาจมีประโยชน์และนี่คือหัวข้อที่ในความเห็นของฉันมีความเกี่ยวข้องมากที่สุด
Simon Byrne

1
นี้ได้รับการตั้งค่าสถานะเป็นที่มีคุณภาพต่ำ ฉันโหวตว่ามันใช้ได้ หากคุณดูคำตอบอื่น ๆ ของกระทู้นี้พวกเขาทั้งหมดจะนานขึ้น มาตรฐานมีการพัฒนาอยู่ตลอดเวลา แต่วันนี้สิ่งนี้จะถูกพิจารณาว่าเป็นความคิดเห็นแม้ว่าจะกล่าวถึง "หัวข้อที่อาจมีประโยชน์" อย่างที่ฉันบอกไปฉันคิดว่าสิ่งนี้อาจเป็นคุณปู่ได้ ไม่ว่าคุณจะพยายามขยายมันขึ้นอยู่กับคุณ ฉันแค่บอกให้คุณรู้
gung - Reinstate Monica
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.