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 cat
comando es diferente del kitten
comando. 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 N
está 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 woman
chistes ...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
p
bandera. 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
l
que itera sobre un bucle de 97 a 112 (es decir, ASCIIa
a 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
$args
solo 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$input
hastal
. 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,
open
utiliza 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
input
no 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
ToLowerCase
funció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..]!!count
es yiterate succ x !! count
estoEnum $ fromEnum x + count
más corto que importar y usarData.Char.toLower
con una condición para restringirlo a ASCII.'@'
y'['
son los caracteres inmediatamente anterioresA
y 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&/g
son 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