Emule a digitação do professor

8

Emule a digitação do professor

fundo

Infelizmente, o professor não pode usar o teclado corretamente: sempre que ele pretende usar a Shifttecla, ele pressiona Caps Lock uma vez antes de digitar e não se preocupa em se corrigir. Se houver duas ou mais teclas seguidas necessárias Shift, ele pressiona Caps Lockantes da primeira e não faz nada antes das outras.

Como secretária dele, quero replicar esse efeito para que as pessoas pensem que ele é o responsável por responder a seus e-mails, não eu. Ele sabe que sua digitação parece estúpida, mas ele não se importa.

Tarefa

Escreva um programa que utilize STDIN ou arquivo de entrada de algum texto e, em seguida, produza esse texto como se tivesse sido digitado pelo professor.

Este é um código de golfe , e brechas padrão não são permitidas.

Layout do teclado

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 , . /

Exemplo de entrada / saída

(A CapsLocklinha existe apenas para sua compreensão e não deve ser exibida no seu programa)

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: *       *       * * *
monopolo
fonte
3
Eu diria que o oposto dessa tarefa seria mais interessante :) (ou seja, para corrigir seus erradamente tipos mails)
Optimizer
4
@Optimizer Muito ambíguo. Entrada HELLOpoderia ser "corrigido" para Hello, HEllo, HELlo, etc.
Geobits
Mas o correto seria Helloúnica, como definido pelo caso palavra (ou fixa regras de correta embalagem Inglês)
Optimizer
4
@laurencevs Honestamente, eu prefiro ver isso como um desafio separado :)
Geobits
1
Que tipo de teclado de vodu é esse?
Brandon

Respostas:

5

Python 2 - 269275 290 318 337

A entrada é mais segura se você usar aspas triplas:"""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

A codificação parece não ajudar muito, exceto com os estranhos caracteres ¬ e £ (tentei examinar outros problemas como esse e acho que deveria tentar usar a divisão?) (Não parece que o teclado comprima o suficiente para fazer valer a pena .decode, etc ...)

Além disso, os espaços são péssimos.

Editar nota: a indexação é estranha

FryAmTheEggman
fonte
3

PowerShell - 295

Recebe entrada do console (host de leitura) e sai para o console.

$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''
puckipedia
fonte