เครื่องมือตรวจสอบพาลินโดรม

พาลินโดรมคือข้อความที่อ่านได้เหมือนกันทั้งในทิศทางปกติและย้อนกลับ “Madam” เป็นตัวอย่างที่เข้าใจง่าย ในขณะที่คำว่า “A man, a plan, a canal: Panama” อาจต้องใช้เวลาสักหน่อยในการระบุ เพราะขึ้นอยู่กับการไม่ให้ความสำคัญกับเครื่องหมายวรรคตอนและช่องว่าง เครื่องมือนี้จะปรับข้อความที่คุณวางไว้ให้อยู่ในรูปแบบมาตรฐาน ได้แก่ การใช้ตัวพิมพ์เล็ก การลบช่องว่างและเครื่องหมายวรรคตอนออก จากนั้นจะตรวจสอบว่าผลลัพธ์เป็นพาลินโดรมจริงหรือไม่ และยังแสดงข้อความที่ถูกกลับด้านไว้เคียงข้างกันอีกด้วย

วิธีการดำเนินการตรวจสอบ

  1. 1

    วางข้อความหรือตัวเลข

    คำเดียว วลีหนึ่ง ประโยคยาว หรือข้อความที่ประกอบด้วยตัวเลข

  2. 2

    ได้มีการประยุกต์ใช้กระบวนการปรับให้อยู่ในระดับมาตรฐาน (normalization)

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

  3. 3

    เปรียบเทียบการเคลื่อนที่ในทิศทางปกติกับทิศทางกลับ

    หากสตริงที่ถูกปรับมาตรฐานแล้วตรงกับสตริงในลักษณะกลับด้านของมัน ก็ถือเป็นพาลินโดรม

  4. 4

    ตรวจสอบผลลัพธ์

    เครื่องมือนี้แสดงทั้งสตริงดิบและสตริงที่ถูกปรับมาตรฐานแล้วในรูปแบบกลับด้าน เพื่อการตรวจสอบ

ตัวอย่างพาลินโดรมคลาสสิก

ข้อความ ประเภท
madam คำเดียว
level คำเดียว
racecar คำเดียว
A man, a plan, a canal: Panama วลี
Was it a car or a cat I saw? คำถาม
Never odd or even วลี
12321 หมายเลข
Mr. Owl ate my metal worm ประโยคยาว

หมวดหมู่ของพาลินโดรม

  • พาลินโดรมของตัวอักษร ค่าเริ่มต้นคือการใช้ตัวอักษรเดียวกันทั้งในลำดับปกติและย้อนกลับ โดยไม่คำนึงถึงช่องว่าง
  • คำที่เป็นพาลินโดรม “I did, did I” – คำแต่ละคำมีโครงสร้างซ้ำกันอย่างสมมาตร
  • เซมอร์ดนิลัปส์ (Semordnilaps) คำที่เมื่อสลับลำดับจะกลายเป็นคำใหม่ เช่น “stressed” → “desserts”
  • พาลินโดรมเชิงตัวเลข คือลำดับตัวเลขใดๆ ที่อ่านได้เหมือนกันในทั้งสองทิศทาง เช่น 1991 และ 1881
  • พาลินโดรมในจีโนม คือลำดับดีเอ็นเอที่บริเวณใดบริเวณหนึ่งมีลำดับเหมือนกันบนสายทั้งสอง (เกี่ยวข้องกับเอนไซม์จำกัดการตัด)

การเขียนโปรแกรมสำหรับการตรวจสอบ

ตรรกะหลักในรูปแบบ pseudocode ดังนี้:

function isPalindrome(s):
    normalized = lowercase(s)
    normalized = removeAll(normalized, /[^\p{L}\p{N}]/u)   // เก็บตัวอักษรและตัวเลข อักษรใดก็ได้
    return normalized == reverse(normalized)

นี่คือคำถามเตรียมความพร้อมสำหรับการสัมภาษณ์ตามมาตรฐาน โดยมีรูปแบบต่าง ๆ เพิ่มเติมเพื่อครอบคลุมกรณีพิเศษ เช่น การไม่คำนึงถึงเครื่องหมายรวม Unicode การจัดการสตริงว่าง การรองรับอีโมจิ และการให้ความสำคัญกับกลุ่มกราเฟม

รูปแบบที่พบบ่อยของกฎนี้

  • โหมดเข้มงวด: นับตัวอักษรทุกตัว รวมถึงช่องว่างและเครื่องหมายวรรคตอน "aba" ผ่านเกณฑ์; "a man a plan" ไม่ผ่าน
  • ใช้เฉพาะตัวอักษรและตัวเลขเท่านั้น: ลบส่วนประกอบอื่นๆ ทั้งหมดออก วิธีนี้เป็นที่นิยมใช้ในการตรวจสอบความเป็นพาลินโดรมแบบไม่เข้มงวด
  • การปรับให้เป็นมาตรฐาน Unicode: เครื่องมือบางตัวจะรวมรูปตัวอักษรที่มีเครื่องหมายกำกับเสียง (NFKD) ก่อนเปรียบเทียบ เพื่อให้ “café” ตรงกับ “éfac”

