Um gatinho é muito parecido com um gato. Algumas das principais diferenças são fofura, falta de inteligência e tamanho. Da mesma forma, o cat
comando é diferente do kitten
comando. Felizmente, há apenas uma diferença neste caso. No comando kitten, todas as letras maiúsculas são substituídas por letras minúsculas.
Objetivo
Para implementar um programa que se comporta de maneira semelhante a cat
. Todos os caracteres [A-Z]
são emitidos em minúsculas.
Entrada
Uma lista de arquivos como argumentos de linha de comando. Se nenhum arquivo estiver listado, leia a partir da entrada padrão. A entrada pode conter caracteres não imprimíveis e caracteres fora do intervalo ASCII.
Resultado
Se a entrada for um monte de arquivos, concatene o conteúdo e produza todos os caracteres em minúsculas. Se estiver lendo STDIN, imprima o conteúdo de STDIN com todas as letras maiúsculas em minúsculas.
Nota: apenas coloque os caracteres em [A-Z]
minúsculas. É inaceitável se outros caracteres forem minúsculos.
Exemplos
$ echo "HelLo" > file.txt
$ kitten file.txt
hello
$ echo "Good Bye" | kitten
good bye
$ echo "Ä" | kitten
Ä
Como de costume no code-golf , o mínimo de bytes vence.
Classificação
Aqui está um snippet de pilha para gerar uma classificação regular e uma visão geral dos vencedores por idioma.
Para garantir que sua resposta seja exibida, inicie-a com um título, usando o seguinte modelo de remarcação:
# Language Name, N bytes
onde N
está o tamanho do seu envio. Se você melhorar sua pontuação, poderá manter as pontuações antigas no título, identificando-as. Por exemplo:
# Ruby, <s>104</s> <s>101</s> 96 bytes
Se você quiser incluir vários números no cabeçalho (por exemplo, porque sua pontuação é a soma de dois arquivos ou você deseja listar as penalidades do sinalizador de intérpretes separadamente), verifique se a pontuação real é o último número no cabeçalho:
# Perl, 43 + 2 (-p flag) = 45 bytes
Você também pode transformar o nome do idioma em um link que será exibido no snippet do placar de líderes:
# [><>](http://esolangs.org/wiki/Fish), 121 bytes
fonte
[A-Z]
letras minúsculas", você está antecipando a entrada Unicode?Ü
,Ñ
e os gostos?Respostas:
Perl, 6 bytes
Código de 5 bytes + linha de comando de 1 byte
Exemplo de uso:
Confirmação do comportamento correto do Unicode:
fonte
Bash, 19 bytes
A melhor maneira de fazer gatinhos é usar gatos de verdade.
Exemplo de execução
fonte
man woman
piadas ...Perl, 11 bytes
Código de 10 bytes + linha de comando de 1 byte
Exemplo de uso:
fonte
Python 3, 77 bytes
fonte
Ruby, 13 bytes
A contagem de bytes inclui 1 byte para o
p
sinalizador. Executá-lo assim:ruby -p kitten.rb
.Recebe informações dos argumentos stdin ou file, assim como o gato adulto.
fonte
Ä
?echo "HelloÉ" | ruby -p kitten.rb
->helloÉ
PowerShell, 112 bytes
Horrivelmente ilegível. Aqui está uma versão ligeiramente expandida abaixo:
Define uma função interna
l
que itera sobre um loop de 97 a 112 (ou seja, ASCIIa
para ASCIIz
). Divide a sequência de entrada sobre esse caractere (padrão sem distinção entre maiúsculas e minúsculas) e a junta novamente com a minúscula "correta". Observe que sim, isso significa que "Teste" se tornará brevemente "T st", pois está iterando noe
, por exemplo. Não afeta a saída.A segunda metade é a parte complicada de descobrir se temos entrada de pipeline (equivalente a stdin para PowerShell) ou entrada de linha de comando. A variável especial
$args
está presente apenas se a entrada da linha de comandos estiver presente; portanto, fazemos um loop sobre cada uma delasgc
(paraGet-Content
) e as reduzimos atél
. Caso contrário, nós apenas schlep nossa$input
atél
. Observe que poderíamos trocar nossas instruções if / else (ou seja,if($input)
), mas como "input" é um caractere mais longo que "args", dessa maneira é mais curto.fonte
"String".ToLower()
também minúsculos caracteres Unicode, o que é contra as regras. Há muitas coisas que o PowerShell não faz direito no que diz respeito ao Unicode, mas infelizmente essa é uma instância em que funciona corretamente.Python 2, 53 bytes
fonte
R, 97 bytes
Uso:
fonte
CoffeeScript , 292 bytes
Uso:
Minha primeira participação no codegolf, por favor, não seja rude :).
Com certeza, esse código pode ser jogado mais e o café / javascript não é a melhor opção para fazer isso, mas faz o que é esperado.
Quando ele lê argumentos, também se preocupa com a existência do arquivo (se o arquivo não existir, a sequência será criada).
Qualquer ajuda ou conselho para melhorar esse código é bem-vinda!
fonte
Julia, 123 bytes
Ungolfed:
fonte
CJam, 18 bytes
A lista de arquivos deve ser fornecida na forma de URLs, que é o único formato que o CJam entende.
Execuções de exemplo
Como funciona
fonte
Python 2,
10010297 bytesFuncionalidade corrigida (e 4 bytes adicionados) pelo matsjoyce. Felizmente, salvei dois bytes mudando para o Python 2.
Recebe argumentos da linha de comando ou de STDIN se nenhum argumento foi encontrado.
Isso abusa dos argumentos padrão de algumas funções. Por padrão,
open
usa o modo de texto somente leitura, que é exatamente o que queremos.read
, se chamado sem argumentos, retornará todo o texto no fluxo.Ungolfed:
fonte
input
avaliação, eu poderia mudar para o Python 2 e remover os parêntesesprint
.Python 3,
124123 bytesPython come gatinhos!
fonte
C,
106108 bytesEditar: corrigido um erro que aparecia ao espremer bytes. Stdin não estava trabalhando, agora está.
Tenho certeza de que conseguiria extrair alguns bytes, mas aqui está um envio fácil de entender, que não é abusivo em nenhum idioma:
E uma versão um pouco mais ordenada para leitura:
fonte
Mathematica, 66 bytes
Chamado como
O Mathematica já possui uma
ToLowerCase
função, mas também converte caracteres especiais (Unicode e matemáticos). Então eu tive que gatinhar. Esta função aceita qualquer entrada.fonte
C #,
230226 bytesUngolfed:
fonte
Haskell, 133
O processamento de args no estilo de gato é derivado deste tutorial e , em seguida, reorganizado para barbear caracteres.
Explicando
l
, a função para minúsculas um caractere:sum[32|condition]
é uma forma mais curta deif condition then 32 else 0
.[x..]!!count
éiterate succ x !! count
istoEnum $ fromEnum x + count
e menor que a importação e o usoData.Char.toLower
com uma condição para restringi-lo ao ASCII.'@'
e'['
são os caracteres imediatamente anterioresA
e seguintesZ
, para que eu possa usar em<
vez de<=
.Graças ao Anders Kaseorg para contribuir o
sum[...|...]
e[x..]!!
truques.fonte
l x=[x..]!!sum[32|x>'@',x<'[']
C #, 342 bytes
C #, 319 bytes
forro único, o mesmo que acima:
fonte
SILOS 179 caracteres
Sinta-se livre para experimentar este código online!
Essencialmente, isso se traduz em código pused.
fonte
C, 91 bytes
C, 98 bytes
Embora a legibilidade tenha mais do que bytes contados, a mesma lógica está escrita abaixo:
fonte
sed, 14 bytes
Corra com
env -i sed -f kitten.sed
.fonte
LANG=C sed -f kitten.sed
, não tenho certeza se devo aplicar uma penalidade por isso. Esta pergunta não especifica como contar chamadas de programa e não parece abordada na meta.s/.*/\L&/
para uma solução de nove bytess/.*/\L&/
es/./\L&/g
são realmente soluções de 9 bytes!Java, 198 bytes
Você é forçado a usar o lambda acima com arquivos, portanto, não há necessidade de receber informações do STDIN! Além disso, é um
Function<File[], UnaryOperator<String>>
. É usado comofoo.apply(anArrayOfFiles).apply(anything)
.Como algo que faz mais sentido para quem é novo em Java, são necessários 223 bytes:
Como algo que compila, ocupa 232 bytes:
fonte