Dado un carácter, genera (en la pantalla) toda la distribución del teclado qwerty (con espacios y líneas nuevas) que sigue al carácter. Los ejemplos lo dejan claro.
Entrada 1
f
Salida 1
g h j k l
z x c v b n m
Entrada 2
q
Salida 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
Salida 3
(El programa termina sin salida)
Entrada 4
l
Salida 4
z x c v b n m
El código más corto gana. (en bytes)
PD
Se aceptan nuevas líneas adicionales o espacios adicionales al final de una línea.
Respuestas:
CJam,
4240 bytesPruébalo aquí.
Explicación
fuente
e#
? ¿Es la sintaxis de CJam para un comentario? Gracias por adelantado.Pyth, 33 bytes
Tenga en cuenta que algunos caracteres no se pueden imprimir. Pruébelo en línea en compilador Pyth .
Cómo funciona
fuente
\
es equivalente ad
.md5
que no produce 5 espacios.d
es la variable predeterminada que itera a través del argumento iterable del operador del mapa. YjL\ <list>
es simplemente un atajo para el operador del mapamj\ d<list>
.Perl, 56 bytes
Contando el shebang como 3, la entrada se toma de stdin. Si una nueva línea principal no es una preocupación para las entradas
p
yl
, entonces/$_\n?/
podría reemplazarse por una simple$_
para ahorrar 4.Uso de muestra
fuente
\K
!s/.\B/$& /g
funcionaría igual de bien. Un mejor ejemplo .GS2 ,
3837 bytesEl código fuente usa la codificación CP437 . Pruébalo en línea!
Prueba de funcionamiento
Cómo funciona
fuente
C #, 112 bytes
105110El recuento aumentó en 5 bytes, ¡pero más correcto! Gracias @ MartinBüttner !!
Sin golf
fuente
JavaScript (ES6), 60 bytes
Utiliza la misma técnica que la mayoría de las otras respuestas. Sugerencias bienvenidas!
fuente
.join` `
, no haría nada y no habría espacios en el resultado.Ruby,
6357 bytesToma el carácter como argumento de línea de comando:
ruby keyboard.rb e
fuente
TeaScript ,
504544 bytesTeaScript es JavaScript para jugar al golf.
Sin golfos y explicación
fuente
JavaScript ES6, 73
Si no se permite una nueva línea inicial cuando el parámetro es
p
ol
, entonces 83fuente
Python, 83 bytes
Pruébalo en línea
fuente
Sed, 59 caracteres
(Código de 58 caracteres + opción de línea de comando de 1 carácter).
Ejecución de muestra:
fuente
Rubí,
8687837166El espacio extra después
m
es para evitar que el programa se bloquee si la entrada es 'm'.Gracias a @manatwork por ~ 16 bytes de consejos
fuente
ARGV
→$*
;each_char
→chars
;do
..end
→{
..}
;printf
→$><<
+%
llevaría a esto:"qwertyuiop↵asdfghjkl↵zxcvbnm".split($*[0])[1].chars{|i|$><<"%s "%i}
. Más en Consejos para jugar al golf en Ruby ..
en la expresión regular no detectará\n
de forma predeterminada, un mejor uso que para el espacio:puts"qwertyuiop↵asdfghjkl↵zxcvbnm ".split($*[0])[1].gsub(/./,'\& ')
. Aunque la longitud del código seguirá siendo la misma.PHP, 88 bytes
Requiere la
-F
opción de línea de comando, contada como 3. Se asume la configuración predeterminada de .ini (puede deshabilitar su .ini local con-n
).Uso de muestra
fuente
Prólogo (SWI),
153133 bytesEditar: corte 20 bytes con consejos de @Fatalize
Código
Explicación
Ejemplos
fuente
atom_codes
parte usando las comillas inversas que delimitan los códigos de cadena (para que pueda reemplazar directamente L en la llamada deb
con la cadena).b([A,_|T],[H]):-A=H,writef('%s',[T]);b(T,[H]).
lugar de 2 reglas diferentes parab
es 7 bytes más corto. Por lo general, siempre es más corto fusionar todas las reglas en una sola con OR en;
lugar de escribir varias reglas, porque evita repetir el nombre y los parámetros del predicado y también evita unBefunge, 122 bytes
Ha sido probado aquí: Befunge-93 Intérprete.
Cómo 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'
es empujado en la pila.@ZVD0FHJ:LNP^\<>,2B48X.T6R
empuja el número de valores a descartar (codificados ) N.Note
I picked the encoding so the string starts with
@
in order to overlap with the program. This string is generated with the following python code:fuente
Mumps - 102 Bytes
Golfed script:
Ungolfed and commented:
The rule allowing extra newlines saved me almost 10 bytes...
fuente
Java - 107 bytes
Ungolfed with wrapper-class reading from System.in
If spaces at start-of-line were acceptable, we could go down to 99 bytes:
fuente
Python 2,
586763 bytes ##Takes input as a string or char. Splits the string at the input and prints off everything after the split.
(First time code-golfing, please be gentle :P )
EDIT: Didn't see the additional spaces required between characters, added now
EDIT 2: Modified to be an anonymous lambda function and removing the additional split arg, saving 4 bytes
fuente
print
, but it seems that this doesn't print the spaces between each pair of letters."f"
.)lambda s:...
. I think the split doesn't need an arg of1
, since the character appears only once. This outputs spaces at the start of succeeding lines, not sure if that's allowed.Ruby,
59 5767 bytesAdded spaces between letters
fuente
nil
. Which is not a problem itself, but will cause you problems when finishing your code to add spaces between the letters.JavaScript, 88 bytes
(no need in the space after the first char, as it never gets to the output)
Alerts the keyboard when you call
s("some letter")
. Can be also made withdocument.write()
orconsole.log()
, but hey, it's longer :PDemo:
fuente
\n
instead of;
in the string and getting rid of the replace.SQL (MS T-SQL), 172 bytes
Ungolfed:
I'm new here, only just discovered this site. No idea if I've posted correctly or if T-SQL is allowed but I know the procedure above works.
fuente
O 2.2,
4846 charactersSample run:
O, 61 characters
Sample run:
fuente
"qwertyuiop\nasdfghjkl\nzxcvbnm\n"i/r;s{n.'\n=ST?}d
only works on the new interpreter but is 51 bytes.git submodule update --init
, thenmake
Japt,
4942414038 bytesJapt is a shortened version of JavaScript. Interpreter
The
?
should be the unprintable Unicode char U+0086.How it works
Now beating CJam! :) Suggestions welcome!
Non-competing version, 12 bytes
As of Jan 11, I've added a cool new feature to Japt: If the program contains a leading comma, the variables
ABCDEFGHIJL
are redefined to various values.D
is set to"QWERTYUIOP\nASDFGHJKL\nZXCVBNM"
, so;Dv
is enough to replace the string here.fuente
Gema, 56 characters
Sample run:
fuente
8086 machine code + DOS, 61 bytes
Hexdump (with ASCII view on the right):
Assembly source code (can be assembled with tasm):
Two fun things here:
qwerty
string is0x011e
. The upper byte of it is 1, which is the DOS function number for character input. This saves 1 byte in the code.AND
with0x20
, they are all turned into a space, which is then printed. If the previous char was an end-of-line byte, it gets turned into 0, and no space is output. This is used to avoid the nonsensical sequence0d 20 0a 20
at end of line.One almost-fun thing:
I tried to search for the input char starting at address 0 (that decreased program size by 2 bytes), instead of the usual place (start of the string). This almost worked; however, it failed for input
t
, because the code itself contains the bytet
(as part of the encoding of a conditional jump). So fort
, it would output a few junk bytes:fuente
𝔼𝕊𝕄𝕚𝕟, 32 chars / 79 bytes
Try it here (Firefox only).
At least I'm winning in char count... (Byte count's a different story.)
Oh yeah, just realized that I implemented index shortcuts (
⎖1
instead of[1]
) awhile back. Silly me!fuente
C++,
129, 11297 bytesUngolfed:
fuente
puts
instead ofstd::cout<<
#include
forputs
, but evidently I do not!strstr
was a thing.<stdio.h>
forstrstr
.Batch, 206 + 2 = 208 bytes
Because this uses delayed expansion you need to invoke it with
CMD /V /C keyboard.cmd <letter>
, so adding12 for the/V
switch.fuente
cmd
would accept it as/VC
, like POSIX tools do. But as I know/V
requires its own/
, which also gets counted.Python, 109 bytes
I know its a bit large but its all I know how to do right now!
fuente
kb()
at the end; defining the function is enough. Also, 1 space of indentation is enough. After making these changes, I get 108 bytes, using this site.Bash, 80 bytes
Try it yourself, either replace $1 with desired character or make a #!/bin/bash script.
Here are some samples from cygwin:
It's not the shortest, but I'm still proud of it!
fuente