ลูกเต๋าที่สูงที่สุด


19

ท้าทาย:

ที่นี่เรามีลำดับ 100 รายการแรก:

6,5,4,3,2,1,66,65,64,63,62,61,56,55,54,53,52,51,46,45,44,43,42,41,36,35,34,33,32,31,26,25,24,23,22,21,16,15,14,13,12,11,666,665,664,663,662,661,656,655,654,653,652,651,646,645,644,643,642,641,636,635,634,633,632,631,626,625,624,623,622,621,616,615,614,613,612,611,566,565,564,563,562,561,556,555,554,553,552,551,546,545,544,543,542,541,536,535,534,533,...

ลำดับนี้เกิดขึ้นได้อย่างไร? อันดับแรกเรามีตัวเลขอยู่ในช่วง[6, 1](ค่าที่เป็นไปได้ทั้งหมดของแม่พิมพ์เดียวจากมากไปน้อยที่สุด) จากนั้นเราจะมีตัวเลข[66..61, 56..51, 46..41, 36..31, 26..21, 16..11](ค่าที่เป็นไปได้ทั้งหมดของสองลูกเต๋าจากมากไปน้อย) อื่น ๆ
สิ่งนี้เกี่ยวข้องกับลำดับ OEIS A057436: มีตัวเลข 1 ถึง 6 เท่านั้นแต่มีตัวเลขทั้งหมดที่มีตัวเลขเท่ากับจำนวนที่เรียงลำดับย้อนหลังในลำดับ

ความท้าทายคือการเลือกหนึ่งในสามตัวเลือกสำหรับฟังก์ชั่น / โปรแกรมของคุณตามลำดับข้างต้น:

  1. รับอินพุตและส่งออกค่า 'ของลำดับนี้ซึ่งสามารถเป็นดัชนี 0 หรือดัชนี 1nn
  2. รับอินพุตและส่งออกค่าหรือของลำดับนี้nnn+1
  3. เอาท์พุทค่าจากลำดับอย่างไม่มีกำหนด

แน่นอนว่าสามารถใช้รูปแบบผลลัพธ์ที่เหมาะสมได้ อาจเป็นสตริง / จำนวนเต็ม / ทศนิยม / ฯลฯ อาจเป็นรายการ (อนันต์) / อาร์เรย์ / สตรีม / ฯลฯ สามารถส่งออกด้วยช่องว่าง / จุลภาค / ขึ้นบรรทัดใหม่ / ตัวคั่นอื่น ๆ เพื่อ STDOUT; ฯลฯ ฯลฯโปรดระบุสิ่งที่ I / O และตัวเลือกที่คุณใช้ในคำตอบของคุณ!

กฎทั่วไป:

  • นี่คือดังนั้นคำตอบที่สั้นที่สุดในจำนวนไบต์ชนะ
    อย่าปล่อยให้ภาษาที่ใช้รหัสกอล์ฟกีดกันคุณจากการโพสต์คำตอบด้วยภาษาที่ไม่ codegolfing พยายามหาคำตอบสั้น ๆ ที่เป็นไปได้สำหรับภาษาโปรแกรม 'ใด ๆ '
  • กฎมาตรฐานใช้สำหรับคำตอบของคุณด้วยกฎ I / O เริ่มต้นดังนั้นคุณจึงได้รับอนุญาตให้ใช้ STDIN / STDOUT ฟังก์ชั่น / วิธีพร้อมพารามิเตอร์ที่เหมาะสมและประเภทผลตอบแทนโปรแกรมเต็มรูปแบบ การโทรของคุณ
  • ช่องโหว่เริ่มต้นเป็นสิ่งต้องห้าม
  • หากเป็นไปได้โปรดเพิ่มลิงค์พร้อมทดสอบรหัสของคุณ (เช่นTIO )
  • นอกจากนี้ขอแนะนำให้เพิ่มคำอธิบายสำหรับคำตอบของคุณ

ต่อไปนี้เป็นกรณีทดสอบขนาดใหญ่ถ้าคุณเลือกตัวเลือก 1

n         0-indexed output    1-indexed output