เครื่องมือนี้ใช้วิธีเฉพาะตัวอักษรและตัวเลข: แปลงเป็นตัวพิมพ์เล็ก เก็บตัวอักษรและตัวเลข Unicode ทุกตัว (อักษรใดก็ได้ รวมถึงอักษรไทย) และตัดส่วนที่เหลือออก เครื่องมือนี้ไม่รวมเครื่องหมายกำกับเสียง และไม่มีปุ่ม “โหมดเข้มงวด”

คำถามที่พบบ่อย

ใช่ ตัวอักษรใดๆ ก็ตามล้วนเป็นพาลินโดรมโดยธรรมชาติ เนื่องจากมันเท่ากับตัวเองเมื่อกลับด้าน ส่วนนิยามทางการสอนส่วนใหญ่กำหนดว่าต้องมีตัวอักษรอย่างน้อยสามตัวจึงจะถือว่าน่าสนใจ แต่นิยามทางคณิตศาสตร์กลับยอมรับความยาวเพียง 1 ตัว และแม้กระทั่งความยาว 0 (ซึ่งก็คือสตริงเปล่า)

ให้ถือว่าตัวเลขเหล่านี้เป็นลำดับของตัวเลขเท่านั้น โดย 121, 12321 และ 1991 เป็นเลขพอลินโดรม (palindrome) สำหรับจำนวนเต็มขนาดใหญ่ ควรตรวจสอบรูปแบบการแทนค่าในรูปลำดับตัวเลข อย่าพยายามกลับลำดับตัวเลขด้วยการคำนวณทางคณิตศาสตร์ เพราะจะทำให้หลักศูนย์ที่อยู่ด้านหน้าสูญหายไป

ในภาษาอังกฤษ มีงานเขียนที่มีความซับซ้อนและน่าสนใจอย่างหนึ่งคือ “A Man, a Plan, a Canal: Panama” รวมถึงผลงานต่อยอดหลายชิ้นจากนั้น โดยพอลินดรอสม์ที่สร้างขึ้นด้วยคอมพิวเตอร์ของปีเตอร์ นอร์วิกมีความยาวเกิน 17,000 คำ แม้ว่าจะไม่มีคำใดในจำนวนนั้นที่ถูกต้องตามไวยากรณ์ก็ตาม ส่วนพอลินดรอสม์ที่ประกอบด้วยคำเดียวและยาวที่สุดในภาษาอังกฤษที่ได้รับการยอมรับจากกินเนสส์คือ “tattarrattat” (จากนวนิยาย Ulysses ของจอย์ซ)

ใช่แล้ว ในทุกภาษา คำว่า “saippuakivikauppias” ในภาษาฟินแลนด์ (หมายถึง ผู้ขายหินสบู่ ประกอบด้วยตัวอักษร 19 ตัว) มักถูกยกย่องว่าเป็นคำพันธุ์เดี่ยวแบบพาลินโดรมที่ยาวที่สุดซึ่งพบได้ตามธรรมชาติในทุกภาษา

เครื่องมือที่เกี่ยวข้อง

คู่มืออ้างอิงเครื่องหมายพิสูจน์อักษร

เรียนรู้เครื่องหมายพิสูจน์อักษรแบบดั้งเดิม 14 รายการที่พบบ่อยในข้อความภาษาอังกฤษ พร้อมคำอธิบายและตัวอย่างอย่างง่าย

เครื่องมือสร้างรายการ Spelling Bee

สร้างรายการคำศัพท์สะกดภาษาอังกฤษที่สลับลำดับตามระดับ ตั้งแต่ระดับชั้นประถมปีที่ 1 จนถึงรอบ Bee ที่ยาก รายการคำในตัวใช้ฟรีสำหรับฝึกฝน

เครื่องตรวจจับถ้อยคำที่เบื่อหู

วางงานเขียนแล้วเครื่องมือตรวจจับจะเทียบกับรายการวลีซ้ำซากภาษาอังกฤษทั่วไป และรายงานว่าแต่ละวลีปรากฏกี่ครั้ง

เครื่องสร้างคำถามแบบนี้หรือแบบนั้น

สับสำรับคำถามแบบนี้หรือแบบนั้นสำหรับการละลายพฤติกรรม เดต เกมวันเกิด และการวอร์มอัพทีม เลือกจำนวนที่ต้องการแล้วเริ่มถามได้เลย

ภาษาอังกฤษเป็น Pig Latin

แปลภาษาอังกฤษเป็น Pig Latin และกลับ ใช้การย้ายกลุ่มพยัญชนะคลาสสิกบวกกฎเติมท้าย -ay

เครื่องมือสร้างเทมเพลตประกาศการเสียชีวิต

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

เครื่องมือนี้มีให้บริการในภาษาอื่น