教授のタイピングをエミュレートする


8

教授のタイピングをエミュレートする

バックグラウンド

残念ながら、教授はキーボードを適切に使用することができません。Shiftキーを使用するつもりのときはいつでも、入力する前にCaps Lock 1回押します。自分で訂正する必要はありません。が必要なキーが2つ以上連続している場合ShiftCaps Lock最初のキーの前に押し、他のキーの前には何もしません。

彼の秘書として、私はこの効果を再現して、私ではなく彼が彼の電子メールに返信するのは彼だと人々に思わせるようにしたいと思います。彼はタイピングが愚かに見えることを知っていますが、気にしません。

仕事

いくつかのテキストのSTDINまたはファイル入力を受け取り、そのテキストを教授が入力したかのように出力するプログラムを記述します。

これはコードゴルフであり、標準の抜け穴は許可されていません。

キーボード・レイアウト

Default:
` 1 2 3 4 5 6 7 8 9 0 - =
   q w e r t y u i o p [ ]
    a s d f g h j k l ; ' #
   \ z x c v b n m , . /

With shift:
¬ ! " £ $ % ^ & * ( ) _ +
   Q W E R T Y U I O P { }
    A S D F G H J K L : @ ~
   | Z X C V B N M < > ?

With caps lock:
` 1 2 3 4 5 6 7 8 9 0 - =
   Q W E R T Y U I O P [ ]
    A S D F G H J K L ; ' #
   \ Z X C V B N M , . /

入力/出力の例

(このCapsLock行は理解のためだけにあり、プログラムでは出力されません)

Input:    abc ** def ! (ghijkl) mnop
Output:   abc 88 DEF 1 9GHIJKL0 mnop
CapsLock:     *      * *      *       (* means Caps Lock was pressed before this character)

Input:    print("Hello, World!"); sys.exit()
Output:   print92HELLO, world120; SYS.EXIT90
CapsLock:      *        *    *            *

Input:    !ABC!abc!ABC!abc!x!y!z
Output:   1ABC1ABC1abc1abc1X1y1Z
CapsLock: *       *       * * *

3
このタスクの反対の方がより興味深いと思います:)(つまり、誤ってタイプしたメールを修正するため)
オプティマイザ

4
@Optimizerあいまいすぎます。入力HELLO可能性は、「修正」HelloHElloHELlo、など
Geobits

しかし、Hello単語の大文字小文字の区別(または正しい英語の大文字小文字の固定規則)で定義されているように、正しいのは唯一です
オプティマイザー

4
@laurencevs正直なところ、私はそれを別の課題として考えたいと思います:)
Geobits

1
これはどんなブードゥーキーボードですか?
ブランドン

回答:


5

Python 2-269 275 290 318 337

三重引用符を使用する場合、入力はほとんど安全です。"""print("Hello, World!"); sys.exit()"""

C=D=0
r=''
l,u,c=" `1234567890-=qwertyuiop[]asdfghjkl;'#\\zxcvbnm,./",' \xac!"\xa3$%^&*()_+QWERTYUIOP{}ASDFGHJKL:@~|ZXCVBNM<>?'," `1234567890-=QWERTYUIOP[]ASDFGHJKL;'#\\ZXCVBNM,./"
for h in input():w=h!=' ';U=h in u;C^=w&U&~D;D=U&w;r+=[l,c][C][[l,u][U].find(h)]
print r

エンコーディングは、厄介なcharactersと£の文字を除いて、あまり役に立たないようです(このような他の問題を調べてみましたが、分割を使用する必要があると思いますか?)(キーボードが十分に圧縮されていないようですそれを価値あるもの.decodeにするなど...)

また、スペースは吸います。

注を編集:インデックス作成がおかしい


3

PowerShell-295

コンソール(Read-Host)から入力を受け取り、コンソールに出力します。

$d=@("``1234567890-=qwertyuiop[]asdfghjkl;'#\zxcvbnm,./ ","``1234567890-=QWERTYUIOP[]ASDFGHJKL;'#\ZXCVBNM,./ ",'¬!"£$%^&*()_+QWERTYUIOP{}ASDFGHJKL:@~|ZXCVBNM<>? ')
((Read-Host).ToCharArray()|%{if($_-eq' '-or$d[2].IndexOf($_)-lt0){$a=0}else{if(!$a){$b=!$b}$a=2}$d[$b][$d[$a].IndexOf($_)]})-join''
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.