500       5624                5625
750       4526                4531
1000      3432                3433
9329      11111               11112
9330      666666              11111
9331      666665              666666
10000     663632              663633
100000    6131232             6131233

1
สำหรับการแก้ไขที่แนะนำแท็กความซับซ้อนของ kolmogorov ไม่ได้ใช้กับลำดับเฉพาะกับเอาต์พุตคงที่ จำกัด แน่นอนคงที่เท่านั้น ลำดับจะดำเนินต่อไปตลอดกาล
mbomb007

นอกเหนือจากสิ่งที่ @ mbomb007 พูดแล้วฉันยังอนุญาตให้แสดงผลค่า n'th หรือค่า n / n + 1 แรกตามอินพุตขณะที่ความท้าทายของ KC จะไม่มีอินพุต
Kevin Cruijssen

คำตอบ:



12

Perl 6 , 24 23 ไบต์

-1 ไบต์ขอบคุณ nwellnhof

{.put;.[]X~(6...1)}...*

ลองออนไลน์!

ส่งออกลำดับแยกออกจากกันโดยช่องว่าง / การขึ้นบรรทัดใหม่ หรือสำหรับอีกสองสามไบต์เราสามารถมีรายการอนันต์ที่ขี้เกียจเราสามารถจัดทำดัชนีแทน

Perl 6 , 27 ไบต์

{flat {@=.[]X~(6...1)}...*}

ลองออนไลน์!

คำอธิบาย:

{                         }    # Anonymous code block
 flat                          # Return the flattened
                      ...*       # Infinite sequence
      {              }             # Defined as
         .[]                       # The previous element arrayified
            X~                     # Each concatenated with
              (6...1)              # All of 6 to 1
       @=                          # Arrayified


6

R , 43 ไบต์

p='';repeat cat(p<-sapply(p,paste0,6:1),'')

ลองออนไลน์!

พิมพ์ลำดับไปเรื่อย ๆ

  • -9 ขอบคุณ @Kirill L.

1
@ tk3: หากไม่มีพารามิเตอร์ตัวที่สองมันจะต่อท้ายค่าสุดท้ายของลำดับย่อยขององค์ประกอบ n-ดิจิตด้วยค่าแรกของลำดับย่อยของอิลิเมนต์ n + 1 หลัก เช่น6 5 4 3 2 166 65 64...
digEmAll

6

Bash, 31 ไบต์

f()(x+={6..1};eval echo $x;f);f

TIO

อัปเดตจากความคิดเห็นค่า n'th ที่มีการจัดทำดัชนี 1, + เครื่องมือ GNU + perl, 64 ไบต์, 7 ไบต์ที่บันทึกไว้ต้องขอบคุณ @manatwork

dc<<<6o$1p|perl -pe 's/(.)0/($1-1).6/e?redo:s/0//'|tr 1-6 654321

64 ไบต์


ไม่ได้ช่วยมาก แต่ในการแก้ปัญหาที่ 2 จะสั้นกว่าที่จะหลบหนีอัฒภาคกว่าเท่าตัว quoting bc<<<obase=6\;$1การแสดงออกทั้งหมด: แต่ถ้าคุณเปลี่ยนไปdcไม่มีอะไรจะหนี: dc<<<6o$1p.
จัดการ

ขอบคุณจริง ๆ มันจะช่วยประหยัด 7bytes แต่เนื่องจากเลข bijective ก็ยังไม่ได้ทำงาน Perl ผสมทุบตี (66bytes)dc<<<6o$1p|perl -pe '1while s/(.)0/($1-1).6/e;s/0//'|tr 1-6 654321
Nahuel Fouilleul

5

MATL 11 ไบต์

`6:P!V@Z^DT

ส่งออกค่าอย่างไม่มีกำหนด

ลองออนไลน์!

คำอธิบาย

`      % Do...while
  6:   %   Push [1 2 3 4 5 6]
  P    %   Flip: gives [6 5 4 3 2 1]
  !    %   Transpose: turns the row vector into a column vector
  V    %   Convert the number in each row to the corresponding char
  @    %   Push current iteration index, starting from 1
  Z^   %   Cartesian power. Gives a matrix where each row is a Cartesian tuple
  D    %   Display immediately
  T    %   Push true. This is used as loop condition, to give an infinite loop
       % End (implicit)

