Nesta tarefa, você pode criar um programa útil para fazer qualquer coisa que possa escrever com 100 caracteres. Você tem permissão para usar menos caracteres, mas não mais.
Regras, apenas para se proteger de brechas comuns que não são mais engraçadas:
Seu programa não pode acessar a Internet, a menos que seja realmente necessário. Por exemplo, o programa que mostra a pergunta mais votada neste site pode usar a Internet para verificar essa pergunta. No entanto, não é permitido navegar na Internet para encontrar sua fonte real e executá-la.
Seu programa não pode ser um intérprete para o idioma em que foi escrito. No entanto, o intérprete Brainfuck em um idioma não-Brainfuck seria bom.
Seu programa não pode executar programas externos que fazem exatamente o que o seu programa faz. Por exemplo, você não pode executar
vim
e afirmar que seu programa évim
implementação.Seu programa não pode ser perigoso para o computador em que está sendo executado e para outros computadores. Você não tem permissão para escrever programas como
rmdir /
(o exemplo aqui intencionalmente não funciona, não o conserte) e afirma que é um programa útil para remover todos os arquivos no computador.Seu programa pode ser tão lento quanto você deseja e usar tantos recursos quanto você quiser, desde que você possa provar que faz o que deveria.
Você não tem permissão para criar um idioma específico para esta tarefa. No entanto, você tem permissão para criar intérpretes para a sua linguagem inventada em alguma outra linguagem de programação.
fonte
Respostas:
C - 47 bytes
O programa a seguir gera todos os documentos já escritos na história da humanidade, juntamente com todos os documentos que serão escritos e vários textos interessantes que nenhum ser humano jamais apresentou (junto com um "pedacinho" de lixo entre eles). Apenas dê um tempo. Além disso, toda vez que você executá-lo, ele produzirá textos diferentes primeiro! Se isso não for útil! (E tudo isso dentro da metade do limite de caracteres!)
Se você não se importa com a saída de algo a cada vez, precisa apenas de 41 bytes !
Não é bem compatível com o C99, mas compila sem problemas
gcc.exe (GCC) 4.7.0 20111220
.O estado das regras
Sem problemas.
Algumas coisas, este programa produzirá:
Como observa Dennis, a aleatoriedade do algoritmo pode ser um pouco melhorada (dentro do limite de caracteres), usando em
rand()^rand()>>16
vez derand()
.fonte
rand()
é apenas pseudo-aleatório - ele pode não produzir nenhum texto útil antes que ele circule.x
, você temx[i] == (x[i - 3] + x[i - 31] + c[i]) % 256
, ondec[i]
é 0 com probabilidade 0,75 e 1 com probabilidade 0,25. Isso significa que ele não pode gerar nada do que você mencionou.rand()^rand()>>16
vez de simplesrand()
. Se você estiver procurando maneiras de economizar em bytes, removaint
e%256
.unsigned char
quando gravado.BBC BASIC, 84 caracteres
Traça as soluções para equações diferenciais de primeira e segunda ordem.
Toma como entrada do usuário:
Inspirado por um software de solução de equações diferenciais chamado Polymath, que eu usei quando estudava para ser um engenheiro químico. Introduziríamos diferentes equações para reagentes e produtos e veríamos como todo o sistema de reação mudou ao longo do tempo. Um software muito simples (não muito mais complexo que isso), mas muito mais conveniente para esse propósito que o Excel. Infelizmente, não posso fazer um clone completo do Polymath em 100 caracteres.
fonte
Mathematica 76
Este programa constrói um applet que exibe informações sobre várias propriedades de qualquer um dos 240 países. Ele abre com informações sobre a população adulta do Afeganistão. O usuário pode alterar as configurações de país e propriedade por meio de listas suspensas.
O Mathematica interopera sem problemas com o WolframAlpha.
Por esse motivo, acredito que o envio atenda ao requisito nº 1 do desafio: "Seu programa não pode acessar a Internet, a menos que seja realmente necessário ".
Este miniaplicativo bastante modesto simplesmente faz uso da funcionalidade existente na linguagem Mathematica. Um pequeno vídeo fornece algumas informações adicionais sobre o applet.
Abaixo está uma lista das 20 primeiras (de 223) propriedades relacionadas a países. Com uma programação adicional, é possível obter informações adicionais sobre os países e analisar essas informações no Mathematica.
fonte
bash, 100 bytes
Este script imprime um fluxo de bytes criptograficamente seguro. É necessário um argumento opcional que especifica o número de bytes que deve ser impresso. Por padrão, a saída será infinita.
Útil nos casos em que a leitura
/dev/urandom
é muito lenta.Referência
Este script gera até 1,5 GiB por segundo no meu i7-3770.
Por outro lado, a leitura de
/dev/urandom
consegue gerar apenas 1 GiB por minuto .Como funciona
head -c${1--1} /dev/zero
gera a quantidade especificada de zero bytes. Se nenhuma quantidade for especificada, será${1--1}
igual a -1 e o cabeçote emitirá uma quantidade infinita.openssl enc -aes-128-ctr -pass file:/dev/random
usa o AES-128 no modo contador para criptografar os zero bytes, lendo a senha em/dev/random
.tail -c+17
se livra do cabeçalho de 16 bytes da saída.fonte
Javascript
Resolva qualquer equação (bem, não todas, mas deve funcionar com funções comuns ...)
Sem ES6 (105 caracteres):
Apenas dê o lado esquerdo da equação assumindo que o lado direito seja zero.
Exemplo:
r("x*x-9")
retorna3
r("Math.sin(x)-1")
retornos1.5707963394347828
(pi / 2)r("Math.pow(2,x)-512")
retorna9
Aviso: pode divergir em algumas funções (ou se não houver solução) e congelar a guia do navegador ou retornar o NaN.
fonte
C - 99 caracteres
Este programa permite criptografia e descriptografia de qualquer tipo de dados.
Uso
Primeiro ... compile-o!
Se você deseja criptografar o conteúdo
mypreciousdata.txt
com a chavemysecretkey
e armazene o resultado emmyprotecteddata.txt
:Agora, se você deseja recuperar o conteúdo decodificado de
myprotecteddata.txt
:Quanto mais longa a chave, mais segura!
Explicação
Encontre o código expandido e comentado abaixo:
fonte
char
tipo (geralmente 256).GolfScript
Consegui espremer isso em exatamente 100 caracteres!
Ele recebe a entrada de texto criptografado ROT-n e gera o texto decodificado. (Tirada daqui .) Por exemplo, quando recebida a entrada
pmttwxmwxtmwnxzwoziuuqvoxchhtmakwlmowtnabiksmfkpivom
, a saída é8hellopeopleofprogrammingpuzzlescodegolfstackexchange
.fonte
Javascript
Para gerar um ID exclusivo em javascriptProduz algo como:
'h9d2f4aniimma7h1d3pbffi0foi8d3mf'
cadeias de 30 a 32 caracteres alfanuméricos
Produz algo como:
'uq2sze67hsacq5mi'
Cordas de comprimento 14-16.
fonte
C ++ 57
Este programa recebe uma entrada de caractere e gera seu valor ASCII.
fonte
,:
Fortran - 85 bytes
Lê um número e imprime a soma dos dígitos . Útil para problemas do Project Euler .
fonte