การเขียนโปรแกรมปริศนา & รหัสกอล์ฟ

คำถาม & คำตอบสำหรับผู้ชื่นชอบการเขียนโปรแกรมปริศนา

11
จำลองแท็กวงจร Bitwise
ท้าทาย กำหนดสองสตริงในรูปแบบ I / O เริ่มต้นให้ทำดังต่อไปนี้: หมายเหตุ: ความท้าทายจะอ้างถึงสตริงแรกว่า "ข้อมูล" และที่สองเรียกว่า "โปรแกรม" เปลี่ยนโปรแกรมเป็นสตริงที่ไม่มีที่สิ้นสุดซึ่งเป็นเพียงโปรแกรมที่ทำซ้ำไม่สิ้นสุด (เช่น10-> 1010101010...) ความท้าทายจะอ้างถึงสิ่งนี้ว่า "โปรแกรมที่ไม่มีที่สิ้นสุด" ในขณะที่ข้อมูลไม่ว่างให้ทำดังต่อไปนี้ในขณะที่วนซ้ำโปรแกรมที่ไม่มีที่สิ้นสุด: หากคำสั่งปัจจุบันคือ "0" ให้ลบบิตซ้ายสุดในข้อมูล หากข้อมูลว่างเปล่า "0" จะไม่ทำอะไรเลย ข หากคำสั่งปัจจุบันคือ "1" ให้ผนวกอักขระตัวถัดไปในโปรแกรมเข้ากับข้อมูลหากบิตซ้ายสุดในข้อมูลเป็นหนึ่ง ค. ถ้าข้อมูลไม่ว่างตอนนี้ให้เอาท์พุทข้อมูล กรณีทดสอบ Data เป็นด้านซ้ายของอินพุตและโปรแกรมเป็นด้านขวา 100, 0 --> 00, 0 1111, 1 --> 11111, 111111, 1111111, ... 10, 011 --> 0, 0, 0 …

6
String Manipulation Interpreter
สรุป มีการสร้างภาษาการจัดการสตริงใหม่โดยใช้เฉพาะอักขระ$+#-!*|@>! งานของคุณคือการใช้ล่ามให้กับมันในไม่กี่ไบต์เท่าที่จะทำได้ อินพุต สตริงซึ่งเป็นบรรทัดเดียวของภาษานี้ สิ่งนี้สามารถดำเนินการได้ในวิธีที่สมเหตุสมผล (stdin, พารามิเตอร์ฟังก์ชัน, อาร์กิวเมนต์บรรทัดคำสั่ง ฯลฯ ) หรือเป็นตัวแปรที่กำหนดไว้ล่วงหน้า หากโปรแกรมขอการป้อนข้อมูลจากผู้ใช้ให้ยอมรับการป้อนข้อมูลจากผู้ใช้ทั้งหมดที่ร้องขอจาก stdinและไม่มีอะไรเพิ่มเติมดูด้านล่าง คุณอาจคิดว่ามันเป็นโปรแกรมที่ถูกต้อง เอาท์พุต สิ่งที่ภาษาจะออกข้อกำหนดรายละเอียดด้านล่าง คุณต้องส่งออกสตริงในลักษณะที่สมเหตุสมผล (stdout, ฟังก์ชั่นเอาท์พุท ฯลฯ ) หรือค่าตัวแปร เมื่อภาษาออกมาอย่างชัดเจนต้องไปที่ stdout ช่องโหว่มาตรฐานถูกแบน ข้อมูลจำเพาะภาษา การประมวลผลและไวยากรณ์ ภาษามีรูปแบบของการประมวลผลที่ง่ายมากเนื่องจากมีการจัดการสตริงเท่านั้น: เริ่มต้นด้วยสตริงว่าง ( "") และเปลี่ยนด้วยแต่ละคำ คำประกอบด้วยหนึ่งหรือสองส่วน: ฟังก์ชั่น (ด้านล่าง) ตามด้วยอาจเป็นพารามิเตอร์ (ด้านล่าง) ซึ่งแก้ไขพฤติกรรมของมัน ข้อกำหนดถูกคั่นด้วยไพพ์ ( |) คุณอาจคิดว่ามันจะไม่เป็นโปรแกรมเปล่าและไม่มีคำใดจะว่างเปล่า คุณควรส่งออกค่าในตอนท้ายของโปรแกรม ฟังก์ชั่น ภาษามีเพียง 6 ฟังก์ชันดังที่แสดงด้านล่าง แต่ละฟังก์ชั่นยอมรับพารามิเตอร์หนึ่งหรือศูนย์ + …