5

Haskell, 38 34 ไบต์

รายการตัวเลขที่ไม่มีที่สิ้นสุด:

d=[6,5..1]
l=d++[10*m+n|m<-l,n<-d]

ลองออนไลน์!

โซลูชันสองตัวก่อนหน้านี้ที่ให้รายการสตริงไม่สิ้นสุดแต่ละตัวใช้ 38 ไบต์:

[1..]>>=sequence.(`replicate`"654321")

ลองออนไลน์!

do n<-[1..];mapM id$[1..n]>>["654321"]

ลองออนไลน์!


A 36; เวอร์ชันไบต์ขึ้นอยู่กับreplicateหนึ่งของคุณ
dfeuer


5

Haskell , 28 ไบต์

l=(+).(10*)<$>0:l<*>[6,5..1]

ลองออนไลน์!

สร้างรายการตัวเลขที่lไม่ จำกัด การใช้<$>และ<*>ตัดไบต์:

29 ไบต์

l=[10*n+d|n<-0:l,d<-[6,5..1]]

ลองออนไลน์!

วิธีการจะคล้ายกับ Haskell Output All String คำตอบของสตริงอินพุตคงที่ "654321" และข้ามเอาต์พุตสตริงที่ว่างเปล่าโดยการเปลี่ยนตำแหน่งที่เป็นส่วนต่อท้าย

30 ไบต์

l=[n++[d]|n<-"":l,d<-"654321"]

ลองออนไลน์!


เยี่ยมมาก! ฉันเห็นว่ามันสั้นกว่าที่จะเริ่มต้นจาก0(หรือ"") แต่ไม่พบวิธีที่ถูกที่จะไม่มีผล ...
Christian Sievers

4

05AB1E , 10 ไบต์

ส่งออกลำดับโดยไม่ จำกัด

¸[6LRâJD»,

ลองออนไลน์!

คำอธิบาย

¸           # initialize the stack with a list containing the empty string
 [          # loop
  6L        # push [1 ... 6]
    R       # reverse
     â      # cartesian product
      J     # join each inner list
       D    # duplicate (saving a copy for next iteration)
        »,  # join on newline and print

1
ไม่ทราบว่า¸ตอนเริ่มสร้างรายการที่มีสตริงว่าง และ 2 ไบต์สั้นกว่าโซลูชันที่ฉันใช้เพื่อสร้างกรณีทดสอบดังนั้นแน่นอน +1 จากฉัน :)
Kevin Cruijssen


3

Java (JDK) 48 ไบต์

String f(int n){return n-->0?f(n/6)+(6-n%6):"";}

ลองออนไลน์!

ผลตอบแทนนี้ 1 การจัดทำดัชนี n THองค์ประกอบ

การเรียกซ้ำเกิดขึ้นจะเอาชนะแลมบ์ซ้ำได้


เวอร์ชันซ้ำ 49 ไบต์

n->{var r="";for(;n-->0;n/=6)r=6-n%6+r;return r;}

ลองออนไลน์!


3

Brachylog , 13 11 ไบต์

ขอบคุณFatalize 2 ไบต์

6~d{⟧₁∋}ᵐẉ⊥

เอาท์พุทไปเรื่อย ๆ ลองออนไลน์!

n

คำอธิบาย

6~d           Start with a number, all of whose digits are 6's
              Brachylog considers these in the order 6, 66, 666, 6666...
   {   }ᵐ     Map this predicate to each of those digits:
    ⟧₁         1-based reverse range: [6,5,4,3,2,1]
      ∋        The output digit must be a number in that range
              Brachylog considers possible outputs in this order: 6, 5, 4, 3, 2, 1, 66, 65...
         ẉ    Write a possible output with newline
          ⊥   Force the predicate to fail and backtrack to the next possibility

คุณกำลังใช้งาน Brachylog!
เสียชีวิต

1
คุณสามารถบันทึก 2 6~d{⟧₁∋}ᵐẉ⊥ไบต์โดยใช้ห่วงความล้มเหลวที่ขับเคลื่อนด้วยเช่นที่พวกเขาจะเรียกว่าในอารัมภบท: คุณจะจบโปรแกรมด้วย "false" ซึ่งจะบังคับให้พิมพ์โซลูชั่นทั้งหมด
เสียชีวิต

โอ้โห ใช่ฉันสนุกไปกับมันมาก!
DLosc

3

C # (. NET Core) , 38 ไบต์

int f(int n)=>n-->0?f(n/6)*10+6-n%6:0;

ลองออนไลน์!

ส่งออกค่า n-th (ตาม 1)


วิธีนี้แก้ปัญหาอันไหน
Stackstuck

@Stackstuck - ตอนนี้ฉันได้ระบุไว้ในคำตอบของฉัน
dana

1
โอ้ดี! เราไม่ได้ทับซ้อนกัน ฉันเพิ่งเขียนเครื่องพิมพ์ที่ไม่มีที่สิ้นสุด
Stackstuck

2

Japt, 14 ไบต์

จะต้องมีวิธีแก้ปัญหาที่สั้นกว่าโดยใช้ฟังก์ชั่นวิธีการและ / หรือผลิตภัณฑ์คาร์ทีเซียน แต่ (สำหรับตอนนี้) สิ่งที่ดีที่สุดที่ฉันสามารถจัดการได้คือพอร์ตของโซลูชัน JS ของ Arnauld ดังนั้นอย่าลืมโหวตให้เขาด้วย

©ß´Uz6)s+6-Uu6

