คำถามติดแท็ก code-golf

Code-golf เป็นการแข่งขันเพื่อแก้ไขปัญหาเฉพาะในส่วนที่น้อยที่สุดของซอร์สโค้ด

2
ค้นหาปัจจัยย่อย
ลองจินตนาการว่าเรามีจำนวนเต็มบวกจำนวน จำกัด ชุดนี้สามารถแสดงเป็นเส้นของจุดที่แต่ละจำนวนเต็มปัจจุบันในชุดที่เต็มไปเช่น Scantron หรือหมัดบัตร ตัวอย่างเช่นชุด{1,3,4,6}สามารถแสดงเป็น: *.**.* *แสดงถึงสมาชิกของชุดของเราและ.แสดงถึงจำนวนเต็มที่ไม่ได้เป็นสมาชิกของเขาตั้ง ชุดเหล่านี้มี "ปัจจัย" Loosely x เป็นปัจจัยของ y หาก y สามารถสร้างจากสำเนาของ x ได้ คำจำกัดความของปัจจัยของเรามีความเข้มงวดมากขึ้น x เป็นปัจจัยของ y ถ้าหาก y เป็นสหภาพของจำนวนชุดที่แยกจากกันทั้งหมดนี้เป็น x ที่มีออฟเซ็ต เราจะเรียกปัจจัยของเพราะทำค่อนข้างชัดเจนขึ้นจากสองสำเนาของใส่จนจบ*.**.**.**.* *.**.* ------ *.*... ...*.* ปัจจัยไม่จำเป็นต้องจบสิ้นเราก็จะบอกว่า*.*เป็นปัจจัย*.*.*.* *.*.*.* ------- *.*.... ....*.* ปัจจัยยังสามารถทับซ้อนกัน วิธีการ*.*นี้ยังเป็นปัจจัย**** **** ---- *.*. .*.* อย่างไรก็ตามตัวเลขไม่สามารถครอบคลุมได้มากกว่าหนึ่งครั้ง ตัวอย่าง*.*คือไม่ได้*.*.*ปัจจัยของ นี่คือตัวอย่างที่ซับซ้อนมากขึ้น: *..*.**..***.*.* นี่*..*.*เป็นปัจจัย *..*.*คุณจะเห็นว่าด้านล่างที่ผมได้เรียงรายขึ้นสามกรณีของ …

8
สำรวจ xorspace
xorspaceชุดของจำนวนเต็มคือชุดของจำนวนเต็มทั้งหมดที่สามารถรับได้โดยการรวมจำนวนเต็มเริ่มต้นกับผู้ประกอบการ xor บิตปกติ ( ^) ตัวอย่างเช่น xorspace ของ(8, 4)คือ(0, 4, 8, 12): 0 คือ 4 ^ 4, 12 คือ 4 ^ 8 และไม่สามารถเข้าถึงหมายเลขอื่นได้ โปรดทราบว่าตัวเลขเริ่มต้นรวมอยู่เสมอโดยคำจำกัดความนี้ (ตัวอย่างเช่น 4 คือ 4 ^ 4 ^ 4) เป้าหมายของคุณคือการเขียนโปรแกรมที่สั้นที่สุดที่รับรายการจำนวนเต็มที่ไม่เป็นลบและป้อนข้อมูลจำนวนองค์ประกอบใน xorspace ช่องโหว่มาตรฐานเป็นสิ่งต้องห้าม input และ output สามารถในการใด ๆ ของรูปแบบปกติ อินพุตรับประกันว่าถูกต้องไม่ว่างเปล่าและไม่มีการซ้ำซ้อน รหัสของคุณควรจะสามารถที่จะดำเนินการกรณีทดสอบทั้งหมดในน้อยกว่าวัน กรณีทดสอบ Input: 0 Output: 1 Input: 6 …