12
Magical Modulo Squares
ฉันเป็นแฟนตัวยงของทฤษฎีจำนวน สิ่งที่ยิ่งใหญ่ในทฤษฎีตัวเลขคือคณิตศาสตร์เลขคณิต ความหมายของการเป็น≡ ขa ≡ bพอควรม.a≡bmodma\equiv b\mod mและถ้าหากm ∣ a - bm∣a−bm\mid a-bข สิ่งที่สนุกที่ต้องทำคือการเพิ่มพลัง: โดยเฉพาะเมื่อโมดูลัสเป็นจำนวนเฉพาะ โดยเฉพาะอย่างยิ่งจะได้รับการพิสูจน์แล้วว่าถ้าและม.มีความสำคัญ (หุ้นปัจจัยไม่มีทั่วไปนอกเหนือจาก 1 ) จากนั้นมีอยู่จำนวนอีเมลดังกล่าวที่อี ≡ 1aaaม.mm111อีeeaอี≡ 1พอควรม.ae≡1modma^e\equiv 1\mod m . ฉันจะอธิบายว่าการออกกำลังกายเป็นอย่างไร ลองมาโมดูลัm = 7m=7m=7 7 ผลลัพธ์ที่เป็นไปได้ของโปรแกรมหรือฟังก์ชั่นจะเป็น: 3 2 6 4 5 1 2 4 1 2 4 1 6 1 6 1 6 1 …

1
ใช้ MENACE
พื้นหลัง Menace ( M achine E ducable N oughts ครั้งC Rosses E ngine) เป็นขั้นตอนวิธีการเรียนรู้เครื่องตื้นพื้นฐานสำหรับเอกซ์เกมและไม้กางเขนที่สร้างขึ้นโดยนักวิทยาศาสตร์คอมพิวเตอร์ชาวอังกฤษโดนัลด์ Michie ในปี 1960 แต่เดิมมันถูกนำไปใช้กับ 304 กลักไม้ขีดไฟแต่ละป้ายที่มีตำแหน่งกระดานและมีลูกปัดสี (กับหนึ่งในเก้าสีแสดงถึงการเคลื่อนไหวที่เป็นไปได้) Michie คำนวณว่า 304 matchboxes เหล่านี้เพียงพอสำหรับทุกการเคลื่อนไหวบนกระดาน ในทางคณิตศาสตร์มากขึ้นในหมู่คุณอาจรู้ว่ามีการรวมกันที่เป็นไปได้ของ Noughts, Crosses และ Blanks บนกระดาน N&C 19,683 อย่างไรก็ตามเขาคำนวณวิธีที่จะลดจำนวนนี้ (เพื่อเพิ่มความเร็วของอัลกอริทึมและมีแนวโน้มที่จะลดจำนวนในกล่องจับคู่!) ประการแรกเขาลบการเคลื่อนไหวที่เป็นไปไม่ได้ทั้งหมดเช่น: ------- |X|0|X| | |0| | |X|X| | ------- (สองเอกซ์และสี่ครอส) ถัดไปเขาชดเชยการหมุน ตัวอย่างเช่นหากอยู่ในกลักไม้ขีดไฟเราจะเห็น: ------- | …

