Un gatito es muy parecido a un gato. Algunas de las principales diferencias son ternura, falta de inteligencia y tamaño. Del mismo modo, el catcomando es diferente del kittencomando. Afortunadamente, solo hay una diferencia en este caso. En el comando gatito, todas las letras mayúsculas se reemplazan con letras minúsculas.
Objetivo
Para implementar un programa que se comporta de manera similar a cat. Todos los caracteres se [A-Z]muestran en minúsculas.
Entrada
Una lista de archivos como argumentos de línea de comando. Si no hay archivos en la lista, entonces lea desde la entrada estándar. La entrada puede contener caracteres no imprimibles y caracteres fuera del rango ASCII.
Salida
Si la entrada es un conjunto de archivos, concatene el contenido y muestre todos los caracteres en minúsculas. Si lee desde STDIN, muestre el contenido de STDIN con todas las letras mayúsculas en minúsculas.
Nota: Solo ponga los caracteres en [A-Z]minúscula. Es inaceptable si cualquier otro carácter está en minúscula.
Ejemplos
$ echo "HelLo" > file.txt
$ kitten file.txt
hello
$ echo "Good Bye" | kitten
good bye
$ echo "Ä" | kitten
Ä
Como es habitual con code-golf , gana menos bytes.
Tablas de clasificación
Aquí hay un fragmento de pila para generar una tabla de clasificación regular y una descripción general de los ganadores por idioma.
Para asegurarse de que su respuesta se muestre, comience con un título, usando la siguiente plantilla de Markdown:
# Language Name, N bytes
¿Dónde Nestá el tamaño de su envío? Si mejora su puntaje, puede mantener los puntajes antiguos en el título, tachándolos. Por ejemplo:
# Ruby, <s>104</s> <s>101</s> 96 bytes
Si desea incluir varios números en su encabezado (por ejemplo, porque su puntaje es la suma de dos archivos o desea enumerar las penalizaciones de la bandera del intérprete por separado), asegúrese de que el puntaje real sea el último número en el encabezado:
# Perl, 43 + 2 (-p flag) = 45 bytes
También puede hacer que el nombre del idioma sea un enlace que luego aparecerá en el fragmento de la tabla de clasificación:
# [><>](http://esolangs.org/wiki/Fish), 121 bytes
fuente

