เครื่องมือตรวจสอบการสะกด Word สับสน!


12

งานของคุณคือการสร้างโปรแกรมที่จะใส่ความยาวของคำใด ๆ ในแบบอักษร Calibri คำนี้จะทำจากตัวอักษรตัวอักษรที่พบบนแป้นพิมพ์ QWERTY ปกติ จะไม่มีการเน้นเสียงหรืออักขระอื่น ๆ (เช่นเครื่องหมายวรรคตอนตัวเลข ฯลฯ )

ดังนั้นตัวละครเดิมคือ:

ABCDEFGHIJKLMNOPQRSTU VWXYZ

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

ตัวอย่างของสิ่งนี้คือตัวอักษร Unicode อักษรU+0430ซีริลลิกตัวอักษร a ("а") สามารถมีลักษณะเหมือนกับอักขระ Unicode ตัวอักษรU+0061ละตินตัวอักษร a, ("a") ซึ่งเป็นตัวพิมพ์เล็ก "a" ที่ใช้เป็นภาษาอังกฤษ

อีกตัวอย่างหนึ่งคือตัวอักษรรัสเซียа, с, е, о, р, хและуมีอ็อปติคัลออพติคอลในตัวอักษรละตินพื้นฐานและมองใกล้หรือเหมือนกับ a, c, e, o, p, x และ y

กฎ:

  1. โปรแกรมจะต้องใช้ตัวอักษรที่คล้ายกัน ซึ่งหมายความว่าพวกเขาไม่สามารถเก็บไว้ในรูปแบบใด ซึ่งหมายความว่าค่า Unicode หรือตัวละครนั้นเอง
  2. นี่คือรหัสกอล์ฟ - คำตอบที่สั้นที่สุดชนะ!
  3. คุณต้องโพสต์เวอร์ชันที่ไม่ได้รับการโพสต์ด้วยเพื่อหลีกเลี่ยงการโกงที่ไม่สามารถตรวจพบได้เมื่อเล่นกอล์ฟ!
  4. คุณสามารถใช้ฟังก์ชั่นหรือโปรแกรมใด ๆ ในการทำเช่นนี้ตราบใดที่ไม่มีการจัดเก็บคำไว้
  5. คุณต้องใช้ UTF-8 อินพุตและเอาต์พุตอื่น ๆ ถูกแบน นี่คือเพื่อให้ฉันสามารถอ่านสิ่งที่คุณกำลังส่งออกและสิ่งที่ฉันกำลังป้อนดังนั้นฉันจึงไม่ได้มีจำนวนสุ่มของสี่เหลี่ยม, เครื่องหมายคำถามและ❮อื่น ๆ rand❮mpunctuati❮n!
  6. ต้องทำงานกับคำใด ๆ ที่ฉันป้อน

ตัวอย่างการทำงาน (คัดลอกและวางคำนี้ลงในคำและแทรกช่องว่างหลังจากนั้นควรตั้งค่าสถานะอันที่สองไม่ใช่แบบแรก)

Halim 
Hаlim  

ข้อมูลที่เป็นประโยชน์บางอย่างอยู่ที่นี่

โชคดี! เริ่ม


1
ผมคิดว่านี่เป็นผู้สมัครที่ดีสำหรับรหัสกอล์ฟแทนความนิยมประกวด
ProgrammerDan

@Programmer คำถามเกี่ยวกับเรื่องนี้คือ code-golf ต้องมีการแทนที่ตัวอักษรจำนวนเท่าใดและพวกเขาได้รับอนุญาตให้ค้นหาคำตอบที่ถูกต้องได้อย่างไร
Martin Ender

1
ในทั้งสองกรณีคำจำกัดความของ "สับสนตัวตรวจการสะกด" จะดี ตัวตรวจสอบการสะกดคำใด? นอกจากนี้ตัวอักษรอินพุตของเราคืออะไร? ตัวอักษรเอาท์พุท? ฉันขอแนะนำให้คุณระบุเครื่องมือตรวจสอบการสะกดออนไลน์ยอดนิยมและระบุการเข้ารหัสเช่น UTF-8
Rainbolt

ฉันได้แสดงความคิดเห็นของคุณบนกระดานและเปลี่ยนแปลงบางสิ่ง - ขอบคุณสำหรับคำแนะนำ :)
จอร์จ

นี่คงจะเป็นเรื่องตลกที่ April Fools ยิ่งใหญ่ถ้าฉันถามคำถามนี้เมื่อไม่กี่วันที่ผ่านมา!
จอร์จ

คำตอบ:


12

JavaScript, 71 ตัวอักษร

function f(s){return "\u202E"+s.split("").reverse().join("")+"\u202C";}

ลองใช้กับ JSFiddle

อย่างไรก็ตามวิธีนี้จะสั้นกว่าเล็กน้อยใน CoffeeScript ( 53 ตัวอักษร )

f=(s)->"\u202E#{s.split('').reverse().join ''}\u202C"

แก้ไข:ฉันเพิ่งสังเกตเห็นว่าข้อกำหนดของ UTF-8 มันจะยากใน JavaScript : - /


อย่าลงคะแนนคำตอบนี้ - เป็นคำตอบที่ดี แต่มีการโพสต์ก่อนที่กฎจะเปลี่ยนไปเล็กน้อย คุณต้องป้อนคำและไม่สามารถ hardcoded ได้ค่ะขออภัย
จอร์จ

