Dado um caractere, imprima (para a tela) todo o layout do teclado qwerty (com espaços e novas linhas) que segue o caractere. Os exemplos deixam claro.
Entrada 1
f
Saída 1
g h j k l
z x c v b n m
Entrada 2
q
Saída 2
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
Entrada 3
m
Saída 3
(O programa termina sem saída)
Entrada 4
l
Saída 4
z x c v b n m
O menor código vence. (em bytes)
PS
Novas linhas extras ou espaços extras no final de uma linha são aceitos.
Respostas:
CJam,
4240 bytesTeste aqui.
Explicação
fonte
e#
? É a sintaxe do CJam para um comentário? Desde já, obrigado.Pitão, 33 bytes
Observe que alguns caracteres não são imprimíveis. Experimente online no Pyth Compiler .
Como funciona
fonte
\
é equivalente ad
.md5
não produz 5 espaços.d
é a variável padrão que itera através do argumento iterável do operador de mapa. EjL\ <list>
é simplesmente um atalho para o operador de mapamj\ d<list>
.Perl, 56 bytes
Contando o shebang como 3, a entrada é obtida de stdin. Se uma nova linha líder não for uma preocupação para insumos
p
el
,/$_\n?/
poderá ser substituída por uma simples$_
para salvar 4.Uso da amostra
fonte
\K
ensinar sobre !s/.\B/$& /g
funcionaria igualmente bem. Um exemplo melhor .GS2 ,
3837 bytesO código-fonte usa a codificação CP437 . Experimente online!
Execução de teste
Como funciona
fonte
C #, 112 bytes
105110A contagem aumentou em 5 bytes, mas mais correta! Obrigado @ MartinBüttner !!
Sem golfe
fonte
JavaScript (ES6), 60 bytes
Usa a mesma técnica que a maioria das outras respostas. Sugestões são bem-vindas!
fonte
.join` `
, nada faria e não haveria espaço no resultado.Ruby,
6357 bytesToma o caractere como argumento da linha de comando:
ruby keyboard.rb e
fonte
TeaScript ,
504544 bytesTeaScript é JavaScript para jogar golfe.
Ungolfed e explicação
fonte
JavaScript ES6, 73
Se uma nova linha principal não for permitida quando o parâmetro for
p
oul
, 83fonte
Python, 83 bytes
Experimente online
fonte
Sed, 59 caracteres
(Código de 58 caracteres + opção de linha de comando de 1 caractere.)
Exemplo de execução:
fonte
Ruby,
8687837166O espaço extra a seguir
m
é para impedir que o programa trave se a entrada for 'm'.Obrigado a @manatwork por ~ 16 bytes de dicas
fonte
ARGV
→$*
;each_char
→chars
;do
..end
→{
..}
;printf
→$><<
+%
levaria a isto:"qwertyuiop↵asdfghjkl↵zxcvbnm".split($*[0])[1].chars{|i|$><<"%s "%i}
. Mais em Dicas para jogar golfe em Ruby ..
na expressão regular não corresponde\n
, por padrão, um melhor uso que para o espaçamento:puts"qwertyuiop↵asdfghjkl↵zxcvbnm ".split($*[0])[1].gsub(/./,'\& ')
. Embora o comprimento do código permaneça o mesmo.PHP, 88 bytes
Requer a
-F
opção de linha de comando, contada como 3. A configuração .ini padrão é assumida (você pode desativar o .ini local com-n
).Uso da amostra
fonte
Prolog (SWI),
153133 bytesEditar: Corte 20 bytes com dicas de @Fatalize
Código
Explicação
Exemplos
fonte
atom_codes
peça usando as aspas que delimitam os códigos de sequência (para substituir diretamente L na chamada deb
com a sequência).b([A,_|T],[H]):-A=H,writef('%s',[T]);b(T,[H]).
vez de 2 regras diferentes parab
é 7 bytes mais curto. Normalmente, é sempre mais curto mesclar todas as regras em uma única com ORs, em;
vez de escrever várias regras, porque você evita repetir o nome e os parâmetros do predicado e também evita um avanço de linha;)Anterior, 122 bytes
Foi testado aqui: Intérprete Befunge-93 .
Como funciona
'q w e r t y u i o p\na s d f g h j k l\nz x c v b n m'
é empurrado na pilha.@ZVD0FHJ:LNP^\<>,2B48X.T6R
) N é pressionado.Nota
Eu escolhi a codificação para que a string comece com
@
fim de se sobrepor ao programa. Essa sequência é gerada com o seguinte código python:fonte
Caxumba - 102 bytes
Script de golfe:
Ungolfed e comentou:
A regra que permite novas linhas extras me salvou quase 10 bytes ...
fonte
Java - 107 bytes
Ungolfed com leitura de classe de wrapper de System.in
Se os espaços no início da linha forem aceitáveis, podemos reduzir para 99 bytes:
fonte
Python 2,
586763 bytes ##Recebe a entrada como uma sequência ou caractere. Divide a sequência na entrada e imprime tudo após a divisão.
(Código de golfe pela primeira vez, seja gentil: P)
EDIT: não viu os espaços adicionais necessários entre os caracteres, adicionados agora
EDIT 2: Modificado para ser uma função lambda anônima e removendo o argumento de divisão adicional, economizando 4 bytes
fonte
print
, mas parece que isso não imprime os espaços entre cada par de letras."f"
.)lambda s:...
. Eu acho que a divisão não precisa de um argumento1
, já que o personagem aparece apenas uma vez. Isso gera espaços no início das linhas seguintes, sem ter certeza se isso é permitido.Rubi,
59 5767 bytesEspaços adicionados entre letras
fonte
nil
. O que não é um problema em si, mas causará problemas ao concluir seu código para adicionar espaços entre as letras.JavaScript, 88 bytes
(não é necessário espaço após o primeiro caractere, pois ele nunca chega à saída)
Alerta o teclado quando você liga
s("some letter")
. Também pode ser feito comdocument.write()
ouconsole.log()
, mas ei, é mais longo: PDemo:
fonte
\n
vez de;
na string e se livrando da substituição.SQL (MS T-SQL), 172 bytes
Ungolfed:
Sou novo por aqui, apenas descobri este site. Não faço ideia se eu postei corretamente ou se o T-SQL é permitido, mas eu sei que o procedimento acima funciona.
fonte
O 2.2,
4846 caracteresExemplo de execução:
O, 61 caracteres
Exemplo de execução:
fonte
"qwertyuiop\nasdfghjkl\nzxcvbnm\n"i/r;s{n.'\n=ST?}d
funciona apenas no novo intérprete, mas tem 51 bytes.git submodule update --init
, entãomake
Japt ,
4942414038 bytesJapt é uma versão abreviada do Ja vaScri pt . Intérprete
o
?
deve ser o impublicável Unicode caractere U + 0086.Como funciona
Agora batendo CJam! :) Sugestões são bem-vindas!
Versão não concorrente, 12 bytes
Desde 11 de janeiro, adicionei um novo recurso interessante ao Japt: se o programa contiver uma vírgula inicial, as variáveis
ABCDEFGHIJL
serão redefinidas para vários valores.D
está definido como"QWERTYUIOP\nASDFGHJKL\nZXCVBNM"
, portanto,;Dv
é suficiente substituir a string aqui.fonte
Gema, 56 caracteres
Exemplo de execução:
fonte
Código de máquina 8086 + DOS, 61 bytes
Hexdump (com exibição ASCII à direita):
Código fonte do assembly (pode ser montado com o tasm):
Duas coisas divertidas aqui:
qwerty
string é0x011e
. O byte superior é 1, que é o número da função DOS para entrada de caracteres. Isso economiza 1 byte no código.AND
com0x20
, todos são transformados em um espaço, que é impresso. Se o caractere anterior fosse um byte de fim de linha, ele será transformado em 0 e nenhum espaço será gerado. Isso é usado para evitar a sequência sem sentido0d 20 0a 20
no final da linha.Uma coisa quase divertida:
Tentei procurar o char de entrada começando no endereço 0 (que diminuiu o tamanho do programa em 2 bytes), em vez do local usual (início da string). Isso quase funcionou; no entanto, falhou na entrada
t
, porque o próprio código contém o bytet
(como parte da codificação de um salto condicional). Portantot
, ele produziria alguns bytes indesejados:fonte
, 32 caracteres / 79 bytes
Try it here (Firefox only).
Pelo menos estou ganhando em contagem de caracteres ... (A contagem de bytes é uma história diferente.)
Ah, sim, acabei de perceber que implementei atalhos de índice (em
⎖1
vez de[1]
) há algum tempo. Parvo eu!fonte
C ++,
129, 11297 bytesUngolfed:
fonte
puts
vez destd::cout<<
#include
paraputs
, mas evidentemente não preciso !strstr
era uma coisa.<stdio.h>
parastrstr
.Lote, 206 + 2 = 208 bytes
Como isso usa expansão atrasada, você precisa invocá-lo
CMD /V /C keyboard.cmd <letter>
, adicionando12 ao/V
comutador.fonte
cmd
aceitar como/VC
, como fazem as ferramentas POSIX. Mas, como eu sei,/V
requer um método próprio/
, que também é contado.Python, 109 bytes
Eu sei que é um pouco grande, mas é tudo o que sei fazer agora!
fonte
kb()
no final; definir a função é suficiente. Além disso, 1 espaço de recuo é suficiente. Depois de fazer essas alterações, recebo 108 bytes usando este site .Bash, 80 bytes
Tente você mesmo, substitua $ 1 pelo caractere desejado ou faça um script #! / Bin / bash.
Aqui estão algumas amostras do cygwin:
Não é o mais curto, mas ainda estou orgulhoso disso!
fonte