3
ตำแหน่งที่ไม่ชัดเจนบนกริด
คุณมีหุ่นยนต์ตัวน้อยที่มีเซ็นเซอร์วัดระยะทางสี่ตัว มันรู้เลย์เอาต์ของห้อง แต่มันไม่มีความรู้สึกในการวางแนวอื่นนอกจากจะสามารถล็อคการวางแนวของกริด คุณต้องการที่จะหาว่าหุ่นยนต์อยู่บนพื้นฐานของการอ่าน แต่มันอาจจะคลุมเครือเพราะเซ็นเซอร์ จำกัด คำอธิบายการท้าทาย คุณจะได้รับเลย์เอาต์ของห้องและการอ่านระยะทางตามเข็มนาฬิกาสี่อันเพื่อบอกจำนวนเซลล์ระหว่างคุณกับกำแพง อาจมีกำแพงอยู่กลางห้องและขอบของตารางก็เป็นผนังเช่นกัน หุ่นยนต์ไม่สามารถวางบนผนัง วัตถุประสงค์ของคุณคือรายการสถานที่ทั้งหมดภายในห้องที่หุ่นยนต์อาจอยู่ในที่ที่จะให้การอ่านที่กำหนด โปรดทราบว่าหุ่นยนต์ไม่มีความรู้สึกในการวางแนว (นอกเหนือจากการถูกล็อคไปที่มุม 90 องศาบนกริด - นั่นคือหุ่นยนต์จะไม่ถูกวางแนวทแยงมุมหรือมุมเอียงอื่น ๆ ) ดังนั้นการอ่าน [1, 2, 3, ตัวอย่างเช่น 4] เหมือนกับการอ่าน [3, 4, 1, 2] ตัวอย่าง สำหรับตัวอย่างเหล่านี้พิกัดของเซลล์จะได้รับเป็นคู่ 0 ดัชนี (x, y) จากเซลล์ซ้ายบน การอ่านจะได้รับตามลำดับตามเข็มนาฬิกาในรายการวงเล็บเหลี่ยม เลย์เอาต์จะใช้เครื่องหมายปอนด์สำหรับกำแพงและตัวละครอื่น ๆ (โดยทั่วไปคือจุด) เพื่อแสดงเซลล์ว่าง กรณีที่ 1 . . . . . . …
11 code-golf  grid 

11
สร้างสายพิทเบสบอล
เป้าหมาย เขียนโปรแกรมหรือฟังก์ชั่นที่ใช้เป็นจำนวนเต็มบวกnและสุ่มสร้างซีรีส์ทางกฎหมายของสนาม (ต่อจากนี้ไปเรียกว่าสตริงลาด) nของความยาว อินพุต จำนวนเต็มบวกที่ไม่เป็นศูนย์n<= 100 เอาท์พุต nกลับสตริงแบบสุ่มหรือรายการของตัวละครที่เป็นตัวแทนของความเป็นไปได้สตริงสนามที่ถูกต้องของความยาว ตัวละครที่ใช้จะเป็น: B - บอล หากคุณสะสม 4 สิ่งเหล่านี้แป้งจะถูกเดินและตีบอลจนหมด S - สไตรค์ หากคุณสะสม 3 สิ่งเหล่านี้แป้งจะหมดและลูกบอลหมด F - เหม็น จะเพิ่มจำนวนการโจมตี แต่ไม่สามารถทำการโจมตีได้ คือคุณไม่สามารถมี Foul เป็น pitch สุดท้ายในสตริงที่ถูกต้อง การฟาล์วที่ผ่านมาสองครั้ง / การฟาล์วจะไม่เพิ่มจำนวนการตี (การปะทะมี 2 ครั้ง ณ จุดนั้นและครั้งที่ 3 จะพาเขาออกไป) H - Hit ปะทะได้ตีลูกเข้าสู่การเล่นและเสร็จสิ้นการตี (สิ่งนี้ง่ายเล็กน้อย แต่คุณไม่ต้องเป็นห่วง) สายพิทช์ที่ถูกต้องคือสตริงที่จบในการนัดหยุดงานการเดินหรือการตี นั่นคือสตริงพิทช์ไม่ถูกต้องเช่นกัน …

9
มหาพีระมิดแห่งควิน
งานนี้เป็นความท้าทายที่ค่อนข้างง่ายด้วยการบิดคุณต้องเอาท์พุทซอร์สโค้ดของคุณในรูปของปิรามิด รูปร่างของปิรามิดมีการกำหนดไว้ด้านล่าง: 1 234 56789 ABCDEFG HIJKLMNOP QRSTUVWXYZa bcdefghijklmn ......etc...... ข้อ จำกัด หลักของความท้าทายนี้คือควินของคุณต้องมีจำนวนไบต์เพียงพอที่จะไม่ขัดขวางรูปแบบของปิรามิด ตัวอย่างเช่นความยาวของโปรแกรมต่อไปนี้จะใช้ได้: 1-byter: 1st layer of the pyramid (not allowed by definition of a quine). 4-byter: 1st and 2nd layers of the pyramid. 9-byter: 1st, 2nd and 3rd layers of the pyramid. etc... ดังนั้นหากโปรแกรมของคุณคือ: QWERTY มันจะไม่ถูกต้องเพราะมันจะจัดเรียงเช่น: Q WER …

