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を使用する必要があります。他の入力および出力は禁止されています。これは、実際にあなたが出力しているものと、私が入力しているものを読むことができるようにするためです。したがって、ランダムなマス、クエスチョンマーク、およびその他のランダムな句読点はありません。
  6. 入力した任意の単語で動作する必要があります。

実用例(これをコピーして単語に貼り付け、その後にスペースを挿入します。最初のフラグではなく、2番目のフラグを立てる必要があります。)

Halim 
Hаlim  

役立つ情報はこちら

幸運を!ベギン


1
これは人気コンテストではなくコードゴルフの素晴らしい候補だと思います。
— ProgrammerDan 14

@ProgrammerDanこれはコードゴルフとしての質問です、何人のキャラクターを交換する必要があり、彼らは有効な答えを探すためにどのくらい似ていないのですか?
— マーティンエンダー14

1
どちらの場合でも、「スペルチェッカーを混乱させる」の定義がいいでしょう。どのスペルチェッカー?また、入力アルファベットは何ですか?アルファベットを出力しますか?人気のあるオンラインスペルチェックツールを指定し、UTF-8などのエンコーディングを指定することをお勧めします。
— レインボルト14

ボード上であなたのコメント
— ジョージ14

数日前にこれを聞いていたなら、これはエイプリルフールのいたずらだったでしょう!
— ジョージ14

回答:


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では難しいでしょう。:-/


この回答に賛成票を投じないでください-これは良い回答ですが、ルールがわずかに変更される前に投稿されました。また、単語を入力する必要があり、ハードコーディングすることはできません。申し訳ありません。
— ジョージ14

@GeorgeH関数は、任意のテキスト(単一の単語だけでなく)を受け取ります。1つの特定の例で使用方法を紹介するのは、JSFiddleだけです。
— マーティンエンダー14

1
ああ、すみません、JSFiddleを使ったことがありません!ITSは本当に今、Wordを混乱-それは考えてGeorgeいるEgretと、他のもの!
— ジョージ14

5
うーん...私はランダムにあなたの機能をテストするために、いくつかの言葉を選んだが、それは仕事をしません...私は選んだ言葉だったlevel、rotor、racecar、referとkayak。
— user12205 14

1
@aceTouché。:P
— マーティン・エンダー

9

Python3-51

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

怠zyな方法!

わずかに食べられない

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

無償版を投稿できますか?ありがとう!
— ジョージ14

完了、それは自己説明する必要があります:)
— LemonBoy 14

IDLEで使用する場合は、削除できprint()ます
— -chill0r

16進数FEE0を10進数(65248)に変更すると、1バイトを節約できます。
— 0WJYxW9FMN

8

Common Lisp、142

Calibriという名前のフォントはなく、ほとんどのフォントにはこれらの記号がありませんが、DejaVu Sansにはあります。文字をMathematical Alphanumeric Symbolsに置き換えます。スペルチェッカーはエラーにフラグを立てません。代わりに、明らかなタイプミスがある場合でも、エラーの検出に失敗します。

ゴルフ済み:

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

ゴルフをしていない:

(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。BasicMultilingual Plane以外の問題があるためです。

Unixクローン:localeターミナルで実行できます。LC_CTYPEの行にUTF-8が記載されていない場合は、を試してくださいexport LC_CTYPE=en_US.UTF-8。

例

LibreOfficeに出力を貼り付けました。私のテキストには明らかなスペルミスがありますが、LibreOfficeはそれらを検出できません。単語の下に赤い波線は描かれず、スペルチェックボタンは「スペルチェックが完了しました」とのみ報告します。

LibreOffice

テキストは、「𝖭𝗈𝗐𝗐𝗂𝗓𝗍𝖾𝗁𝗍𝗍𝗂𝗆𝖾𝖿𝗈𝗈𝗋𝖺𝗁𝗅𝗀𝗎𝖽𝗇𝖾𝗆𝗍𝗍𝗈𝖼𝗈𝖾𝗆𝗍𝗍𝗈𝗍𝖾𝗁𝖺𝖾𝖽𝗈𝗏𝗈𝗏𝗍𝖾𝗋𝖾𝖼𝗈𝗎𝗇𝗍𝗋𝖾𝖾」です。Firefoxは、このテキストにスペルミスも発見しません。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.