คำถามติดแท็ก game-of-life

สำหรับความท้าทายที่เกี่ยวข้องกับ Game of Life ของ John Conway

6
เกมแห่งชีวิตที่มั่นคง
ท้าทาย: ให้เมทริกซ์ (หรืออาร์เรย์ 2d) เป็น 0s และ 1s ส่งออกจำนวนขั้นตอนที่ใช้สำหรับเกมชีวิตของคอนเวย์เพื่อให้ถึงสถานะที่มั่นคงหรือ -1 ถ้ามันไม่ถึงหนึ่ง สถานะคงที่คือสถานะที่ไม่มีการเปิดหรือปิดเซลล์ในแต่ละขั้นตอน เกมจะต้องทำงานในเมทริกซ์ที่กำหนดโดยมีการเชื่อมต่อด้านบนและด้านล่างและการเชื่อมต่อด้านข้าง (เช่นได้รับเมทริกซ์ 4x3 ที่ควรรันบน 4x3 torus) เมทริกซ์อินพุตจะไม่ใหญ่กว่า 15x15 หมายเหตุ: ถ้าเมทริกซ์เริ่มต้นในสถานะเสถียรเอาต์พุตควรเป็น 0 ตัวอย่าง: การป้อนข้อมูล: [[0,0,0], [0,1,1], [0,1,0]] เอาท์พุท: 2 กระบวนการ: (ไม่จำเป็นต้องแสดง) [[0,0,0], [0,1,1], [0,1,0]] [[1,1,1], [1,1,1], [1,1,1]] [[0,0,0], [0,0,0], [0,0,0]] การป้อนข้อมูล: [[0,0,1,1], [0,1,1,1], [0,1,0,0], [0,1,1,1]] เอาท์พุท: 2 กระบวนการ: [[0,0,1,1], …

10
ถอดรหัสรูปแบบ Wechsler ที่ขยายเพิ่ม
ความท้าทายนี้จะขึ้นอยู่กับการโพสต์ Sandbox โดยuser48538 เนื่องจากเขาไม่ได้ใช้งานเว็บไซต์นี้อีกต่อไปฉันจึงเข้าร่วมการท้าทายนี้ apgsearchโปรแกรมค้นหาซุปแบบกระจายสำหรับ Game of Life ของ Conway และฐานข้อมูลผลการค้นหาCatagolueใช้apgcodesเพื่อจัดหมวดหมู่และแสดงถึงรูปแบบ apgcodes ใช้รูปแบบ Wechsler แบบขยายซึ่งเป็นส่วนขยายของรูปแบบสัญลักษณ์ที่พัฒนาโดย Allan Wechsler ในปี 1992 ตัวอย่างต่อไปนี้และภาพที่นำมาจากLifeWiki สตริงของอักขระnในชุดที่ตรงกับ regex จะ[0-9a-v]แสดงแถบของห้าแถวกว้างคอลัมน์n ตัวละครแต่ละตัวหมายถึงห้าเซลล์ในคอลัมน์แนวตั้งที่สอดคล้องกับ bitstrings [การ00000, 10000, 01000... 00010, 10010, 01010, 11010... 11111] ตัวอย่างเช่น27deee6สอดคล้องกับยานอวกาศเฮฟวี่เวท : ⎡⎣⎢⎢⎢⎢⎢⎢01000111001011001110011100111001100⎤⎦⎥⎥⎥⎥⎥⎥[01100001101111011111100111100000000] \begin{bmatrix} {\color{Gray}0} & 1 & 1 & {\color{Gray}0} & {\color{Gray}0} & {\color{Gray}0} & {\color{Gray}0} …

13
วางเครื่องร่อน!
นี้: เป็นเครื่องร่อน ในเกมแห่งชีวิตของคอนเวย์เครื่องร่อนเป็นรูปแบบที่มีชื่อเสียงที่ลัดเลาะไปทั่วกระดาน สำหรับความท้าทายในวันนี้เรากำลังจะวาด ASCII art Game of Life Board และวางเครื่องร่อนไว้ กระดานที่เราเริ่มต้นคือ: |_|_|_|_|_|_|_|_|_|_| |_|_|_|_|_|_|_|_|_|_| |_|_|_|_|_|_|_|_|_|_| |_|_|_|_|_|_|_|_|_|_| |_|_|_|_|_|_|_|_|_|_| |_|_|_|_|_|_|_|_|_|_| |_|_|_|_|_|_|_|_|_|_| |_|_|_|_|_|_|_|_|_|_| |_|_|_|_|_|_|_|_|_|_| |_|_|_|_|_|_|_|_|_|_| บอร์ดนี้ประกอบด้วยท่อ|และขีดล่าง_ทั้งหมดและเป็น 10x10 คุณต้องเขียนโปรแกรมหรือฟังก์ชั่นที่รับค่าเป็นจำนวนเต็มสองตัวคือ 'x' และ 'y' และเอาท์พุทบอร์ดเดียวกันนี้ด้วยเครื่องร่อนที่พิกัดเหล่านั้น ตัวอย่างเช่นหากคุณมีเครื่องร่อนที่ตำแหน่ง(1, 1)(ดัชนี 0) คุณจะต้องแสดงผลลัพธ์ต่อไปนี้: |_|_|_|_|_|_|_|_|_|_| |_|_|*|_|_|_|_|_|_|_| |_|_|_|*|_|_|_|_|_|_| |_|*|*|*|_|_|_|_|_|_| |_|_|_|_|_|_|_|_|_|_| |_|_|_|_|_|_|_|_|_|_| |_|_|_|_|_|_|_|_|_|_| |_|_|_|_|_|_|_|_|_|_| |_|_|_|_|_|_|_|_|_|_| |_|_|_|_|_|_|_|_|_|_| คุณสามารถสันนิษฐานได้ว่าเครื่องร่อนจะไม่ถูกวางไว้นอกขอบเขตดังนั้นทั้ง x และ y จะอยู่ใน[0-7]ช่วงเสมอ คุณอาจเลือกที่จะใช้พิกัด 1 …

1
ชีวิต: สร้างหรือพัฒนา
เมื่อพิจารณาถึงสถานะของตารางเกมแห่งชีวิตตารางตรวจสอบว่ามันอาจมีการพัฒนาจากสถานะก่อนหน้าใด ๆ หรืออาจถูกสร้างขึ้นเท่านั้น นั่นคือระบุว่ารัฐเป็นรัฐ"Garden of Eden"หรือไม่ อินพุต กริดของรัฐที่มี 1 ระบุว่า "มีชีวิตอยู่" และ 0 หมายถึง "ตาย" คุณสามารถเลือกสองสัญลักษณ์ที่แตกต่างแทน 0 และ 1 หากคุณต้องการ ความยาวด้านของกริดจะไม่เป็นศูนย์ แต่อาจเป็นจำนวนธรรมชาติใด ๆ 1 <= N <= 20 เซลล์ใด ๆ หรือทั้งหมดที่อยู่นอกกริดอินพุตอาจมีชีวิตในรุ่นนี้และเซลล์ใด ๆ หรือทั้งหมดอาจมีชีวิตอยู่ในรุ่นก่อนหน้า เอกภพที่จะพิจารณานั้นไม่มีที่สิ้นสุดดังนั้นจึงไม่มีเงื่อนไขขอบเขต ขอบของอินพุตไม่ใช่ขอบของจักรวาล โดยเฉพาะอย่างยิ่งกริดไม่ได้ห่อ อินพุตอาจอยู่ในรูปแบบของสตริงที่คั่นด้วยแถวหรือสตริงเดี่ยว หากคุณต้องการคุณอาจใช้ความยาวด้านหรือพื้นที่ของกริดเป็นอินพุตเพิ่มเติม (ก่อนหรือหลังกริด) รูปแบบอินพุตที่ยอมรับได้: 010,101,010 010101010 010 101 010 3 010101010 เอาท์พุต "สร้าง" หากไม่มีสถานะก่อนหน้านี้ที่เป็นไปได้ …

3
ใช้เกมแห่งชีวิตในแบบ 3 มิติ
ความท้าทายคือการค้นหาการใช้งานที่สั้นที่สุดของเกมแห่งชีวิตในรูปแบบ 3 มิติ ( ตัวอย่าง ) นี่คือกฎ: เซลล์ (ในกรณีนี้คือลูกบาศก์) ที่มีเพื่อนบ้านเพียง 1 คนหรือน้อยกว่านั้นจะตายราวกับว่าเป็นความเหงา ถ้าเซลล์ 5 เซลล์ล้อมรอบเซลล์ที่ว่างเปล่าพวกมันจะเพาะและเติมเต็ม หากเซลล์มีเพื่อนบ้าน 8 คนขึ้นไปเซลล์จะตายจากความแออัด ทำอย่างน้อย 10x10x10 โดยที่เลเยอร์จะถูกแสดงเป็นรายบุคคลดังนี้: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 …

1
Regex กำลังตรวจสอบความถูกต้องของ regex [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัพเดตคำถามเพื่อให้เป็นไปตามหัวข้อสำหรับ Code Golf Stack Exchange ปิดให้บริการใน2 ปีที่ผ่านมา สร้าง regex ที่จะยอมรับสตริง regex เป็นอินพุตและตรวจสอบว่ามันถูกต้อง โดยทั่วไป regex ของคุณควรจะสามารถตรวจสอบตัวเอง (ไม่ควรตรวจสอบ regex ที่ไม่ถูกต้องดังนั้นคุณจึงไม่สามารถใช้.*;) รสชาติของคุณจะต้องได้รับการสนับสนุนอย่างเต็มที่จากการใช้งานที่รู้จักกันดี (Perl, sed, grep, gawk, ฯลฯ ) และต้องสนับสนุนอย่างเต็มที่ว่าการใช้งานเหล่านั้นรองรับอะไรบ้าง [ไม่ต้องกังวลกับทนายพูด ฉันแค่พยายามลบช่องว่างที่เป็นไปได้สำหรับสมาร์ท ***] ฉันเขียนโค้ดกอล์ฟแต่ฉันกังวลว่ามันจะให้ความรู้แก่ผู้ที่รู้จักและใช้รสชาติที่ไม่มีคุณสมบัติ หรือความกังวลของฉันไม่มีมูลความจริง?
17 code-challenge  code-golf  code-golf  game  sudoku  code-challenge  math  ai-player  code-challenge  sorting  rosetta-stone  code-challenge  code-challenge  programming-puzzle  code-golf  number  code-golf  maze  code-golf  math  regular-expression  code-golf  sequence  code-golf  graph-theory  code-golf  string  word-puzzle  natural-language  brainfuck  metagolf  optimized-output  fastest-algorithm  code-golf  game-of-life  cellular-automata  code-golf  puzzle-solver  grid  code-golf  combinatorics  binary-tree  popularity-contest  code-challenge  code-golf  ascii-art  kolmogorov-complexity  brainfuck  metagolf  code-golf  c  date  code-golf  word-puzzle  crossword  word-search  code-golf  code-golf  quine  code-golf  string  random 

3
ลำดับ Game-of-Life ที่ไม่ซ้ำกันนานที่สุด
รับจำนวนเต็มบวก N กำหนดรูปแบบเริ่มต้นบน N x N- กริดที่ให้ลำดับที่ไม่ซ้ำกันที่ยาวที่สุดภายใต้ Game of Life-rules และสิ้นสุดด้วยรูปแบบคงที่ (วงจรความยาว 1) เล่นบนพรู เป้าหมายไม่ใช่โปรแกรมที่สั้นที่สุด แต่เร็วที่สุด เนื่องจากโลกนี้มีขอบเขต จำกัด ในที่สุดคุณก็จะจบลงด้วยการวนซ้ำดังนั้นจึงเป็นรัฐที่เยี่ยมชมแล้วซ้ำอีก หากการวนซ้ำนี้มีระยะเวลา 1 รูปแบบเริ่มต้นจะเป็นตัวเลือกที่ถูกต้อง เอาต์พุต: รูปแบบเริ่มต้นและจำนวนรวมของสถานะที่ไม่ซ้ำกันในลำดับ (รวมถึงรูปแบบเริ่มต้น) ตอนนี้ 1x1-torus เป็นพิเศษเนื่องจากเซลล์อาจถูกพิจารณาว่าอยู่ใกล้เคียงกับตัวเองหรือไม่ แต่ในทางปฏิบัติไม่มีปัญหาเซลล์ที่มีชีวิตเดียวจะตายในกรณีใดกรณีหนึ่ง ดังนั้นอินพุต 1 ให้ผลตามลำดับความยาว 2 ลำดับเป็นหนึ่งเซลล์ที่มีชีวิตจากนั้นก็ตายไปตลอดกาล แรงจูงใจสำหรับคำถามนี้คืออนาล็อกของฟังก์ชันบีเวอร์ที่วุ่นวาย แต่มีความซับซ้อนน้อยกว่าเนื่องจากเรามีความจำที่ จำกัด นี่จะเป็นลำดับที่ดีที่จะรวมไว้ใน OEIS เช่นกัน สำหรับ N = 3 ความยาวของลำดับคือ 3 รูปแบบใด ๆ บนด้านซ้ายมือถึงพื้นที่สี่เหลี่ยมจัตุรัสสีดำสนิทขนาด 3x3 …

1
กลยุทธ์ Vanishers
โพสต์นี้เป็นแรงบันดาลใจอย่างอิสระโดยการโพสต์ mathoverflow นี้ Vanisher เป็นรูปแบบใด ๆ ในเกมแห่งชีวิตของ Conway ที่หายไปอย่างสมบูรณ์หลังจากผ่านไปหนึ่งก้าว ตัวอย่างเช่นรูปแบบต่อไปนี้คือขนาด 9 Vanisher คุณสมบัติที่น่าสนใจของ Vanishers คือรูปแบบใด ๆ ที่สามารถทำให้หายไปได้โดยเพิ่มเซลล์ที่มีชีวิตเพิ่มขึ้น ตัวอย่างเช่นรูปแบบต่อไปนี้สามารถถูกปิดล้อมอย่างสมบูรณ์ในรูปแบบที่หายไปเช่นนั้น อย่างไรก็ตามเราสามารถสร้างรูปแบบนั้นให้เป็น Vanisher ได้โดยการเพิ่มเซลล์ที่มีชีวิตน้อยลง งานของคุณคือการเขียนโปรแกรมที่ทำงานนี้ให้เรา ที่ได้รับรูปแบบเป็นอินพุตค้นหาและส่งออกรูปแบบการหายไปที่มีอินพุต คุณไม่จำเป็นต้องค้นหารูปแบบที่ดีที่สุดเพียงแค่รูปแบบที่ใช้งานได้ เกณฑ์การให้คะแนน ในการให้คะแนนโปรแกรมของคุณคุณจะต้องเรียกใช้งานบนโพลิปต์ขนาด 6 (ไม่นับกรณีที่เท่ากันแบบสมมาตร) นี่คือ pastebin ที่บรรจุ polyplet แต่ละอันในบรรทัดของมันเอง ควรมีทั้งหมด 524 ของพวกเขาทั้งหมด พวกเขาจะแสดงเป็นรายการของหกพิกัด ( (x,y)tuples) แต่ละคนเป็นที่ตั้งของเซลล์สด คะแนนของคุณจะเป็นจำนวนเซลล์ใหม่ที่เพิ่มเข้ามาเพื่อทำให้โพลีต์เหล่านี้ทั้งหมดเป็น Vanishers ความสัมพันธ์ ในกรณีของความสัมพันธ์ฉันจะจัดทำรายการขนาดโพลิลี 7 ขนาดสำหรับโปรแกรมที่จะทำงาน IO ฉันต้องการให้ IO มีความยืดหยุ่นค่อนข้างคุณสามารถรับอินพุตและเอาต์พุตในรูปแบบที่เหมาะสม …

7
ความเสมอภาคผันผวน
เรามีวัตถุที่สั่นระหว่างจุดสองจุดจำนวนเต็ม[l, r]ที่ความเร็วของหนึ่งหน่วยต่อหน่วยเวลาที่เริ่มต้นที่เกี่ยวกับl คุณอาจจะสมมติt=0 l < rตัวอย่างเช่นถ้าวัตถุแกว่งไป[3, 6]มาเราจะได้: t=0 -> 3 t=1 -> 4 t=2 -> 5 t=3 -> 6 t=4 -> 5 t=6 -> 4 t=7 -> 3 t=8 -> 4 ฯลฯ แต่วัตถุสั่นอย่างต่อเนื่องดังนั้นเราจึงยังมีและt=0.5 -> 3.5t=3.7 -> 5.3 เมื่อให้วัตถุสองชนิดสั่นระหว่างกัน[l1, r1]ให้[l2, r2]กำหนดว่ามีเวลาใดtที่วัตถุทั้งสองแบ่งปันตำแหน่งเดียวกันหรือไม่ คุณใช้เวลาl1, r1, l2, r2ในรูปแบบที่สะดวกและส่งออกค่าจริง / เท็จ อินพุตที่แท้จริง: [[3, 6], [3, …
15 code-golf  array-manipulation  decision-problem  code-golf  math  number-theory  palindrome  integer-partitions  code-golf  math  decision-problem  geometry  code-golf  string  random  code-golf  ascii-art  code-golf  kolmogorov-complexity  primes  code-golf  kolmogorov-complexity  code-golf  graphical-output  code-golf  number-theory  primes  integer  factoring  code-golf  sequence  array-manipulation  integer  code-golf  array-manipulation  matrix  code-golf  sequence  binary  code-golf  game  cellular-automata  game-of-life  binary-matrix  code-golf  string  ascii-art  code-golf  random  generation  logic  code-golf  string  code-golf  code-golf  sequence  array-manipulation  random  apl  code-golf  code-golf  sequence  primes  code-golf  math  sequence  integer  code-golf  number  arithmetic  array-manipulation  decision-problem  code-golf  ascii-art  number  code-golf  restricted-source  quine  code-golf  chess  board-game  code-golf  math  sequence  code-golf  number  sequence  kolmogorov-complexity  code-golf  number  sequence  arithmetic  code-golf  math  number  alphabet  code-golf  ascii-art  classification  statistics  apl  code-golf  array-manipulation  matrix  code-golf  string  kolmogorov-complexity  code-golf  sequence  binary  base-conversion  binary-matrix  code-golf  string  classification  code-golf  tips  python  code-golf  combinatorics  binary  subsequence  restricted-time  code-golf  number  number-theory  code-golf  math  number  complex-numbers  code-golf  string  code-golf  string  code-golf  string  random  game  king-of-the-hill  python  code-golf  number  sequence  code-golf  number  sequence  code-golf  code-golf  math  number  array-manipulation  code-golf  array-manipulation  decision-problem  code-golf  string  code-golf  sequence  integer 

4
เปลี่ยนกฎของชีวิต
หุ่นยนต์เคลื่อนที่คล้ายชีวิตเป็นหุ่นยนต์อัตโนมัติที่คล้ายกับเกมแห่งชีวิตของคอนเวย์ซึ่งทำงานบนกริดขนาดใหญ่ (ในทางทฤษฎี) โดยที่แต่ละเซลล์มี 8 เพื่อนบ้านอย่างแน่นอนและเป็นหนึ่งใน 2 สถานะคือมีชีวิตและตาย . อย่างไรก็ตามเวอร์ชัน Like-like เหล่านี้มีความแตกต่างกันในวิธีการที่สำคัญ: กฎสำหรับเซลล์ที่กำหนดให้มีชีวิตอยู่และกฎสำหรับเซลล์ที่กำหนดให้อยู่รอดในรุ่นต่อไป ตัวอย่างเช่น Game of Life คลาสสิคใช้กฎB3/S23ซึ่งหมายความว่าจะต้องใช้เซลล์ที่มีชีวิต 3 เซลล์เพื่อสร้างเซลล์ใหม่และทั้ง 2 หรือ 3 เพื่อนบ้านที่มีชีวิตอยู่รอด สำหรับความท้าทายนี้เราจะสมมติว่าเพื่อนบ้านไม่รวมตัวมันเองดังนั้นแต่ละเซลล์มี 8 เพื่อนบ้านอย่างแน่นอน งานของคุณคือกำหนดค่าเริ่มต้นกฎการเกิดกฎการเอาชีวิตรอดและจำนวนเต็มบวก (จำนวนรุ่นที่จะทำงาน) จำลองหุ่นยนต์เสมือนชีวิตโดยใช้กฎเหล่านั้นสำหรับจำนวนรุ่นที่กำหนดในรหัสสั้นที่สุดเท่าที่จะทำได้ . การกำหนดค่าเริ่มต้นจะเป็นอาร์เรย์เมทริกซ์จตุรัส / 2 มิติหรือสตริงหลายบรรทัดคุณสามารถเลือกได้ ผู้อื่นอาจได้รับในรูปแบบและวิธีการที่สมเหตุสมผล ตัวอย่างเช่นถ้ากฎการเกิดคือ12345678(เพื่อนบ้านที่มีชีวิต) กฎการเอาชีวิตรอด2357และการกำหนดค่าเริ่มต้นคือ 0 0 0 0 0 0 0 0 0 0 0 0 1 …

4
เกมแห่งชีวิตและความเหนื่อยล้า
เกมสตีวีของชีวิตและความเมื่อยล้าค่อนข้างคล้ายกับที่มีชื่อเสียงมากขึ้นเกมคอนเวย์ของชีวิต จักรวาลของเกมแห่งชีวิตและความเหนื่อยล้าของ Stewie (GoLF) เป็นกริด orthogonal สองมิติที่ไม่มีที่สิ้นสุดของสแควร์เซลล์ซึ่งแต่ละแห่งอยู่ในหนึ่งในสามสถานะที่เป็นไปได้มีชีวิตอยู่ตายหรือเหนื่อย ทุกเซลล์มีปฏิสัมพันธ์กับแปดเพื่อนบ้านซึ่งเป็นเซลล์ที่อยู่ในแนวนอนแนวตั้งหรือแนวทแยงมุม ในแต่ละขั้นตอนการเปลี่ยนภาพต่อไปนี้จะเกิดขึ้น: เซลล์ที่มีชีวิตใด ๆ ที่มีเพื่อนบ้านที่มีชีวิตน้อยกว่าสองคนตายราวกับว่าเกิดจากการมีประชากรน้อย เซลล์ที่มีชีวิตใด ๆ ที่มีสองหรือสามเพื่อนบ้านอาศัยอยู่ไปยังรุ่นต่อไป เซลล์ที่มีชีวิตใด ๆ ที่มีเพื่อนบ้านที่มีชีวิตมากกว่าสามคนจะตายไปราวกับว่ามีจำนวนประชากรมากเกินไป เซลล์ที่ตายแล้วใด ๆ ที่มีเพื่อนบ้านที่มีชีวิตสามคนจะกลายเป็นเซลล์มีชีวิตราวกับว่าได้รับการสืบพันธุ์ เซลล์ใด ๆ ที่มีชีวิตอยู่สำหรับสองชั่วอายุคนติดต่อกันจะตายราวกับว่าล้า มันไม่สามารถปลุกชีวิตอีกครั้งจนกว่าคนรุ่นต่อไป เซลล์ใด ๆ ที่อยู่นอกขอบเขตของกริดอินพุตจะตายเช่นเดียวกับที่ตกลงมาจากหน้าผา ท้าทาย: ความท้าทายของคุณคือการใช้กริดของขนาดn-by-m ซึ่งแสดงสถานะเริ่มต้นของ GoLF และจำนวนเต็มpและแสดงสถานะของเกมหลังรุ่นp กฎ: รูปแบบอินพุตและเอาต์พุตเป็นทางเลือก แต่กริดอินพุต / เอาต์พุตควรมีการแทนค่าเดียวกัน คุณสามารถเลือกสัญลักษณ์ที่พิมพ์ได้เพื่อแสดงเซลล์ที่มีชีวิตและเซลล์ที่ตายแล้ว (ฉันจะใช้1สำหรับเซลล์ที่มีชีวิตและ0เซลล์ที่ตายแล้ว) คุณสามารถเลือกได้ถ้าคุณมีดัชนี 0 หรือ 1 ในตัวอย่างp=1หมายถึงสถานะหลังจากหนึ่งขั้นตอน รหัสสั้นที่สุดในแต่ละภาษาชนะ อนุญาตให้ใช้ฟังก์ชันในตัวสำหรับระบบเซลลูลาร์อัตโนมัติ กรณีทดสอบ: ในตัวอย่างที่เราได้รวมเพียงตารางการป้อนข้อมูลในการป้อนข้อมูลที่ไม่พี ผมได้ให้ผลต่างๆP …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.