Nhầm lẫn trình kiểm tra chính tả Word!


12

Nhiệm vụ của bạn là tạo ra một chương trình sẽ lấy đầu vào của một từ có độ dài bất kỳ, bằng phông chữ Calibri. Từ này sẽ được tạo từ các ký tự chữ cái được tìm thấy trên bàn phím QWERTY bình thường. Sẽ không có dấu hoặc bất kỳ ký tự nào khác (ví dụ: dấu chấm câu, số, v.v.).

Vì vậy, các nhân vật ban đầu là:

ABCDEFGHIJKLMNOPQRSTU VWXYZ

Chương trình sau đó sẽ xáo trộn nó để thay đổi các ký tự sao cho chúng trông giống hoặc giống hệt nhau, điều này có thể gây nhầm lẫn cho trình kiểm tra chính tả bằng cách gắn cờ, nhưng nó sẽ khiến tôi nhầm lẫn vì nó trông giống như từ bình thường, với ký tự không thay đổi.

Một ví dụ về điều này là ký tự Unicode U+0430, chữ cái nhỏ Cyrillic a ("а"), có thể trông giống hệt ký tự Unicode U+0061, chữ cái nhỏ Latin a, ("a") là chữ thường "a" được sử dụng trong tiếng Anh.

Một ví dụ khác là các chữ cái tiếng Nga а, с, е, о, р, х và у có các bản sao quang học trong bảng chữ cái Latinh cơ bản và trông gần giống với a, c, e, o, p, x và y.

Quy tắc:

  1. Chương trình phải làm việc ra các nhân vật tương tự. Điều này có nghĩa là chúng không thể được lưu trữ dưới mọi hình thức . Điều này có nghĩa là giá trị Unicode hoặc chính ký tự.
  2. Đây là một mã golf - câu trả lời ngắn nhất chiến thắng!
  3. Bạn cũng phải đăng phiên bản không có bản quyền để tránh gian lận không thể bị phát hiện khi chơi golf!
  4. Bạn có thể sử dụng bất kỳ chức năng hoặc chương trình nào để làm điều này, miễn là các từ không được lưu trữ ở đó.
  5. Bạn phải sử dụng UTF-8. Đầu vào và đầu ra khác bị cấm. Điều này là để tôi thực sự có thể đọc những gì bạn đang xuất ra, và những gì tôi đang nhập, vì vậy tôi không có một khối vuông, dấu hỏi và ❮ther rand❮m puncuati❮n!
  6. Nó phải làm việc với bất kỳ từ nào tôi nhập vào.

Một ví dụ hoạt động (Sao chép và dán từ này vào word và chèn khoảng trắng sau, nó sẽ gắn cờ cái thứ hai chứ không phải cái thứ nhất.)

Halim 
Hаlim  

Một số thông tin hữu ích ở đây

Chúc may mắn! Bắt đầu


1
Tôi nghĩ rằng đây là một ứng cử viên tuyệt vời cho môn đánh gôn thay vì cuộc thi nổi tiếng .
Lập trình viên

@ProgrammerBạn có thể đặt câu hỏi với mã này là golf-golf không, có bao nhiêu ký tự phải được thay thế và mức độ khác nhau của chúng được phép tìm kiếm một câu trả lời là hợp lệ?
Martin Ender

1
Trong cả hai trường hợp, một định nghĩa về "nhầm lẫn trình kiểm tra chính tả" sẽ rất hay. Kiểm tra chính tả nào? Ngoài ra, bảng chữ cái đầu vào của chúng tôi là gì? Bảng chữ cái đầu ra? Tôi khuyên bạn nên chỉ định một công cụ kiểm tra chính tả trực tuyến phổ biến và chỉ định mã hóa, chẳng hạn như UTF-8.
Rainbolt

Tôi đã lấy ý kiến ​​của bạn trên tàu và thay đổi một số điều - cảm ơn vì lời khuyên :)
George

Đây sẽ là một trò đùa cá tháng tư tuyệt vời nếu tôi đã hỏi điều này vài ngày trước!
George

