Seu trabalho, caso opte por não recusá-lo, é escrever um programa que "golf" um pedaço de código fornecido no seu idioma de escolha.
Funcionalidade básica:
- Remover espaço em branco estranho
- Remover comentários
Funcionalidade 'avançada':
- Combinar declarações (
int x; int y; int z;
paraint x, y, z;
) - Use variações mais curtas das estruturas de controle básicas (
while(1)
é substituído porfor(;;)
) - Mover código
i = 0; while(i < 10) { /* ... */ ++i; }
para ( parafor(i = 0; i < 10; ++i) { /* ... */ }
) - Etc
popularity-contest
metagolf
Mateen Ulhaq
fonte
fonte
Respostas:
Python com Python
Faz várias coisas, incluindo renomear variáveis, livrar-se de espaços em branco e comentários desnecessários e colocar o máximo possível em uma linha. Nem sempre funciona completamente com a sintaxe python mais sofisticada e continuarei atualizando com quaisquer correções.
Código:
Testei em um antigo programa de desenho fractal que eu tinha ( 4672 a 1889 ):
Original:
Golfe:
Execute sozinho (criando uma solução muito longa) ( 9951 a 5323 ):
fonte
import*
vez deimport *
. Eu estou supondo que funcionará em Python 2 também?BrainFuck - 489 caracteres
Remove todos os caracteres não executáveis. Respeita os comentários de # até o final da linha.
Naturalmente, execute-se a partir desta fonte:
fonte
<>
que não faz nadaJogador de golfe Brainfuck em Bash (v3)
Este é um trabalho em andamento, continuarei atualizando-o, se puder.
Lê de um arquivo (o nome do arquivo deve ser o primeiro argumento da linha de comando).
Por enquanto tudo o que faz é
<>+-.,[]
<>
,><
,+-
,-+
>>>><<<<<
reduzido para<
Código
Como funciona
Depois de remover todos os caracteres não executáveis, ele faz o seguinte. O contador de hits é definido
-1
no início - conta quantas operações de golfe foram realizadas cada vez que o loop externo é executado.<>
,><
,+-
ou-+
, adicione 1 aohits
balcão e voltar ao passo 1.fonte
Jogador HQ9 + em Bash (v3)
Sei que o HQ9 + é inútil, mas é melhor enviar um formulário de cinco linhas para ele. Lê de
entrada padrãoum arquivo. O caminho para o arquivo deve ser o primeiro argumento da linha de comando.Recursos
HhQq9+
)+
(incrementa um número, mas não há como imprimir esse número)hq
para maiúsculas (não golfe)Código
fonte
/dev/stdin
como o primeiro argumento :)Java com Java
Pega o nome do arquivo como um argumento de linha de comando e edita o arquivo no local.
while(true)
parafor(;;)
private
efinal
Quando o programa é executado sozinho, seu tamanho é reduzido de 7792 para 4366.
fonte
Perl, partes 1 - 2
(remove comentários e ignora
#
caracteres entre aspas duplas)(remove todo o espaço em branco após colchetes e
=
sinais)Eu não tentei jogar golfe nesse código. Talvez, quando estiver pronto, possa jogar golfe sozinho.
Exemplo de entrada
Saída
Em seguida, ele eliminará espaços entre símbolos e caracteres alfanuméricos.
fonte
Jogador de golfe Java em Perl
WIP no momento, apesar de obter um código bastante agradável no momento.
Recursos:
Código
fonte