2
Quine / Error Quine Polyglot
งานของคุณง่าย: เขียนโปรแกรมที่สามารถทำงานได้สองภาษา ควรเป็นควินปกติ (พิมพ์รหัสต้นฉบับของตนเอง) ในภาษา 1 และควรเป็นข้อผิดพลาดควิน (สร้างข้อความแสดงข้อผิดพลาดเหมือนกับรหัสต้นฉบับของตนเอง) ในภาษา 2 นี่คือรหัสกอล์ฟดังนั้นการส่งที่ถูกต้องที่สั้นที่สุด (เป็นไบต์) ชนะ กฎ: ภาษาอาจคล้ายกันโดยพลการ Supersets / รุ่นที่คล้ายกัน / ภาษาที่คล้ายกันจะไม่ได้รับอนุญาต กฎข้อผิดพลาด quine เหมือนกับกฎข้อผิดพลาดในการทำข้อผิดพลาด! .

11
อัลกอริธึมการนับถอยหลัง
เด็กที่เรียนรู้วิธีการนับมักรู้จำนวนวิ่ง แต่ดูเหมือนจะไม่สามารถทำให้การวิ่งเหล่านั้นเข้าด้วยกันอย่างเหมาะสม ตัวอย่างเช่นพวกเขาอาจพูดว่า: 1,2,3,4,7,8,9,10 บางครั้งเด็ก ๆ จะรู้ว่าพวกเขาข้ามตัวเลขบางส่วนแล้วย้อนกลับไปที่: 1,2,3,4,7,8,5,6,7,8,9,10 นี่เป็นรูปแบบที่ชัดเจนอย่างชัดเจน เราจำเป็นต้องระบุพวกเขา ในการระบุรายการเหล่านี้: เราระบุขั้นต่ำMและสูงสุดNของรายการ เราก้าวผ่านรายการ หากหมายเลขปัจจุบันมากกว่าหรือเท่ากับสมาชิกใด ๆ ของรายการทางด้านขวาเราจะลบหมายเลขปัจจุบัน Iff รายการที่เหลือประกอบด้วยตัวเลขทั้งหมดตั้งแต่MถึงถึงNจากนั้นเราจะคืนค่าความจริง คุณสามารถสันนิษฐานว่ารายการอินพุตของคุณจะมีองค์ประกอบอย่างน้อย 1 องค์ประกอบ คุณสามารถสันนิษฐานได้ว่าจำนวนเต็มทั้งหมดจะไม่เป็นลบ กรณีทดสอบ: Truthy: 0 10 0 0 0 1 0 1 0 1 2 3 4 5 6 7 8 9 10 0 1 2 3 0 1 2 …

9
ค้นหาอัตราเดิมพันคี่
ให้คอลเลกชันที่ไม่มีการเรียงลำดับของจำนวนเต็มบวกโดยวิธีการอินพุตที่สมเหตุสมผลส่งคืนคอลเล็กชันย่อยทั้งหมดที่มีองค์ประกอบคี่จำนวนคี่ (เช่นมีผลรวมคี่) นี่คือโค้ดกอล์ฟดังนั้นคุณควรตั้งเป้าที่จะลดจำนวนไบต์ของโปรแกรมของคุณ เนื่องจากบางภาษามีการสั่งซื้อคอลเลกชันเท่านั้น (รายการ, อาร์เรย์, เวกเตอร์, ฯลฯ ) หรือไม่มีคอลเลกชันที่ไม่ได้เรียงลำดับซึ่งอนุญาตการทำซ้ำคุณสามารถใช้คอลเลกชันที่สั่งซื้อได้ (ไม่ว่าคุณจะเลือกภาษาใด) ด้วยคำสั่งซื้อที่แตกต่างกัน (เช่น[2,3]และ[3,2]) คุณสามารถส่งออกตามลำดับที่คุณเห็นว่าเหมาะสม กรณีทดสอบ [2,3,7,2] -> [[3],[7],[2,3],[2,7],[2,2,3],[2,2,7]] [2,4,6,8] -> [] [4,9] -> [[9],[4,9]]

15
ตัวเลขการออกเสียง
แนวคิด การจดจำตัวเลขอาจเป็นเรื่องยาก การจดจำคำศัพท์อาจทำได้ง่ายกว่า เพื่อที่จะจดจำตัวเลขจำนวนมากฉันได้สร้างวิธีการออกเสียงพวกเขาในลักษณะคล้าย leetspeak กฎระเบียบ แต่ละหลักจะถูกแทนที่ด้วยตัวอักษรที่เกี่ยวข้องก่อน: 0 => O 1 => I 2 => R 3 => E 4 => A 5 => S 6 => G 7 => T 8 => B 9 => P หลังจากการแทนที่จะมีการเพิ่มสองสิ่งเพื่อการออกเสียงที่ดีขึ้น: ระหว่างตัวอักษรสองตัว a Uถูกเพิ่ม ระหว่างสระสองสระNจะถูกเพิ่ม ตัวอย่าง / กรณีทดสอบ 512431 => SIRANENI 834677081 => …
14 code-golf  number 