Câu trả lời:


12

JavaScript, 71 ký tự

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

Hãy dùng thử trên JSFiddle.

Nhân tiện, điều này sẽ ngắn hơn một chút trong CoffeeScript ( 53 ký tự )

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

EDIT: Tôi chỉ nhận thấy rằng yêu cầu UTF-8. Điều đó sẽ trở nên khó khăn trong JavaScript. : - /


Đừng bỏ qua câu trả lời này - đây là một câu trả lời hay, nhưng nó đã được đăng trước khi các quy tắc thay đổi một chút. Bạn cũng phải nhập một từ và nó không thể được mã hóa cứng. Xin lỗi.
George

@GeorgeH chức năng này có bất kỳ văn bản tùy ý (không chỉ các từ đơn lẻ). Nó chỉ là JSFiddle trưng bày cách sử dụng với một ví dụ cụ thể.
Martin Ender

1
Ồ, xin lỗi, tôi chưa bao giờ sử dụng JSFiddle trước đây! Từ này thực sự bối rối - Nó nghĩ GeorgeEgretvà những thứ khác!
George

5
Hmm ... Tôi chọn ngẫu nhiên một số từ để kiểm tra chức năng của bạn nhưng nó không làm việc ... Những lời tôi nhặt được level, rotor, racecar, referkayak.
dùng12205

1
@ace Touché. : P
Martin Ender

9

Python3 - 51

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

Cách lười biếng!

Hơi vô dụng

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

Xin vui lòng bạn có thể gửi một phiên bản không có ý thức? Cảm ơn!
George

Xong, nó sẽ tự giải thích :)
LemonBoy

Nếu bạn sử dụng nó trong IDLE, bạn có thể xóa print()- dù sao nó cũng sẽ in ra
chill0r

Bạn có thể lưu một byte bằng cách thay đổi số thập lục phân FEE0 thành số thập phân (65248).
0WJYxW9FMN

8

Lisp thường gặp, 142

Tôi không có phông chữ tên Calibri và hầu hết các phông chữ của tôi đều thiếu các ký hiệu này, nhưng DejaVu Sans có chúng. Tôi thay thế các chữ cái bằng các ký hiệu chữ và số toán học . Trình kiểm tra chính tả không gắn cờ bất kỳ lỗi nào. Thay vào đó, nó không phát hiện ra lỗi, ngay cả khi các từ có lỗi chính tả rõ ràng.

Chơi gôn

(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))))))

Ung dung:

(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))))))

Sử dụng

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

Tôi giả sử rằng trình thông dịch Lisp của bạn có hỗ trợ Unicode và ngôn ngữ của bạn là UTF-8. Không sử dụng abcl, vì nó có vấn đề bên ngoài Mặt phẳng đa ngôn ngữ cơ bản.

Bản sao Unix: Bạn có thể chạy localetrong một thiết bị đầu cuối. Nếu dòng cho LC_CTYPE không đề cập đến UTF-8, hãy thử export LC_CTYPE=en_US.UTF-8.

Thí dụ

Tôi đã dán một số đầu ra vào LibreOffice. Văn bản của tôi có lỗi chính tả rõ ràng, nhưng LibreOffice không phát hiện ra chúng. Nó không rút ra tiếng cười khúc khích nào dưới các từ và nút kiểm tra chính tả chỉ báo cáo, "Việc kiểm tra chính tả đã hoàn tất."

LibreScript

Văn bản là, "𝗂𝗓 𝗍𝖾𝗁 𝗍𝗍𝗂𝗆𝖾 𝖿𝗈𝗈𝗋 𝖺𝗁𝗅 𝗀𝗎𝖽 𝗇𝖾𝗆 𝗍𝗍𝗈 𝗍𝖾𝗁 𝗈𝗏 𝗍𝖾𝗋𝖾 𝖼𝗈𝗎𝗇𝗍𝗋𝖾𝖾." Firefox cũng không tìm thấy lỗi chính tả trong văn bản này.


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.