รหัสมอร์สที่ไม่มีช่องว่างสามารถถอดรหัสได้หรือไม่


54

สตริงรหัสมอร์สทั้งหมดสามารถถอดรหัสได้โดยไม่ซ้ำกันหรือไม่? ไม่มีช่องว่าง

......-...-..---.-----.-..-..-..

อาจเป็นได้Hello Worldแต่บางทีตัวอักษรตัวแรกคือ5- ในความเป็นจริงมันดูไม่น่าจะเป็นไปได้มากตามลำดับจุดและขีดคั่นควรมีการแปลที่เป็นเอกลักษณ์

อาจเป็นไปได้ว่าอาจใช้อสมการคราฟท์แต่ใช้กับรหัสนำหน้าเท่านั้น

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


ในกรณีที่ฉันถูกและข้อความรหัสมอร์สทั้งหมดไม่สามารถถอดรหัสได้โดยไม่ซ้ำมีวิธีการแสดงข้อความที่เป็นไปได้ทั้งหมดหรือไม่ นี่คือแบบฝึกหัดที่เกี่ยวข้องที่ฉันพบใน codegolf.SE


7
คุณดูเหมือนจะตอบคำถามของคุณเองแล้ว?
ราฟาเอล

7
"รหัสมอร์สที่ไม่มีช่องว่าง" ไม่ใช่รหัสมอร์ส ช่องว่างเป็นส่วนหนึ่งของสเปคเพราะถ้าไม่มีรหัสก็ไม่สามารถถอดรหัสได้
Stephen Kennedy

1
@StephenKennedy มีอยู่แล้วในคำถาม คุณอ่านมันทั้งหมดหรือเปล่า?
กราฟิลส์

3
สคริปต์ Perlเพื่อแสดงรายการข้อความที่เป็นไปได้สำหรับรหัส ไม่ทราบว่านี่เป็นชุมชนทางทฤษฎีล้วนๆ :)
Squeezy

1
คุณแน่ใจหรือไม่ว่าคำตอบที่คุณยอมรับนั้นมีคุณสมบัติตรงตามคำตอบทั้งหมด ฉันหมายความว่ามันชัดเจนว่า ET = A ... ซึ่งพิสูจน์ว่าสปีลเบิร์กนั้นถูกต้อง: ET เป็นมนุษย์ต่างดาว
บา

คำตอบ:


91

ข้อความต่อไปนี้เป็นข้อความที่เป็นไปได้ แต่มีความหมายแตกต่างกันโดยสิ้นเชิง:

SOS HELP      = ...---...  .... . .-.. .--.        => ...---.........-...--.
I AM HIS DATE = ..  .- --  .... .. ...  -.. .- - . => ...---.........-...--.

6
น่ารัก แต่เป็นที่ยอมรับแล้วว่ามอร์สที่ไม่มีช่องว่างคลุมเครือดังนั้นฉันจึงไม่คิดว่านี่จะมีค่ามากกว่าความคิดเห็น
David Richerby

37
สหกรณ์ดูเหมือนว่าจะถามว่าหนึ่งชุดของจุดและขีดกลางโดยไม่มีช่องว่างอาจจะตีความว่าเป็นข้อความที่สอง "ของจริง" เมื่อเทียบกับลำดับโดยพลการของTและE SOSแรก! ช่วยด้วย! ประกอบด้วยการแทรกสองครั้งและครั้งที่สองที่ฉันคือวันที่ของเขาเป็นประโยคภาษาอังกฤษไวยากรณ์และมีเหตุผลดังนั้นทั้งสองเป็นข้อความที่ถูกต้อง คำถามนี้ตอบคำถามอย่างกระชับโดยยกตัวอย่าง
CJ Dennis

2
@CJDennis คำถามไม่ได้บอกอย่างนั้น มันถามว่ามีสาย Morse ถอดรหัสได้ไม่ซ้ำกันและถ้ามีวิธีในการแสดงรายการสตริงทั้งหมดที่รหัสไปยังลำดับที่กำหนดถ้าจุดและขีดกลาง มันไม่ได้บอกอะไรเลยเกี่ยวกับสายอักขระที่ต้องมีความหมายเป็นภาษาอังกฤษ
David Richerby