30
สุ่มสเกลาร์ของอาร์เรย์
คุณต้องกรอกข้อมูลในอาร์เรย์ด้วยตัวเลขทุกตัวจาก0-nรวม ไม่ควรใช้หมายเลขซ้ำ อย่างไรก็ตามพวกเขาจะต้องอยู่ในลำดับสุ่ม กฎระเบียบ ทุกมาตรฐานรหัสกอล์ฟกฎและช่องโหว่มาตรฐานเป็นสิ่งต้องห้าม อาร์เรย์ต้องถูกสร้างขึ้นแบบสุ่มหลอก ทุกการเปลี่ยนแปลงที่เป็นไปได้ควรมีความน่าจะเป็นที่เท่ากัน อินพุต n ในทางใดก็ตามที่ได้รับอนุญาตในโพสต์ I / O บนเมตา เอาท์พุต อาร์เรย์ของตัวเลขมีสัญญาณรบกวนจาก0-nรวม
14 code-golf  random 

2
รูปหลายเหลี่ยมนั้นคือใคร
วิธีที่สะดวกและมีประโยชน์เพื่อเป็นตัวแทนของพื้นผิวทอพอโลยีอยู่กับรูปหลายเหลี่ยมพื้นฐาน แต่ละด้านของรูปหลายเหลี่ยมจับคู่กับอีกด้านหนึ่งและสามารถเป็นแบบขนานหรือแบบขนาน เช่นนี่คือรูปหลายเหลี่ยมพื้นฐานของพรู : เพื่อหาสาเหตุว่าทำไมมันถึงเป็นพรูเราสามารถจินตนาการว่ารูปหลายเหลี่ยมของเราเป็นแผ่นกระดาษ ในการสร้างพื้นผิวที่เหมาะสมเราต้องการดัดกระดาษของเราเพื่อให้ขอบที่สอดคล้องกันเรียงกันกับลูกศรของมันในลักษณะเดียวกัน สำหรับตัวอย่างของพรูเราสามารถเริ่มต้นด้วยการกลิ้งกระดาษเป็นทรงกระบอกเพื่อให้ขอบสีฟ้าทั้งสอง (ป้ายชื่อ b) เชื่อมต่อกัน ตอนนี้เราเอาหลอดของเราแล้วงอเพื่อให้ทั้งสองขอบสีแดง (ป้าย a) เชื่อมต่อซึ่งกันและกัน เราควรมีรูปโดนัทหรือที่เรียกว่าพรู นี่อาจเป็นเรื่องหลอกลวง หากคุณพยายามทำเช่นเดียวกันกับรูปหลายเหลี่ยมต่อไปนี้โดยที่หนึ่งในขอบนั้นไปในทิศทางตรงกันข้าม: คุณอาจพบว่าตัวเองมีปัญหา นี่เป็นเพราะรูปหลายเหลี่ยมนี้แสดงถึงขวด Kleinซึ่งไม่สามารถฝังในสามมิติ นี่คือแผนภาพจากวิกิพีเดียที่แสดงว่าคุณสามารถพับรูปหลายเหลี่ยมนี้เป็นขวด Klein ได้อย่างไร: ในขณะที่คุณอาจเดาได้ว่างานที่นี่คือการใช้รูปหลายเหลี่ยมพื้นฐานและกำหนดพื้นผิวมัน สำหรับรูปหลายเหลี่ยมสี่เหลี่ยม (พื้นผิวเดียวที่คุณจะต้องใช้ในการจัดการ) มีพื้นผิวที่แตกต่างกัน 4 แบบ พวกเขาเป็น ฐานรองดอก ขวดไคลน์ รูปทรงกลม ระนาบ Projective ตอนนี้นี่ไม่ใช่การประมวลผลภาพดังนั้นฉันไม่ได้คาดหวังให้คุณถ่ายภาพเป็นอินพุทแทนเราจะใช้สัญกรณ์ที่สะดวกในการแสดงรูปหลายเหลี่ยมพื้นฐาน คุณอาจสังเกตเห็นในสองตัวอย่างข้างต้นว่าฉันตั้งชื่อขอบที่สอดคล้องกันด้วยตัวอักษรเดียวกัน (ทั้ง a หรือ b) และฉันให้ขอบบิดเป็นเครื่องหมายเพิ่มเติมเพื่อแสดงการบิดของมัน หากเราเริ่มที่ขอบด้านบนและเขียนฉลากสำหรับแต่ละขอบตามเข็มนาฬิกาเราจะได้สัญกรณ์ที่แสดงถึงรูปหลายเหลี่ยมพื้นฐานแต่ละอัน ตัวอย่างเช่น Torus ให้จะกลายเป็นAbabและขวดไคลน์จะกลายเป็นAbab สำหรับความท้าทายของเราเราจะทำให้มันง่ายยิ่งขึ้นแทนที่จะทำเครื่องหมายขอบที่บิดเป็นลบเราจะทำให้ตัวอักษรเหล่านั้นเป็นตัวพิมพ์ใหญ่แทน งาน รับสายกำหนดว่ามันหมายถึงรูปหลายเหลี่ยมพื้นฐานและการส่งออกค่าที่สอดคล้องกับพื้นผิวที่เหมาะสมของมันคือ คุณไม่จำเป็นต้องตั้งชื่อพื้นผิวให้ถูกต้องคุณเพียงแค่ต้องการค่าเอาต์พุตที่แตกต่างกัน …