2
เวิร์มของ Golf Paterson
หนอนของ Patersonเป็นหุ่นยนต์เซลลูล่าร์ชนิดหนึ่งที่มีอยู่บนกริดสามเหลี่ยมที่ไม่มีที่สิ้นสุดและทุกขั้นตอนพวกมันจะหมุนไปในทิศทางหนึ่ง คุณสมบัติที่กำหนดของพวกเขาคือพวกเขาไม่สามารถผ่านจุดเดิมได้สองครั้งและเมื่อใดก็ตามที่พวกเขาพบกับสภาพแวดล้อมเดียวกันพวกเขาก็ตัดสินใจเหมือนกัน หนอนจะ "มองเห็น" จากมุมมองของตัวเองเสมอโดยมีหางอยู่ที่ 3 และหัวของมันอยู่ตรงกลางของรูปหกเหลี่ยมนี้: ตัวอย่างเช่นพิจารณาหนอนด้วยกฎ: ถ้า 0, 1, 2, 4 และ 5 เป็นค่าว่างให้ย้ายไปในทิศทางที่ 2 ถ้า 0, 1, 4 และ 5 เป็นค่าว่างและเติม 2 ให้ย้ายไปในทิศทาง 0 หาก 0, 1 และ 5 เป็นค่าว่างและเติม 2 และ 4 ให้ย้ายในทิศทาง 0 ผลลัพธ์นี้ในเส้นทางต่อไปนี้ (จาก Wikipedia): หากเวิร์มพบว่าตัวเองอยู่ในสถานการณ์ที่สภาพแวดล้อมเต็มไปหมด อินพุต รายการตัวเลข หมายเลขที่ n ระบุว่าการตัดสินใจที่เวิร์มควรทำในสถานการณ์ใหม่ที่เกิดขึ้นนั้นต้องเผชิญกับการตัดสินใจที่ใด โปรดทราบว่าหากเต็ม แต่หนึ่งในสภาพแวดล้อมนั้นจะต้องย้ายไปในทิศทางเดียวที่ว่างเปล่า …

7
ประมาณสัดส่วนของจำนวนเต็มกับปัจจัยข้างเคียง
ถ้า 1 ไม่นับเป็นปัจจัยแล้ว 40 มีสองปัจจัยที่อยู่ใกล้เคียง (4 และ 5) 1,092 มีสองปัจจัยที่อยู่ใกล้เคียง (13 และ 14) 350 ไม่มีปัจจัยข้างเคียงสองตัว (จากปัจจัย 2, 5, 7, 10, 14, 25, 35, 50, 70, และ 175, ไม่มีสองติดต่อกัน) สัดส่วนของจำนวนเต็มบวกที่มีคุณสมบัตินี้คือสัดส่วนที่หารด้วย 6 (2 × 3), 12 (3 × 4), 20 (4 × 5), 30, 56, … หากเราคำนวณเพียงสัดส่วนที่หารได้ด้วยnแรกของเหล่านี้เราจะได้ค่าประมาณที่แม่นยำยิ่งขึ้นเมื่อnเพิ่มขึ้น ตัวอย่างเช่นสำหรับn = 1เราจะพบสัดส่วนของจำนวนเต็มหารด้วย 2 × …
11 code-golf  number 

30
ผลรวมจำนวนเต็มในสตริง
อินพุต สตริง. เอาท์พุต ผลรวมของจำนวนเต็มทั้งหมดในบรรทัด ข้อ จำกัด 1≤ความยาวของเส้น≤500 กรณีทดสอบตัวอย่าง อินพุต the 5is 108 seCONd4 a เอาท์พุต 117 คำอธิบาย ผลรวมคือ: 5 + 108 + 4 = 117