[A-Z]minúsculas", ¿anticipa la entrada Unicode?Ü,Ñy los gustos?Respuestas:
Perl, 6 bytes
Código de 5 bytes + línea de comando de 1 byte
Ejemplo de uso:
Confirmación del comportamiento correcto de Unicode:
fuente
Bash, 19 bytes
La mejor manera de hacer gatitos es usar gatos reales.
Ejecución de ejemplo
fuente
man womanchistes ...Perl, 11 bytes
Código de 10 bytes + línea de comando de 1 byte
Ejemplo de uso:
fuente
Python 3, 77 bytes
fuente
Rubí, 13 bytes
El recuento de bytes incluye 1 byte para la
pbandera. Ejecutarlo así:ruby -p kitten.rb.Toma información de los argumentos stdin o file, al igual que el gato adulto.
fuente
Ä?echo "HelloÉ" | ruby -p kitten.rb->helloÉPowerShell, 112 bytes
Horrendamente ilegible. Aquí hay una versión ligeramente expandida a continuación:
Define una función interna
lque itera sobre un bucle de 97 a 112 (es decir, ASCIIaa ASCIIz). Divide la cadena de entrada sobre ese carácter (yay no distingue entre mayúsculas y minúsculas), y vuelve a unirlo con la minúscula "correcta". Tenga en cuenta que sí, esto significa que "Prueba" se convertiría brevemente en "T st" a medida que se repitee, por ejemplo. No afecta la salida.La segunda mitad es la parte difícil de averiguar si tenemos entrada de canalización (equivalente a stdin para PowerShell) o entrada de línea de comandos. La variable especial
$argssolo está presente si la entrada de la línea de comandos está presente, por lo que hacemos un bucle sobre cada unogc(forGet-Content) y lo hacemos hastal. De lo contrario, simplemente arrastrar nuestra$inputhastal. Tenga en cuenta que podríamos intercambiar nuestras declaraciones if / else (es decir,if($input)), pero dado que "input" es un carácter más largo que "args", esta forma es más corta.fuente
"String".ToLower()también en minúscula caracteres Unicode, lo que va en contra de las reglas. Hay muchas cosas que PowerShell no hace bien con respecto a Unicode, pero desafortunadamente esta es una instancia que funciona correctamente.Python 2, 53 bytes
fuente
R, 97 bytes
Uso:
fuente
CoffeeScript , 292 bytes
Uso:
Mi primera participación en codegolf, así que no seas grosero :).
Seguro que este código se puede jugar más y coffee / javascript no es la mejor opción para hacerlo, pero hace lo que se espera.
Cuando lee los argumentos, también se ocupa de la existencia del archivo (si el archivo no existe, la cadena está en kit).
¡Cualquier ayuda o consejo para mejorar este código es bienvenida!
fuente
Julia, 123 bytes
Sin golf:
fuente
CJam, 18 bytes
La lista de archivos debe proporcionarse en forma de URL, que es el único formato que CJam entiende.
Ejecuciones de ejemplo
Cómo funciona
fuente
Python 2,
10010297 bytesFuncionalidad corregida (y 4 bytes agregados) por matsjoyce. Afortunadamente, guardé dos bytes al cambiar a Python 2.
Toma argumentos de la línea de comando o de STDIN si no se encuentran argumentos.
Esto abusa de los argumentos predeterminados de algunas funciones. Por defecto,
openutiliza el modo de texto de solo lectura, que es exactamente lo que queremos.read, si se llama sin argumentos, devolverá todo el texto en la secuencia.Sin golf:
fuente
inputno evaluar, pude cambiar a Python 2 y eliminar los paréntesisprint.Python 3,
124123 bytes¡Python come gatitos!
fuente
C,
106108 bytesEditar: se corrigió un error que se arrastraba al apretar bytes. Stdin no estaba funcionando, ahora lo está.
Estoy bastante seguro de que podría exprimir algunos bytes, pero aquí hay una presentación fácil de entender, nada abusiva del lenguaje:
Y una versión un poco más ordenada para leer:
fuente
Mathematica, 66 bytes
Llamado
Mathematica ya tiene una
ToLowerCasefunción, pero también convierte caracteres especiales (Unicode y matemáticos). Así que tuve que gatitarlo. Esta función tomará cualquier entrada.fuente
C #,
230226 bytesSin golf:
fuente
Haskell, 133
El procesamiento de args estilo gato se deriva de este tutorial , luego se reorganiza para afeitar los caracteres.
Explicando
l, la función para minúsculas de un carácter:sum[32|condition]es una forma más corta deif condition then 32 else 0.[x..]!!countes yiterate succ x !! countestoEnum $ fromEnum x + countmás corto que importar y usarData.Char.toLowercon una condición para restringirlo a ASCII.'@'y'['son los caracteres inmediatamente anterioresAy siguientesZ, de modo que puedo usarlos en<lugar de<=.Gracias a Anders Kaseorg para contribuir al
sum[...|...]y[x..]!!trucos.fuente
l x=[x..]!!sum[32|x>'@',x<'[']C #, 342 bytes
C #, 319 bytes
revestimiento simple, igual que el anterior:
fuente
SILOS 179 caracteres
¡Siéntase libre de probar este código en línea!
Esencialmente se traduce a esto en pusedocode.
fuente
C, 91 bytes
C, 98 bytes
Sin embargo, si la legibilidad importaba más que el conteo de bytes, la misma lógica se escribe a continuación:
fuente
sed, 14 bytes
Corre con
env -i sed -f kitten.sed.fuente
LANG=C sed -f kitten.sed, no estoy seguro de si debería aplicar una multa para dar cuenta de eso. Esta pregunta no especifica cómo contar las llamadas al programa, y no parece abordarse en meta.s/.*/\L&/para una solución de nueve bytess/.*/\L&/ys/./\L&/gson de hecho las soluciones de 9 bytes!Java, 198 bytes
¡Estás obligado a usar la lambda anterior con los archivos, por lo que no es necesario recibir información de STDIN! Además, es un
Function<File[], UnaryOperator<String>>. Se usa comofoo.apply(anArrayOfFiles).apply(anything).Como algo que tiene más sentido para aquellos que son nuevos en Java, se necesitan 223 bytes:
Como algo que se compila, ocupa 232 bytes:
fuente