Dada una cadena de entrada que solo contiene los caracteres A-Z
, a-z
y espacios, elimine todas las apariciones de las versiones en mayúsculas y minúsculas del primer carácter de la cadena (si el primer carácter es A
eliminar todos los A
sy a
s, si el primer carácter es (espacio) eliminar todos los espacios) e imprima la salida.
Ejemplos de casos:
Testing Testing One Two Three
->esing esing One wo hree
Programming Puzzles and Code Golf
->rogramming uzzles and Code Golf
How much wood would a woodchuck chuck if a woodchuck could chuck wood
->ow muc wood would a woodcuck cuck if a woodcuck could cuck wood
{space}hello world
->helloworld
welcome to WATER WORLD
->elcome to ATER ORLD
Este es el código de golf , el código más corto en bytes gana.
Notas:
- La entrada siempre será de 2 o más caracteres válidos.
- La salida nunca será una cadena vacía.
Respuestas:
Pyth, 7 bytes
Pruébelo en línea: Demostración o conjunto de pruebas
Agradable. El nuevo operador bifurcado (solo 8 días de antigüedad) ayuda aquí a ahorrar un carbón. Creo que este es el primer código que usa esta función.
Explicación
fuente
brainfuck, 219 bytes
(Requiere cinta que permita que el puntero vaya a los negativos o bucles hasta el final si lo intenta. También requiere
,
devolver 0 en EOF. En mi experiencia, la mayoría de los intérpretes cumplen estos requisitos de forma predeterminada).¡Esto en realidad resultó ser bastante fácil! No me sorprendería si es golfable (tengo alguna idea de dónde podría haber bytes desperdiciados, pero no estoy muy seguro de si funcionará). Aún así, hacerlo funcionar no fue realmente un desafío en absoluto.
Este código trata todo con un valor ASCII por debajo de 97 como un carácter en mayúscula. Si el primer carácter es el espacio, intentará eliminar cualquier aparición de un "espacio en minúscula" (es decir
chr(32+32)
, es decir@
) de la cadena. Esto está bien, porque solo las letras y los espacios estarán presentes.Con comentarios:
fuente
Perl, 13 bytes
Contando el shebang como uno, la entrada se toma de stdin.
Uso de muestra
fuente
substr
pero por supuesto se te ocurrió una forma mucho mejor!perl -p script.pl
. Las opciones de línea de comando se cuentan habitualmente como un byte cada una, al menos en este sitio.CJam, 8 bytes
Pruébelo en línea en el intérprete de CJam .
Cómo funciona
fuente
~
embargo, se llama .)Pyth, 8 bytes
Pruébalo en línea
Utiliza la versión de Python de Python
str.title
para convertir una cadena de la primera letra dos veces en el formulario"<Upper><Lower>"
. Luego, elimina cada elemento de la entrada que está en esa cadena. Los espacios funcionan bien porque no se ven afectados por ellosstr.title
.fuente
MATLAB, 28 bytes
fuente
JavaScript (ES6),
3836 bytesEsto no depende del
flags
parámetro específico de Mozilla.CoffeeScript,
3937 bytes¡Por una vez es más corto en JS que CoffeeScript!
fuente
new
es opcional, por lo queRegExp(x[0],'gi')
es más corto.PHP, 41 bytes
Toma un argumento de línea de comandos . Las etiquetas abiertas cortas deben estar habilitadas para PHP <5.4.
fuente
$argv[1]
:<?=str_ireplace(($a=$argv[1])[0],'',$a);
Perl, 27 bytes
Este es un programa completo, aunque solo se basa en 2 expresiones regulares que probablemente podrían copiarse en un programa Retina para guardar bytes en E / S.
Editar: Parece que esto ya ha sido golpeado con alguien que usa la
-p
opción. Ah, y usando en$&
lugar de$1
.fuente
#!perl -p
sigue siendo dos bytes más corto que$_=<>;print
.-p
opción. Realmente no hay modificaciones que pueda hacer a mi respuesta sin hacerla idéntica a la suya.Minkolang 0.9 ,
2333 bytesDe ninguna manera esto ganará, pero eh, ¡es divertido!
Pruébalo aquí
Explicación
(Esto puede fallar en algunos casos extremos, como si el primer carácter es un símbolo).
fuente
TECO ,
1514 bytes¿Edición de texto? En caso de duda, utilice el editor de texto y el corrector.
Después de mucho ensayo y error (principalmente error), creo que este es el programa TECO genérico más corto que hará el trabajo.
O, en forma legible por humanos
$
representa la tecla de escape, y^E
representa la secuenciaCTRL
+E
. Dependiendo del sabor de TECO que esté usando, puede reconocer estas sustituciones ASCII, o puede que no.De acuerdo con el manual, algunos dialectos de TECO aceptan esta versión de 13 bytes (usando un comando de buscar y eliminar en lugar de los comandos separados "buscar" y "eliminar") en su lugar:
fuente
Pip, 8 bytes
Toma la cadena como un argumento de línea de comandos (deberá ser citado si contiene espacios). Explicación:
Esta solución tiene la ventaja adicional de trabajar en cadenas que contengan cualquier caracteres ASCII imprimibles. (La
X
barra diagonal inversa del operador escapa a todo lo que no sea alfanumérico).fuente
Python, 66 char
fuente
Julia, 34 bytes
Esto crea una función sin nombre que acepta una cadena y devuelve una cadena. Construye una expresión regular que no distingue entre mayúsculas y minúsculas a partir del primer carácter en la entrada y reemplaza todas las apariciones de eso con una cadena vacía.
fuente
Mathematica, 47 bytes
fuente
R, 43 bytes
Este es un programa completo que lee una línea de STDIN y escribe el resultado modificado en STDOUT.
Sin golf:
fuente
Rubí, 25 bytes
Función anónima:
Programa completo, 29 bytes:
fuente
Python, 61 bytes (demasiados)
Me imagino que hay una mejor manera de hacerlo, pero parece que no puedo encontrarlo. ¿Alguna idea sobre cómo eliminar el
"".join(...)
?fuente
x[0]+x[0].swapcase()
.(x[0]*2).title()
.lambda x:x.replace(x[0].upper(),'').replace(x[0].lower(),'')
- 60 bytesOuroboros , 61 bytes
¡Hola, es más corto que C ++! Decir ah.
En Ouroboros, cada línea del programa representa una serpiente con la cola en la boca. El flujo de control se logra comiendo o regurgitando secciones de la cola, con una pila compartida para sincronizar entre las serpientes.
Serpiente 1
i.
lee un carácter de entrada y lo duplica..91<\64>*32*
empuja32
si el carácter era una letra mayúscula, de lo0
contrario.+
Al convertir esto en caracteres, las letras mayúsculas se convierten en minúsculas y se dejan las letras minúsculas y los espacios sin cambios. Todo esto ha tenido lugar en la pila de la serpiente 1, por lo que ahora enviamos el valor a la pila compartida (m
) para que la serpiente 2 lo procese. Finalmente,1(
come el último personaje de la cola de la serpiente 1. Como ahí es donde está el puntero de instrucción, la serpiente muere.Serpiente 2
)
no tiene efecto la primera vez.L!34*
empuja34
si la pila compartida está vacía, de lo0
contrario. Luego nos.
duplicamos y(
comemos tantos personajes.(
que acabamos de ejecutar. Por lo tanto, los bucles de control vuelven al principio de la línea, donde)
regurgita los caracteres que acabamos de comer (habiendo empujado previamente una copia adicional de34
) y repite la prueba de longitud de la pila.0
y la ejecución continúa:Si
cambia a la pila compartida e ingresa otro carácter..1+!24*
empuja24
si ese personaje era -1 / EOF, de lo0
contrario. En EOF, se(
traga 24 caracteres, incluida la IP, y la serpiente muere. De lo contrario, la ejecución continúa.Y
tira de una copia de la parte superior de la pila compartida (el personaje que acabamos de leer) a la propia pila de la serpiente 2 para uso futuro. Luego.@@.@=@.@32-=\@+2*
calcula si el nuevo personaje es igual al primer personaje o al primer personaje menos 32, presionando2
si es así y0
si no. Hemos.
duplicado y(
comemos ese número de caracteres:(
regurgita los 2 personajes que acabamos de comer y la ejecución continúa con el siguiente personaje.y
recuperamos el carácter de la pila de la serpiente 2, loo
pronunciamos y luego hacemos un bucle.Véalo en acción
Mostrar fragmento de código
fuente
C, 60 bytes
n,c,d;main(){for(;read(0,&c-n,1);n=2)d-c&31&&n&&putchar(d);}
Editar: se corrigió un error que causaba que se imprimiera un byte nulo al principio
fuente
Pitón 2, 43
Esto está algo basado en mi respuesta de Pyth, pero también está relacionado con algunos comentarios de ThomasKwa y xnor de aquí . Principalmente publicando porque quería que esta respuesta existiera.
fuente
Vim, 30 pulsaciones de teclas
Perdón por descubrir, pero no veo ninguna respuesta Vim D:
Explicación:
If<Right>xh@x.<Esc>
Escriba una macro (recursiva) alrededor del primer carácter
Se
h
necesita mover a la izquierda ( ) para permanecer a la izquierda del siguiente carácter no leído Se necesitaagregar cualquier carácter (
.
) al final en caso de que se deba eliminar el segundo"xy0
Copie la macro en el registrox
7|
Moverse al séptimo personaje@x
Ejecute la macro desdex
2|~
Cambia la caja del primer personaje (en realidad en la segunda posición)0"xd7|
Cortar la macro en el registrox
@x
Ejecute la macro desdex
0x
Retire el marcador de posición.
fuente
:D
Siempre voté vim!Haskell, 52 bytes
fuente
r(h:s)=[c|c<-s,t c/=t h]
.TI-BASIC, 164 bytes
Para calculadoras gráficas de la serie TI-83 + / 84 +.
TI-BASIC es claramente la herramienta incorrecta para el trabajo.
No estoy 100% seguro, pero pasé más de seis horas en esto, y parece ser la solución más corta posible.
Para probar esto con entradas no mayúsculas (o para escribirlo en su calculadora), haga un programa diferente con el contenido
AsmPrgmFDCB24DEC9
y ejecúteloAsm([whatever you named it]
para habilitar el modo de escritura en minúsculas.fuente
Lua,
9378 Bytesfuente
Lisp común, 77
Maldecir estos nombres largos de funciones (y paréntesis (pero todavía los amo de todos modos (: 3))).
fuente
C,
6561 bytesCompila con advertencias. Lee una cadena de
argv[1]
. Ejemplo en líneafuente
main(int c,char**v)
amain(c,v)char**v;
, y(**v-c)%32
a**v-c&31
.C ++,
1009998 bytesSolo un byte más para obtener menos de 100.
getchar()
devoluciones-1
cuando lee el final de la transmisión, por eso es que~
está enfor
ciclo. (~-1 == 0
)Sin golf
fuente
&&putchar(c)
lugar de?putchar(c):0
?f-c&31
como en la respuesta C?AppleScript,
209201bytesMi único consuelo es que vencí a Brainfuck.
Cómo funciona esto es que tomo información
a
, obtengo la longituda
y la marco comon
, y establezco una variable de salidao
. Por cada carácter que encuentro que no contiene el primer carácter de a (a's character 1
), lo concateno cono
. La línea final se imprimeo
.Nota: Esto admite automáticamente todos los Unicode. do:
fuente
My only consolation is that I beat Brainfuck.
parece que será mejor que juegue al golf;)Retina , 16 bytes
Guarde el código con un salto de línea final y ejecútelo con la
-s
bandera.Cómo funciona: el avance de línea final hace que esta sea una etapa de reemplazo, de modo que cualquier coincidencia de la expresión regular dada se reemplace con una cadena vacía. Las
i
vueltas en el modo de mayúsculas y minúsculas que también hace referencias hacia atrás entre mayúsculas y minúsculas. Finalmente, la expresión regular simplemente coincide y captura un solo carácter y luego comprueba si el primer carácter de la cadena es el mismo (hasta el caso) utilizando una referencia inversa.fuente