3
มันเป็นลำดับเลขคณิตเรขาคณิตหรือไม่?
ลำดับ arithmetico ทางเรขาคณิตเป็นผลิตภัณฑ์ elementwise ของลำดับเลขคณิตและลำดับเรขาคณิต ยกตัวอย่างเช่น1 -4 12 -32เป็นผลิตภัณฑ์ของลำดับเลขคณิตและลำดับเรขาคณิต1 2 3 4 1 -2 4 -8คำที่ n ของลำดับเลขคณิต arithmetico-geometric จำนวนเต็มสามารถแสดงเป็น an= rn⋅ ( ก0+ n d)an=rn⋅(a0+nd)a_n = r^n \cdot (a_0 + nd) สำหรับบางจำนวนจริงdddไม่ใช่ศูนย์จริงRrrและจำนวนเต็ม0 โปรดทราบว่าrและdไม่จำเป็นต้องเป็นจำนวนเต็มa0a0a_0Rrrddd ยกตัวอย่างเช่นลำดับ2 11 36 100 256 624 1472 3392มี0 = 2 , R = 2และd = 3.5a0= …

3
นับอาร์เรย์ที่สร้างชุดพิเศษ
คำถามนี้มีการตั้งค่าคล้ายกับFind a array ที่เหมาะกับชุดของผลรวมแม้ว่าจะค่อนข้างแตกต่างกันในเป้าหมาย พิจารณาอาร์เรย์ของความยาวA nอาร์เรย์มีจำนวนเต็มบวกเท่านั้น A = (1,1,2,2)เช่น ให้เรากำหนดf(A)เป็นชุดของผลรวมของทุกคนที่ไม่ว่างเปล่า subarrays Aต่อเนื่องกันของ ในกรณีf(A) = {1,2,3,4,5,6}นี้ ขั้นตอนในการผลิตf(A) มีดังนี้: subarrays ของAreA จำนวนเงินของตนมี(1), (1), (2), (2), (1,1), (1,2), (2,2), (1,1,2), (1,2,2), (1,1,2,2) ชุดที่คุณได้รับจากรายการนี้จึงเป็น1,1,2,2,2,3,4,4,5,6{1,2,3,4,5,6} เราเรียกอาเรย์ที่A ไม่ซ้ำกันถ้าไม่มีอาเรย์อื่นBที่มีความยาวเท่ากันเช่นนั้นf(A) = f(B)ยกเว้นสำหรับอาเรย์ที่Aกลับด้าน เป็นตัวอย่างf((1,2,3)) = f((3,2,1)) = {1,2,3,5,6}แต่ไม่มีความยาวอื่น ๆ3ที่สร้างชุดของผลรวมเดียวกัน เราจะพิจารณาอาร์เรย์ที่องค์ประกอบที่มีทั้งจำนวนเต็มรับหรือs s+1เช่นถ้าs=1อาร์เรย์เท่านั้นที่จะมีและ12 งาน งานสำหรับที่กำหนดnและsจะนับจำนวนอาร์เรย์ที่ไม่ซ้ำกันของความยาวนั้น คุณสามารถสรุปได้ว่าsอยู่ระหว่างและ19 คุณไม่ควรนับการย้อนกลับของอาเรย์รวมทั้งอาเรย์เอง ตัวอย่าง s = 1n+1คำตอบอยู่เสมอ …

1
บอทเมาใกล้สายตาที่อ่อนไหวบนทุ่นระเบิด
ตามที่ชื่ออาจแนะนำปัญหานี้ได้รับแรงบันดาลใจมาจากบอท Polite Near- Sighted Drunkโดย @NP บอทที่น่าสงสารของเรานั้นถูกวางไว้บนตะแกรงคาร์ทีเซียนที่จุดกำเนิดและหลังจากนั้นทุกนาทีมันจะเคลื่อนที่ 1 ยูนิตในหนึ่งในสี่ทิศทาง (ขึ้น, ลง, ซ้าย, ขวา) หลังจากnนาทีเหมืองที่ซ่อนอยู่ทั้งหมดในกริดจะเปิดใช้งานเพื่อฆ่าบอทที่น่าสงสารที่อาจพบตัวเองอยู่เหนือพวกมัน เหมืองจะอยู่ที่พิกัดจำนวนเต็มทั้งหมดซึ่งเป็นไปตามสมการ | y | = | x | ท้าทาย คุณจะได้รับnจำนวนนาทีก่อนที่เหมืองระเบิดเป็น input และเอาท์พุทคุณจะต้องพบกับความน่าจะเป็นที่บอทเป็นตาย การป้อนข้อมูล : มีจำนวนธรรมชาติที่เป็นตัวแทนของn เอาต์พุต : ให้ความน่าจะเป็นที่บอทนั้นตายแล้วคือp / q, โดยที่ p และ q เป็นจำนวนเต็มจำนวนเต็ม (q ไม่สามารถเป็น 0, แต่ p สามารถ) p. กฎระเบียบ อัลกอริทึมของคุณจะต้องไม่ทำงานในแบบเอ็กซ์โพเนนเชียล มันควรจะทำงานในเวลาพหุนามหรือน้อยกว่า อัลกอริทึมของคุณจะต้องสามารถจัดการอินพุตของn<20 …