@GeorgeH ฟังก์ชั่นใช้ข้อความใด ๆ โดยพลการ (ไม่เพียงคำเดียว) มันเป็นเพียง JSFiddle ที่แสดงการใช้งานด้วยตัวอย่างที่เจาะจงหนึ่งอย่าง
Martin Ender

1
โอ้ขอโทษฉันไม่เคยใช้ JSFiddle มาก่อน! มันสับสนมากตอนนี้ Word - มันคิดว่าGeorgeเป็นEgretและอื่น ๆ !
จอร์จ

5
อืม ... ผมสุ่มหยิบคำพูดบางคำที่จะทดสอบการทำงานของคุณ แต่มันไม่ทำงาน ... คำพูดที่ฉันเลือกได้level, rotor, racecar, และrefer kayak
user12205

1
@ace Touché : P
Martin Ender

9

Python3 - 51

print(''.join(chr(ord(c)+0xFEE0)for c in input()))

วิธีขี้เกียจ!

ungolfed เล็กน้อย

r=''
for c in input():
    r += chr(ord(c) - 0x20 + 0xFF00) # convert to fullwidth ASCII range
print(r)

คุณช่วยโพสต์เวอร์ชั่นที่ไม่ดีได้มั้ย ขอบคุณ!
จอร์จ

เสร็จแล้วควรอธิบายตนเอง :)
LemonBoy

หากคุณใช้งานใน IDLE คุณสามารถลบprint()- มันจะพิมพ์ออกมา
chill0r

คุณสามารถบันทึกหนึ่งไบต์โดยเปลี่ยนเลขฐานสิบหก FEE0 เป็นตัวเลขทศนิยม (65248)
0WJYxW9FMN

8

เสียงกระเพื่อมสามัญ, 142

ฉันไม่มีแบบอักษรชื่อ Calibri และแบบอักษรส่วนใหญ่ของฉันไม่มีสัญลักษณ์เหล่านี้ แต่ DejaVu Sans มีพวกเขา ฉันแทนที่ตัวอักษรที่มีสัญลักษณ์ทางคณิตศาสตร์และตัวเลข เครื่องตรวจตัวสะกดไม่ได้ทำเครื่องหมายข้อผิดพลาดใด ๆ แต่มันไม่สามารถตรวจจับข้อผิดพลาดได้แม้ว่าคำจะมีตัวสะกดที่ชัดเจน

แข็งแรงเล่นกอล์ฟ:

(ignore-errors(do(c)(())(setf c(char-code (read-char)))(write-char(code-char(cond((< 64 c 91)(+ c 120159))((< 96 c 123)(+ c 120153))(t c))))))

Ungolfed:

(ignore-errors      ; Ignore when (read-char) signals end of file.
  (do (c) (())      ; Loop forever with variable c.
    (setf c (char-code (read-char)))
    (write-char
     (code-char
      (cond
         ;; Replace A to Z with U+1D5A0 to U+1D5B9.
         ((< 64 c 91) (+ c 120159))
         ;; Replace a to z with U+1D5BA to U+1D5D3.
         ((< 96 c 123) (+ c 120153))
         ;; Keep other characters.
         (t c))))))

การใช้

  • clisp asconfuse.lisp <in >out
  • ecl -shell asconfuse.lisp <in >out
  • sbcl --script asconfuse.lisp <in >out

ฉันคิดว่าล่าม Lisp ของคุณมีการสนับสนุน Unicode และโลแคลของคุณคือ UTF-8 อย่าใช้abclเพราะมันมีปัญหานอก Basic Multilingual Plane

Unix clones:คุณสามารถรันlocaleในเทอร์มินัล ถ้าบรรทัดสำหรับ LC_CTYPE ไม่ได้พูดถึง UTF-8, export LC_CTYPE=en_US.UTF-8ลอง

ตัวอย่าง

ฉันวางผลลัพธ์ลงใน LibreOffice ข้อความของฉันมีข้อผิดพลาดในการสะกดที่ชัดเจน แต่ LibreOffice ตรวจไม่พบ มันจะไม่ดึง squiggles สีแดงใต้คำและปุ่มตรวจสอบการสะกดจะรายงานเฉพาะ "การตรวจการสะกดเสร็จสมบูรณ์"

LibreOffice

ข้อความคือ "𝖭𝗈𝗐𝗐𝗂𝗓𝗍𝖾𝗁𝗍𝗍𝗂𝗆𝖾𝖿𝗈𝗈𝗋𝖺𝗁𝗅𝗀𝗎𝖽𝗇𝖾𝗆𝗍𝗍𝗈" "" "" "" "" "" Firefox ยังไม่พบข้อผิดพลาดการสะกดคำในข้อความนี้


5

Dyalog APL , 7 ตัวอักษร

∊''∘,¨

มี U + FEFF ( Zero-No Space Break SpaceหรือUnicode BOM ) ระหว่างเครื่องหมายคำพูด อักขระนี้เกิดขึ้นในแบบอักษรคาลิบริ ตัวละครตัวนี้''จะใช้ได้,กับแต่ละตัวละครในการโต้แย้งและสิ่งที่ทั้งหมดจะถูกแบนแล้ว¨

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