8
ตัวเลขที่เข้าถึงได้
คำนิยาม ฟังก์ชั่นออยเลอร์พี ( ฟังก์ชั่น AKA totient ): ฟังก์ชั่นที่ใช้ในจำนวนบวกและส่งกลับจำนวนของจำนวนบวกน้อยกว่าจำนวนที่กำหนดซึ่งเป็นแบบร่วมเฉพาะกับจำนวนที่กำหนด φ(n)มันจะแสดงเป็น จำนวนเข้าถึงได้ถ้ามีอยู่ในเชิงบวกจำนวนเต็มxเช่นว่าφ(x) == nนั้นnคือสามารถเข้าถึงได้ งาน เขียนฟังก์ชั่น / โปรแกรมเพื่อตรวจสอบว่าจำนวนเต็มบวกที่กำหนดนั้นสามารถเข้าถึงได้ อินพุต ตัวเลขบวกในรูปแบบที่สมเหตุสมผล หนึ่งสามารถสันนิษฐานได้ว่าจำนวนอยู่ในความสามารถของภาษา ยอมรับอินพุตแบบยูนารี เอาท์พุต ค่าที่สอดคล้องกันสองค่าหนึ่งค่าสำหรับหมายเลขที่เข้าถึงได้และอีกค่าสำหรับหมายเลขที่ไม่สามารถเข้าถึงได้ ค่าสองค่าสามารถเป็นอะไรก็ได้ตราบใดที่มีความสอดคล้องกัน Testcases ตะโกนตัวเลขที่สามารถเข้าถึงได้100คือ: 1, 2, 4, 6, 8, 10, 12, 16, 18, 20, 22, 24, 28, 30, 32, 36, 40, 42, 44, 46, 48, 52, 54, 56, 58, …

19
รวมตัวหาร Fibonaccified ของฉัน!
ลำดับ Fibonacci ที่มีชื่อเสียงคือF(0) = 0; F(1) = 1; F(N+1) = F(N) + F(N-1)(สำหรับความท้าทายนี้เราเริ่มต้นด้วย 0) ความท้าทายของคุณ: ให้nการส่งออกรวมของทั้งหมดd TH ตัวเลข Fibonacci สำหรับหารทุกวันของn TH จำนวนฟีโบนักชี หากคุณต้องการสัญลักษณ์ที่เป็นทางการมากกว่านี้ อินพุต : จำนวนเต็มบวกn ผลลัพธ์ : ผลรวม n=4ตัวอย่างเช่นพิจารณา F(4) = 3หาร 3 คือ 1 และ 3 F(1) + F(3) = 1 + 2 = 3เพื่อให้ผลผลิตที่ควรจะเป็น สำหรับn=6, F(6) = …