2
มีทั้งตัวอย่างเฉพาะ (ตัวนับ) และวิธีทั่วไปในการศึกษาปัญหาและทั้งสองเกี่ยวข้องกับคำตอบที่ดี ดูตัวอย่างหลักฐาน / refutationsโดย lakatos
vzn

3
"มันพูดว่าอะไรธง?" I AM HIS DATE"ดังนั้นอมีเลียจึงตัดสินใจหนีไปกับนูนันเก่า, อืมม. เราน่าจะเก็บเรื่องนี้ไว้กับตัวเราเอง"
dotancohen

36

อ้างถึง David Richerby จากความคิดเห็น:

เนื่องจาก⋅แทน E และ - แทน T ข้อความมอร์สที่ไม่มีช่องว่างสามารถตีความได้ว่าเป็นสตริงใน{E,T}

นอกจากนี้เนื่องจาก A, I, M และ N ถูกแสดงโดยการรวมกันที่เป็นไปได้สี่แบบของอักขระมอร์สสองตัว (⋅-, ⋅⋅, -, -⋅, ตามลำดับ) ข้อความใด ๆ ที่ไม่มีช่องว่างสามารถตีความได้ว่าเป็นสตริงใน . โปรดทราบว่าสำหรับข้อความของมอร์สที่มีความยาว> 1 สิ่งนี้แตกต่างจากการตีความของดาวิด ดังนั้นข้อความเดียวที่มีการตีความที่ไม่ซ้ำกันคือความยาว 1 (และฉันสมมุติว่า 0 ถ้านับเป็นข้อความ) - นั่นคือ⋅แทน E และ - แทน T{A,I,M,N}{E,T}?

