Dada una cadena de entrada que solo contiene los caracteres A-Z, a-zy 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 Aeliminar todos los Asy as, 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 hreeProgramming Puzzles and Code Golf->rogramming uzzles and Code GolfHow 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->helloworldwelcome 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
substrpero 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.titlepara 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
flagsparámetro específico de Mozilla.CoffeeScript,
3937 bytes¡Por una vez es más corto en JS que CoffeeScript!
fuente
newes 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
-popción. Ah, y usando en$&lugar de$1.fuente
#!perl -psigue siendo dos bytes más corto que$_=<>;print.-popció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^Erepresenta 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
Xbarra 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*empuja32si el carácter era una letra mayúscula, de lo0contrario.+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*empuja34si la pila compartida está vacía, de lo0contrario. 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.0y la ejecución continúa:Sicambia a la pila compartida e ingresa otro carácter..1+!24*empuja24si ese personaje era -1 / EOF, de lo0contrario. En EOF, se(traga 24 caracteres, incluida la IP, y la serpiente muere. De lo contrario, la ejecución continúa.Ytira 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, presionando2si es así y0si 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.yrecuperamos el carácter de la pila de la serpiente 2, loopronunciamos 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
hnecesita 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"xy0Copie la macro en el registrox7|Moverse al séptimo personaje@xEjecute la macro desdex2|~Cambia la caja del primer personaje (en realidad en la segunda posición)0"xd7|Cortar la macro en el registrox@xEjecute la macro desdex0xRetire el marcador de posición.fuente
:DSiempre 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
AsmPrgmFDCB24DEC9y 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)%32a**v-c&31.C ++,
1009998 bytesSolo un byte más para obtener menos de 100.
getchar()devoluciones-1cuando lee el final de la transmisión, por eso es que~está enforciclo. (~-1 == 0)Sin golf
fuente
&&putchar(c)lugar de?putchar(c):0?f-c&31como 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 longituday 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
-sbandera.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
ivueltas 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