15
การแยกตัวประกอบร่วมที่สำคัญสูงสุดร่วมกันสูงสุด
คำนิยาม ตัวเลขสองมีร่วมที่สำคัญ1ถ้าหารกันของพวกเขาเท่านั้นในเชิงบวกคือ รายการตัวเลขเป็นค่าร่วมกันระหว่างนายกถ้าทุกคู่ของตัวเลขในรายการนั้นเป็นคู่ร่วมกัน ตัวประกอบของจำนวนนี้เป็นรายการของตัวเลขที่มีสินค้าเป็นnn งาน ได้รับเป็นจำนวนบวกnเอาท์พุทตัวประกอบร่วมกันร่วมที่สำคัญของที่มีความยาวสูงสุดที่ไม่รวมn1 ตัวอย่าง สำหรับn=60คำตอบคือ[3,4,5]เพราะ3*4*5=60และไม่มีการแยกตัวประกอบร่วมที่สำคัญอื่น ๆ โดยไม่มี1ความยาวมากกว่าหรือเท่ากับ3ความยาวของการแยกตัวประกอบ กฎและเสรีภาพ คุณสามารถใช้รูปแบบอินพุต / เอาท์พุตที่สมเหตุสมผล รายการในรายการเอาท์พุทไม่จำเป็นต้องเรียงลำดับ Testcases n output 1 [] 2 [2] 3 [3] 4 [4] 5 [5] 6 [2, 3] 7 [7] 8 [8] 9 [9] 10 [2, 5] 11 [11] 12 [3, 4] 13 [13] 14 [2, 7] …

23
ผลรวมของ 100 ทอยลูกเต๋าสองด้านทั้งหก
สมมติว่าคุณมีลูกเต๋าหกด้านสองตัว ม้วนคู่ 100 ครั้งคำนวณผลรวมของแต่ละคู่ พิมพ์จำนวนครั้งที่เกิดผลรวมแต่ละครั้ง หากผลรวมไม่เคยถูกรีดคุณต้องรวมศูนย์หรือวิธีใดวิธีหนึ่งในการระบุว่ายอดรวมนั้นไม่เคยถูกย้อน ตัวอย่างผลลัพธ์: [3, 3, 9, 11, 15, 15, 11, 15, 7, 8, 3] จำนวนครั้งที่ผลรวมสะสมจะถูกแสดงในดัชนีผลรวม - 2 ในตัวอย่างนี้ผลรวมของสองถูกหมุน 3 ครั้ง ([2-2]), ผลรวมของสาม 3 ครั้ง ([3-2]), ผลรวมของสี่ 9 ครั้ง ([4-2]) และอื่น ๆ บน. มันไม่สำคัญว่าแต่ละลูกเต๋ากลิ้งไปถึงยอดรวม (5 และ 2 จะนับเป็นผลรวมเดียวกันกับ 6 และ 1) เอาต์พุต "Ugly" นั้นใช้ได้ (โหลดศูนย์ต่อท้ายเอาต์พุตพิเศษวิธีการแสดงข้อมูลแปลก ๆ ) …

25
การเพิ่มเศษส่วน
เขียนโปรแกรมหรือฟังก์ชั่นที่ใช้รายการที่ไม่ว่างสองรายการที่มีความยาวเท่ากันกับอินพุตและทำสิ่งต่อไปนี้: ใช้องค์ประกอบของรายการแรกเพื่อรับตัวเศษ ใช้องค์ประกอบของรายการที่สองเพื่อรับส่วน แสดงเศษส่วนผลลัพธ์หลังจากการทำให้เข้าใจง่าย(2/4=>1/2)คั่นด้วย "+" s แสดง "=" และผลลัพธ์ของการบวกหลังเศษส่วนสุดท้าย ตัวอย่าง: อินพุต [1, 2, 3, 3, 6] [2, 9, 3, 2, 4] เอาท์พุต 1/2+2/9+1+3/2+3/2=85/18 เกี่ยวกับกฎ องค์ประกอบของรายการจะเป็นจำนวนเต็มบวก องค์ประกอบสามารถคั่นด้วยช่องว่างเช่น: 1/2 + 2/9 + 1 + 3/2 + 3/2 = 85/18ก็โอเค ขึ้นบรรทัดใหม่ที่ได้รับอนุญาต รายการสามารถนำไปใช้ในรูปแบบอื่นนอกเหนือจากด้านบนเช่น: (1 2 3 3 6)หรือ{1;2;3;3;6}อื่น ๆ 1สามารถแสดงเป็น1/1, แทนที่จะพิมพ์คุณสามารถส่งคืนสตริงที่เหมาะสมได้ คุณไม่จำเป็นต้องจัดการกับการป้อนข้อมูลผิด สั้นที่สุดชนะรหัส