5
วางแผนปฏิทิน ASCII
รับรายการกิจกรรมและเวลา / วันที่เริ่มต้นส่งออกปฏิทิน ASCII-art ที่แสดงกิจกรรมในวันที่เหมาะสม กิจกรรมทั้งหมดได้รับการรับประกันว่าจะอยู่ในเดือนเดียวกันไม่มีกิจกรรมสองกิจกรรมในวันเดียวกันและกิจกรรมทั้งหมดจะได้รับการบรรจุภายในกล่องปฏิทิน ปฏิทินมีวันที่ที่มุมบนซ้ายของแต่ละกล่องกล่องมีช่องว่าง 9 ช่องกว้าง 5 ช่องสูงล้อมรอบด้วย-และ|และตัวย่อสองตัวอักษรสำหรับวันในสัปดาห์นั้นอยู่เหนือแถวแรกและสัปดาห์เริ่มต้นด้วยวันอาทิตย์ ตัวอย่างเช่นกำหนดกิจกรรมต่อไปนี้: 10/5/2018 - 9:00am - Sandbox calendar challenge 10/9/2018 - 9:00am - Post challenge to main 10/10/2018 - 10:00am - Profit 10/31/2018 - 7:30pm - Halloween party เอาท์พุทปฏิทินที่สอดคล้องกันนี้: Su Mo Tu We Th Fr Sa ----------------------------------------------------------------------- | |1 |2 …

9
ทุกคนควรมีเพื่อน
อักขระที่แยกได้คืออักขระ (นอกเหนือจากบรรทัดใหม่) ที่ไม่มีอักขระที่อยู่ติดกันประเภทเดียวกัน อักขระที่อยู่ติดกันสามารถอยู่ทางซ้ายขวาด้านบนหรือด้านล่าง แต่ไม่ใช่ diagonals ตัวอย่างเช่นในข้อความต่อไปนี้Hถูกแยก: Ybb YH% %%%% อักขระอื่น ๆ ทั้งหมดไม่ได้แยกออกจากกันเพราะอักขระแต่ละตัวมีอักขระอื่นอย่างน้อยหนึ่งตัวที่อยู่ติดกัน งานของคุณคือการเขียนโปรแกรมที่รับสตริงเป็นอินพุตและกำหนดจำนวนอักขระที่แยกได้ เกณฑ์การให้คะแนน คำตอบของคุณจะได้คะแนนสองตัวชี้วัด ตัวแรกคือจำนวนอักขระที่แยกได้ในโปรแกรมของคุณ คุณควรตั้งเป้าหมายที่จะย่อให้เล็กสุดนี้ ที่สองจะเป็นจำนวนไบต์ในโปรแกรมของคุณ คุณควรย่อให้เล็กสุดเช่นกัน ขนาดโปรแกรมจะทำหน้าที่เป็นตัวแบ่งไทร์สำหรับเกณฑ์แรก กฎเพิ่มเติม คุณควรสนับสนุนอินพุตในช่วง ascii ที่พิมพ์ได้รวมถึงอักขระใด ๆ ที่คุณใช้ในโปรแกรมของคุณ คุณอาจพิจารณาว่าตัวแบ่งบรรทัดเป็นอักขระขึ้นบรรทัดใหม่หรือขึ้นบรรทัดใหม่ตามด้วยตัวดึงข้อมูลบรรทัด คุณสามารถป้อนข้อมูลในรูปแบบที่เหมาะสม ซึ่งรวมถึงรายการของเส้น กรณีทดสอบ Ybb YH% %%%% 111 Aaaab uuu yyybbb 222 A 111 qqWWaaww 000

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