ลองใช้หรือทดสอบข้อกำหนด0-1000


2

ภาษา Wolfram (Mathematica) , 88 78 ไบต์

(l=d=c=7-Range@6;While[Length@c<#,d=Flatten[(10#+l)&/@d];c=c~Join~d;];c[[#]])&

ลองออนไลน์!

บันทึก 4 + 6 ไบต์ด้วย @IanMiller

รายการจะถูกจัดทำดัชนี 1 ส่งออกหมายเลข n'th


1
คุณสามารถแทนที่ Range [6,1, -1] ด้วย 7-Range @ 6 เพื่อบันทึก 4 ตัวอักษร
Ian Miller

1
สำหรับกฎ codegolf คุณสามารถเขียนมันเป็นฟังก์ชั่นที่ไม่ระบุชื่อ: (l = d = c = 7-Range @ 6; ในขณะที่ [Length @ c <#, d = แผ่ [(10 # + l) & / @ d]; c = c ~ เข้าร่วม ~ d;]; c [[#]]) &
เอียนมิลเลอร์

@IanMiller ขอบคุณ! ฉันไม่แน่ใจว่าสิ่งที่เป็นกฎเกี่ยวกับรูปแบบ
ไก่

2

Mathematica, 56 ไบต์

Flatten[FromDigits/@Tuples[7-Range@6,#]&/@Range@#][[#]]&

65(6n1)


+1 นั่นมันเกินขนาดมหึมา แต่ทำงานได้อย่างสมบูรณ์แบบเพื่อความกะทัดรัด!
Kai

@ JonathanFrech ขอบคุณสำหรับการแก้ไข mathjax ของฉัน ฉันไม่แน่ใจว่าจะเปิดใช้งานที่นี่ได้อย่างไรเนื่องจากมันแตกต่างจาก math.se เล็กน้อย
Ian Miller

โปรดทราบว่าการแก้ไขต้นฉบับโดยผู้ใช้รายนี้
Jonathan Frech

โอ๊ะฉันไม่ดี ขอบคุณ @ geza-kerecsenyi ด้วย
เอียนมิลเลอร์

1

Pip -lขนาด 16 ไบต์

x:YP6-,6W1PxCP:y

ส่งออกลำดับโดยไม่ จำกัด ลองออนไลน์!

คำอธิบาย

-lธงหมายความว่ารายการจะพิมพ์ด้วยรายการบนเส้นของตัวเองในแต่ละ; หากรายการนั้นเป็นรายการตัวองค์ประกอบจะถูกต่อกันโดยไม่มีตัวคั่น เช่นรายการ[1 [2 3] [4 [5 6]]]จะถูกพิมพ์เป็น

1
23
456

เมื่อล้างแล้ว:

x:YP6-,6W1PxCP:y
      ,6          Range(6): [0 1 2 3 4 5]
    6-            Subtract each element from 6: [6 5 4 3 2 1]
  YP              Yank that value into the y variable, and also print it
x:                Assign that value also to x
        W1        While 1 (infinite loop):
           xCP:    Assign to x the cartesian product of x with
               y   the list [6 5 4 3 2 1]
          P        Print it

หลังจากวนซ้ำครั้งแรกxดูเหมือนว่า[[6;6];[6;5];[6;4];...;[1;1]]; หลังจากการทำซ้ำครั้งที่สอง[[[6;6];6];[[6;6];5];[[6;6];4];...;[[1;1];1]]; และอื่น ๆ เราไม่จำเป็นต้องกังวลเกี่ยวกับการทำให้รายการย่อยแบนเพราะ-lมันมีประสิทธิภาพสำหรับเรา


1

ถ่าน 18 ไบต์

NθWθ«←I⊕﹪±θ⁶≔÷⊖θ⁶θ

ลองออนไลน์! การเชื่อมโยงคือการใช้รหัสเวอร์ชันอย่างละเอียด 1 การจัดทำดัชนี คำอธิบาย:

Nθ

อินพุต n

Wθ«

ทำซ้ำจนกระทั่งnเป็นศูนย์

←I⊕﹪±θ⁶

ลด-nโมดูโล่6จากนั้นเพิ่มผลลัพธ์และผลลัพธ์จากขวาไปซ้าย

≔÷⊖θ⁶θ

ปรับตัวลดลงและจำนวนเต็มหารด้วยn6


1

เรติน่า 0.8.2 , 36 ไบต์

.+
$*_
+`(_*)\1{5}(_+)
$1$.2
T`7-1`d

ลองออนไลน์! ลิงค์มีกรณีทดสอบ 1 การจัดทำดัชนี คำอธิบาย:

.+
$*_

แปลงเป็นเอก (Retina 1 จะบันทึก 2 ไบต์ที่นี่)

+`(_*)\1{5}(_+)
$1$.2

แปลงเป็น bijective base 6 โดย divmod ซ้ำ โปรดทราบว่าการใช้+วิธีการที่ตัวเลขที่แยกออกนั้นเป็นตัวเลขจาก 1 ถึง 6 แทน 0 ถึง 5 สำหรับการแปลงฐาน 6 ปกติ ( (_{6})*เร็วกว่า แต่ค่าใช้จ่ายเป็นไบต์ที่สกัดความฉลาด)

T`7-1`d

ย้ายตัวเลขเพื่อให้ 6s มาก่อนและเลข 1 จะอยู่ได้ (ไม่มี 7s หรือ 0s แต่สิ่งนี้ทำให้ฉันสามารถใช้dทางลัด


1

Cubix , 22 ไบต์

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

..w.06+ONo*w;|uW!(pq;;

ลองออนไลน์!

    . .
    w .
0 6 + O N o * w
; | u W ! ( p q
    ; ;
    . .

ดูมันวิ่ง


1

C # (. NET Core) , การพิมพ์ไม่ จำกัด , 181 180 88 ไบต์

string[] s=new string[]{" "},t;int i,j,k,l=1;while(true){j=l;t=new string[l=6*j];for(i=6;i>0;i--)for(k=(6-i)*j;k<l;)t[k]=i+s[k++%j];
for(k=0;k<l;)System.Console.Write(t[k++]);s=t;}

น่าเศร้าที่มันค้าง repl.it แทนที่จะแสดงผลอย่างถูกต้องในเวอร์ชัน infinite ตามที่เขียน (ฉันเชื่อว่ามันเป็นข้อผิดพลาดใน repl.it เนื่องจากมันไม่ได้เอาต์พุตตามโปรแกรมที่ลูปอย่างที่ควร) ดังนั้นใครก็ตามที่หวังจะทดสอบความต้องการ คอมพิวเตอร์. ถ้าคุณเพิ่มการอ่านที่ด้านหน้าของลูปมันทำงานใน repl.it เช่นกัน

ส่งออกไปยังคอนโซลแน่นอน

ในระบบ จำกัด ใด ๆ รหัสมักจะผิดพลาดในที่สุดด้วยข้อผิดพลาดหน่วยความจำไม่เพียงพอ

ทำใหม่รหัสเพื่อใช้แลมบ์ดาของ @dana

int f(int n)=>n-->0?f(n/6)*10+6-n%6:0;for(int i=0;++i>0;)System.Console.Write(f(i)+" ");

ลองออนไลน์!


ฉันไม่รู้ว่าฉันเล่นกอล์ฟดีหรือไม่
Stackstuck

บันทึกหนึ่งไบต์โดยลบ k ++ ที่ไม่จำเป็นออก
Stackstuck

(เช่นกันฉันยินดีเป็นอย่างยิ่งที่จะได้รับความช่วยเหลือด้านการเล่นกอล์ฟฉันยังใหม่มากสำหรับเรื่องนี้)
Stackstuck

2
ยินดีต้อนรับ :) หากคุณมีความสนใจในการเล่นกอล์ฟใน C # คุณอาจต้องการตรวจสอบโพสต์นี้สำหรับเคล็ดลับบางอย่าง: codegolf.stackexchange.com/q/173/8340
dana

1

Forth (gforth) , 63 ไบต์

: f recursive dup 6 < if 6 - abs 1 .r else 6 /mod 1- f f then ;

ลองออนไลน์!

เอาต์พุตที่จัดทำดัชนี 0 ค่า nth

คำอธิบาย

ถ้า N น้อยกว่า 6 เอาท์พุทค่าสัมบูรณ์ของ N - 6 มิฉะนั้นรับผลหารและส่วนที่เหลือของการหาร N โดย 6 เรียกใช้ฟังก์ชันซ้ำในความฉลาดทางแล้วเรียกมันในส่วนที่เหลือ

รหัสคำอธิบาย

: f                 \ start a new word definition
  recursive         \ declare that this word is recursive so we can call it from itself
  dup 6 <           \ check if n is less than 6
  if                \ if it is:
    6 - abs 1 .r    \ subtract 6, get the absolute value, then print with no appended space
  else              \ else if it's greater than 6:
    6 /mod          \ get the quotient and remainder of dividing n by 6
    1-              \ subtract 1 from the quotient (because we're 0-indexed)
    f               \ call f on the result
    f               \ call f on the remainder (shortcut to format and print, it's always < 6)
  then              \ end the if/else
;                   \ end the word definition

1

APL (NARS), 27 ตัวอักษร, 54 ไบต์

{0>⍵-←1:0⋄(6-6∣⍵)+10×∇⌊⍵÷6}

แปลโซลูชันโดย dana /codegolf//a/179980ใน APL ... ทดสอบ:

  f←{0>⍵-←1:0⋄(6-6∣⍵)+10×∇⌊⍵÷6}
  f 500
5625
  f¨750 1000 9329 9331 10000 100000
4531 3433 11112 666666 663633 6131233 
  f¨⍳9
6 5 4 3 2 1 66 65 64 

0

C #, พิมพ์ตั้งแต่เริ่มต้นถึง n, ??? ไบต์

มอบเครดิตให้แก่ @dana สำหรับการแสดงออกแลมบ์ดา

int f(int n)=>n-->0?f(n/6)*10+6-n%6:0;for(int i=0;i<int.Parse(a[0]);)System.Console.Write(f(++i)+" ");

การดำเนินการ: เรียกใช้ด้วยอาร์กิวเมนต์บรรทัดที่ 0 เท่ากับจำนวนเต็มที่คุณต้องการนับ (ควรสังเกตว่าa[0]เป็นการอ้างอิงไปยังบรรทัดคำสั่งที่ไม่ได้กล่าวถึงอาร์เรย์และฉันไม่รู้วิธีการนับ)


เนื่องจากส่วนหนึ่งของรหัสคือ snipper แทนโปรแกรมหรือฟังก์ชั่นเต็มรูปแบบฉันถือว่าคุณใช้ Visual C # Interactive Compiler หรือไม่ คุณสามารถเพิ่มลิงค์ลองออนไลน์ด้วยรหัสทดสอบได้หรือไม่ PS: จำนวนไบต์ปัจจุบันของคุณคือ 102
Kevin Cruijssen

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