9
ความท้าทายเค้าโครงแป้นพิมพ์
รูปแบบแป้นพิมพ์ที่คนทั่วไปใช้เป็นรูปแบบQWERTYที่แสดงด้านล่าง แต่ยังมีรูปแบบแป้นพิมพ์อื่น ๆ : DVORAK Colemak WORKMAN งานของคุณ รหัสของคุณจะมีสองอินพุต: ชื่อของรูปแบบแป้นพิมพ์และสตริงที่จะถอดเสียง เป้าหมายของคุณคือการแปลงอินพุต QWERTY ของคุณราวกับว่าคุณกำลังพิมพ์ด้วยรูปแบบแป้นพิมพ์ที่กำหนดเป็นพารามิเตอร์แรก กฎระเบียบ รูปแบบอินพุตฟรีคุณสามารถใช้สตริงอาร์เรย์ ฯลฯ นอกจากนี้คุณสามารถใช้ค่าที่แตกต่างกันสามค่าเพื่อแสดงเลย์เอาต์เพื่อลดจำนวนไบต์ของคุณ แต่ค่าแต่ละค่าจะต้องมีค่าเป็น 10 ไบต์หรือน้อยกว่า คุณต้องใช้เพื่อจัดการปุ่มที่มีพื้นหลังสีขาวเท่านั้น คุณต้องย้ายอักขระ ASCII ที่พิมพ์ได้จากตัวอักษร QWERTY ไปเป็นตัวอักษรตัวใดตัวหนึ่ง: QWERTY: !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ DVORAK: !_#$%&-()*}w[vz0123456789SsW]VZ@AXJE>UIDCHTNMBRL"POYGK<QF:/\=^{`axje.uidchtnmbrl'poygk,qf;?|+~ COLEMAK: !"#$%&'()*+,-./0123456789Oo<=>?@ABCSFTDHUNEIMKY:QPRGLVWXJZ[\]^_`abcsftdhuneimky;qprglvwxjz{|}~ WORKMAN: !"#$%&'()*+,-./0123456789Ii<=>?@AVMHRTGYUNEOLKP:QWSBFCDXJZ[\]^_`avmhrtgyuneolkp;qwsbfcdxjz{|}~ (หมายเหตุ: สิ่งนี้ถูกคัดลอกด้วยมือโดย @ETHproductions ดังนั้นหากคุณเห็นข้อผิดพลาดใด ๆ โปรดชี้พวกเขาออก!) ตัวอย่าง DVORAK zZxX เป็นอินพุตจะให้เป็นเอาท์พุท ;:qQ นี่คือcode-golfดังนั้นคำตอบที่สั้นที่สุดในจำนวนไบต์ชนะ!

4
ค้นหาจำนวนกลุ่มย่อยของกลุ่ม จำกัด
คำนิยาม คุณสามารถข้ามส่วนนี้ถ้าคุณรู้อยู่แล้วว่าคำจำกัดความของกลุ่ม , กลุ่มแน่นอนและกลุ่มย่อย กลุ่ม พีชคณิตนามธรรมในกลุ่มคือ tuple (G, ∗)โดยที่Gเป็นเซตและ∗เป็นฟังก์ชั่นG × G → Gดังต่อไปนี้: การปิด: สำหรับทั้งหมดx, yในG , x ∗ yก็เป็นG (โดยนัยจากข้อเท็จจริงที่ว่า∗เป็นฟังก์ชั่นG × G → G ) associativity: สำหรับทุกx, y, zในG , (x * y) * Z = x * (y * z) บัตรประจำตัว: มีอยู่องค์ประกอบอีในGเช่นว่าทุกxในG , x * E = x …

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