นี่คือ JavaScript บางอย่างที่จะบอกคุณตีความเป็นไปได้ทั้งหมดของสตริงของและ. -สตริงที่มีความยาวสูงสุด 22 รันภายในไม่กี่วินาที แต่สิ่งที่สูงกว่านั้นเริ่มช้าลง - ฉันจะไม่ลองถอดรหัส HELLO WORLD ด้วยเช่นกัน คุณสามารถ pop เปิดคอนโซล JavaScript decode('......-...-..---')ในเบราว์เซอร์ของคุณวางนี้แล้วโทรยกตัวอย่างเช่น (ในตัวอย่างนี้รายการ # 2446 เป็นสตริงตั้งใจ "HELLO")

var decode = function(code) {
  var cache = {
    '0': ['']
  };
  for(var start = 0;start < code.length;start++) {
    for(var len = 1;len < 6;len++) {
      if(start + len > code.length) continue;
      if(!cache[start + len]) cache[start + len] = [];
      var curCode = code.slice(start, start + len);
      if(dict[curCode]) {
        for(var i_start = 0;i_start < cache[start].length;i_start++) {
          cache[start + len].push(cache[start][i_start] + dict[curCode]);
        }
      }
    }
  }
  return cache[code.length];
};

var dict = {
  '.-': 'A',
  '-...': 'B',
  '-.-.': 'C',
  '-..': 'D',
  '.': 'E',
  '..-.': 'F',
  '--.': 'G',
  '....': 'H',
  '..': 'I',
  '.---': 'J',
  '-.-': 'K',
  '.-..': 'L',
  '--': 'M',
  '-.': 'N',
  '---': 'O',
  '.--.': 'P',
  '--.-': 'Q',
  '.-.': 'R',
  '...': 'S',
  '-': 'T',
  '..-': 'U',
  '...-': 'V',
  '.--': 'W',
  '-..-': 'X',
  '-.--': 'Y',
  '--..': 'Z',
  '.----': '1',
  '..---': '2',
  '...--': '3',
  '....-': '4',
  '.....': '5',
  '-....': '6',
  '--...': '7',
  '---..': '8',
  '----.': '9',
  '-----': '0'
};

รหัสในการตัดมันเพียงสตริงของคำที่แท้จริงคืออีกนิดเพื่อให้ฉันใส่มันนี่ มันทำงานภายใต้ Node.js /usr/share/dict/words-2500และคาดว่าไฟล์ที่ พจนานุกรมฉันใช้สามารถพบได้ที่นี่ มันไม่ได้ไร้เดียงสา - มันพรุนเป็นมันไปเพื่อให้มันทำงานมากได้เร็วขึ้นในปัจจัยการผลิตที่มีขนาดใหญ่

พจนานุกรมประกอบด้วยรายการคำศัพท์สูงสุด 2,500 รายการที่ฉันพบบนอินเทอร์เน็ตบางแห่งลบชุดค่าผสมระหว่างตัวอักษร 1, 2, และ 3 ตัวที่ฉันไม่คิดว่าเป็นคำใด ๆ อัลกอริทึมนี้มีความอ่อนไหวต่อการมีคำสั้น ๆ ให้เลือกมากเกินไปและช้าลงอย่างมากหากคุณอนุญาตให้พูดทุกตัวอักษรเป็นคำ (ฉันกำลังมองคุณ/usr/share/dict/words)

อัลกอริทึมเสร็จสิ้นโดยการเรียงลำดับตามจำนวนคำดังนั้นหวังว่า "น่าสนใจ" จะอยู่ด้านบน วิธีนี้ใช้งานได้ดีHELLO WORLDโดยใช้เวลาเพียงเสี้ยววินาทีและส่งคืนวลีที่คาดไว้เมื่อถูกโจมตีครั้งแรก จากนี้ผมยังได้เรียนรู้ว่าDATA SCIENTIST(เพียงวลีอื่น ๆ ที่ฉันพยายาม) NEW REAL INDIAรหัสมอร์สเช่นเดียวกับ

แก้ไข: ฉันค้นหาสิ่งที่น่าสนใจมากขึ้นในไม่กี่นาที คำSPACESและSWITCHmorsagrams จนถึงตอนนี้พวกเขาเป็นคู่คำเดียวที่ยาวที่สุดที่ฉันได้พบ


3
คุณเพิ่งคิดค้นคำว่าmorsagramหรือไม่? ฉันชอบมันมาก แต่การค้นหาเว็บมีลิงก์เดียวให้กับเว็บไซต์นี้
BmyGuest

ฉันยังใช้เสรีภาพในการเปลี่ยนคำถามที่น่าสนใจนี้ให้เป็นความท้าทายแบบเปิดบน Puzzling.SEโดยมีการอ้างอิงกลับไปที่โพสต์นี้ที่นี่
BmyGuest

@BmyGuest ใช่นั่นเป็นคำที่สมบูรณ์แบบ แต่ฉันก็ชอบนะ
Aaron Dufour

17

มันพอที่จะสังเกตได้ว่าตัวอักษรผสมสั้น ๆ บางตัวให้การถอดรหัสที่ไม่ชัดเจน ลำดับที่ไม่ชัดเจนเพียงอย่างเดียวเพียงพอ แต่ฉันสามารถเห็นสิ่งต่อไปนี้:

ATE ~ P
EA ~ IT
MO ~ OM

ฯลฯตามที่ David Richerby บันทึกไว้ในความคิดเห็นจดหมายใด ๆ ที่เทียบเท่ากับสตริงของ Es และ Ts ซึ่งทำให้รหัสมอร์สคลุมเครือเป็นวิธีการเข้ารหัสลำดับของจดหมายโดยพลการ; ชุดค่าผสมข้างต้นแสดงให้เห็นว่านี่เป็นความจริงแม้กระทั่งการรวมตัวอักษรที่เป็นไปได้ในภาษาอังกฤษ (เช่นMEAT~ MITT) บางทีแบบฝึกหัดการเข้ารหัสที่น่าสนใจคือการค้นหาตัวอักษรทั้งหมดห้าตัวหรือน้อยกว่าซึ่งอาจผิดต่อสิ่งอื่นโดย จำกัด การใช้ตัวอักษรผสมกันซึ่งอาจพบได้ในข้อความภาษาอังกฤษ

เมื่อใช้ตัวอย่างดั้งเดิมของคุณมันก็เป็นเช่นนั้น

HELLO WORLD ~ HAS TEAM NO MAID TOE

และในขณะที่ด้านขวามืออาจไม่สมจริงแม้จะเป็นเพียงบางส่วน แต่ก็เป็นคำในภาษาอังกฤษและอาจพบได้ในเวลาน้อยกว่า 15 นาทีโดยไม่ต้องใช้คอมพิวเตอร์ นี่อาจเป็นหลักฐานที่แสดงให้เห็นว่าวลีภาษาอังกฤษจำนวนมากอาจถูกแยกออกเป็นคำในภาษาอังกฤษที่แตกต่างกัน (อาจไร้สาระ)


MT vs TM เป็นตัวอย่างที่สั้นมาก
ราฟาเอล

2
@Raphael MT == TM == O ทั้งสามเป็นลำดับเดียวกัน ทำให้แปลยากมาก
Red_Shadow

10

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

ตัวอย่างเช่น 2 จุดคือ I แต่ 3 จุดเป็น S หากคุณกำลังถอดเสียงและคุณได้ยินสองจุดคุณเขียน "I" ทันทีหรือคุณรอจนกว่าคุณจะได้ยินจุดอื่น (หรือเส้นประ)

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

แม้ว่าคุณจะเขียนโปรแกรม AI เพื่อดูประโยคเต็มในแต่ละครั้งและคิดออกว่าการตีความเชิงตรรกะของข้อความนั้นจะยังคงมีความคลุมเครือเล็กน้อยและการสะกดผิดเล็กน้อยที่จะ


2
ประโยคสุดท้ายของคุณดูเหมือนจะถูกตัดทอน
David Richerby

2
@DavidRicherby ใช่นั่นเป็นเพราะฉันพยายามโพสต์โดยใช้รหัสมอร์สโดยไม่มีช่องว่าง
Tyler Durden

4

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

  • ทฤษฎีทั่วไปของ CS ตกอยู่ในหมวดหมู่ของการแบ่งส่วนข้อความและ "แยกคำ" / "disambiguation" แม้ว่าจะมีทฤษฎีที่แตกต่างกันเล็กน้อยเกี่ยวกับการแยกลำดับของสัญลักษณ์เป็นคำ (ด้วยตัวอักษรตัวแปร) ฯลฯ ที่สัญลักษณ์ เป็นหน่วย ที่นี่สตริงจะถูกแบ่งออกเป็นตัวอักษรที่ตัวอักษรมีความยาวผันแปรได้ แต่ทฤษฏีนั้นคล้ายคลึงกันแม้ว่าจะไม่ใช่ 1-1 ก็ตาม เช่นการจับคู่ระหว่างประโยคกับคำ, ตัวแปร - คำ - ตัวอักษร - ความยาว, และประโยค - เป็น - คำ, ตัวแปร - คำ / จดหมาย - ความยาว

  • ตามที่คนอื่น ๆ ได้ชี้ให้เห็นว่าสิ่งนี้สามารถศึกษาเชิงประจักษ์ได้ และมีคนทำเช่นนั้นจากมุมมองเดียว (มีหลายวิธีในการศึกษานี้) และ "เผยแพร่" ผลลัพธ์บนหน้าเว็บที่มีไดเรกทอรี / ตารางผลลัพธ์ขนาดใหญ่

    ฉันพบคำรหัสมอร์สที่ไม่ชัดเจน 25,787 คำ สิ่งนี้ทำจาก 10,330 สตริง Morse ที่แตกต่าง คำที่มอร์สความถี่สูงสุดคลุมเครือมี 13 คำที่เป็นไปได้ของผู้บริจาค ผลลัพธ์จะถูกจัดกลุ่มด้านล่างในตารางโดยยึดตามความถี่ของคำที่ใช้การแทนมอร์สเดียวกัน

  • ว้าว "บริบทมีความสำคัญ" ... เป็นคำถามที่เกือบเหมือนกัน"กำลังแปลรหัสมอร์สโดยไม่มีช่องว่าง"ใน stackoverflow จาก 3 ปีที่แล้วมี 0 คะแนน


2

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

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


ไม่ไม่ได้เป็นอัลกอริทึม Viterbiทำสิ่งที่คล้ายกับสิ่งที่คุณอธิบาย? การหาจำนวนการเติบโตแบบทวีคูณของจำนวนการถอดรหัสนั่นเป็นคำถามที่เหมาะสมสำหรับที่นี่หรือ cstheory.SE
john mangual

1
ใช่แล้วแนวคิดคือใช้การเขียนโปรแกรมแบบไดนามิก การประมาณการเติบโตแบบเลขชี้กำลังอาจจะเหมาะกว่าที่นี่
Yuval Filmus

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

1

วิธีการกำหนด / จดจำ / สร้างภาษาของการถอดรหัสที่เป็นไปได้ทั้งหมด

เห็นได้ชัดว่าไม่มีช่องว่างรหัสมอร์สไม่สามารถถอดรหัสได้อีกต่อไป

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

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

วิธีที่คุณสามารถรับการแปลทั้งหมดมีดังต่อไปนี้

T

wnWn+10nL={w}=L(W)T(L)T(L)

TWTW

รายละเอียดสามารถใช้งานได้ง่าย แต่ถามว่าคุณต้องการมากกว่านี้ไหม


0

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

MorseSolver (string textSoFar, string codeRemaining)
{
    if(codeRemaining length == 0) output textSoFar
    else
    {
        codeLength = length of code remaining
        read 1 through (min of 5 or codeLength) characters from codeRemaining
        for each set of characters
        {
            call an IsMorseCode method that checks if the characters 
              input are valid morse code
            if they are valid add the translated character to textSoFar 
              and remove the characters from codeRemaining, then call 
              the MorseSolver again with the new strings)
        }

}

สิ่งนี้จะเอาท์พุทการผสมตัวอักษรและตัวเลขที่เป็นไปได้ทั้งหมดโดยไม่มีช่องว่างระหว่าง "คำ" หากคุณต้องการพิสูจน์ความกำกวมสิ่งนี้จะทำอย่างแน่นอน หากคุณต้องการนำข้อความที่มีความหมายออกมาให้ลองค้นหารหัสที่แปลแฮชแท็กเป็นภาษาที่อ่านได้

เมื่อใช้ข้างต้นฉันเขียนโปรแกรมใน C # ซึ่งทำหน้าที่ข้างต้น ฉันหยุดมันจากการทำงานที่ 22 ล้านความเป็นไปได้สำหรับสตริงข้างต้นที่สามารถแปลเป็นสวัสดีชาวโลกได้ รหัสมอร์สเทียบเท่ากับ "สวัสดี" ทำให้ได้ผลลัพธ์ที่เป็นไปได้ 20,569 รายการ ฉันยังไม่ได้รวมตัวเลข นั่นจะสูงกว่าถ้าฉันอนุญาตพวกเขา


ผลลัพธ์ของอัลกอริทึมดังกล่าวจะเป็นข้อพิสูจน์ว่าสตริงใด ๆ ไม่ชัดเจน แต่จะไม่พิสูจน์ว่าสตริงทั้งหมดนั้นไม่ชัดเจน
David Richerby

@DavidRicherby สตริงที่มีความยาวทั้งหมด> 1 นั้นไม่ชัดเจน ที่ได้รับการพิสูจน์แล้วจากที่อื่นในหน้านี้ ฉันพยายามตอบส่วนที่สองของคำถามและให้วิธีการประเมินวิธีแก้ปัญหาที่เป็นไปได้ทั้งหมดจากสตริง
Red_Shadow

เพิ่งจะอยากรู้อยากเห็นคุณจะแบ่งปันโปรแกรม C # ของคุณหรือไม่ รุ่น Perl ของฉันมาพร้อมกับวิธีแก้ปัญหาที่เป็นไปได้ในปี 19796 สำหรับค่าเทียบเท่า "HELLO" ส่วนใหญ่อาจฉันลืมที่จะส่งออกบางกรณีแม้ว่า ...
Squeezy

1
รหัสแหล่งที่มาจริงเป็น offtopic ที่นี่; โปรดเผยแพร่ที่อื่น (pastebin, Gist, ... ) และเชื่อมโยงกับมันเท่านั้น
Raphael
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.