Code-Bowling Challenge
Escreva um programa ou função que produza a mesma saída, não importa como você reorganiza o código-fonte. (A saída não pode ser um erro)
Pontuação do Pangram
Sua pontuação é a quantidade de caracteres únicos no seu código-fonte.
Um programa com código fonte
AJB
teria uma pontuação de3
Um programa com código fonteAAJ
teria uma pontuação de2
Um programa com código fonte111
teria uma pontuação de1
Esta é uma variante do código-boliche . O programa com a maior pontuação vence!
(Para sua conveniência, uma ferramenta de pontuação automatizada foi criada aqui )
Regras do Desafio
Entrada
O programa / função pode receber uma entrada, embora seja totalmente opcional.Saída
Essa saída pode ser o que você quiser, mas deve ser nula, nula, vazia e sem erro. (Portanto, a saída deve ter pelo menos 1 byte)- Reorganização
Não importa como o código-fonte é reorganizado, a saída deve ser a mesma.
Exemplo:
Programa:ABJ
saídashello world
, assim como programas: [AJB
,JAB
,JBA
, etc.]
Esta é uma variante do código-boliche . O programa com o maior número de caracteres vence!
fonte
0
para sempre?)Respostas:
Língua, 1.112.064 pontos se UTF-8
Meu programa consiste em todos os caracteres UTF-8 possíveis. Ele imprime "Hello world" e usa 1,75 * 1076 yottabytes de espaço.
(Para gerar o programa, basta criar um arquivo com 17498005810995570277424757300680353162371620393379153004301136096632219477184361459647073663110750484 caracteres, garantindo que cada caractere UTF-8 possível esteja no arquivo)
fonte
Muitas línguas, 2 pontos
Produz
0.0
como0.
ou.0
. Requer análise de número liberal que esteja OK com um ponto decimal no início ou no final, assumindo 0 para a parte integral ou decimal ausente.0000000.
daria a mesma pontuação.Isso também funciona nos seguintes idiomas (em alguns casos, com uma saída diferente, conforme indicado):
ans = 0
)ans = 0
)0
)0
)0
)Para Python, acho que essa é a única maneira de obter uma pontuação acima de 1, pois as possibilidades podem ser esgotadas.
[](){}
um exige uma partida e falhará se a final vier primeiro,
não pode ser o primeiro caractere#
colocado em primeiro lugar comentaria tudo e não produziria saída\
é uma continuação de linha inválida$
,!
,?
, E@
não pode ser usado sem outros caracteres inutilizáveisIsso deixa letras, dígitos
_
,.
e citações._
cria nomes de variáveis, dos quais sempre existe alguma permutação.Os dígitos das folhas e
.
. A permissão de dígitos diferentes fornece um número diferente, a menos que todos os dígitos sejam0
. Então, acho que zera e.
é a única maneira de obter uma pontuação acima1
. Mas, eu não conheço bem o lexer do Python, então poderia estar faltando alguma coisa.fonte
CJam , pontuação 15
Experimente online!
Sempre imprime
0000
:0
apenas empurra um zero.T
,U
,V
São variáveis que são pré-inicializados a zero.L
,M
,O
,Q
,R
São variáveis que são pré-inicializados para uma lista vazia, para que eles não aparecem na saída.[
e]
pode ou não agrupar as coisas em uma lista, mas elas não precisam ser correspondidas corretamente e a saída é nivelada para impressão de qualquer maneira.q
lê a entrada que está vazia e, portanto, também não aparece na saída.fonte
r
ser adicionada realizando algo semelhante à minúsculaq
?MATL ,
356 pontosA idéia de adicionar espaço em branco foi retirada da resposta de Bijan .
O código, ou qualquer permutação do mesmo, gera três separados por novas linhas.
Experimente online!
Explicação
l
por padrão empurra o número um para a pilha.1
faz o mesmo.T
impulsostrue
, que é exibido como um número.v
concatena toda a pilha até agora em um vetor de coluna. Assim, por exemplo,v
depoisT
concatenaria os dois primeiros números em uma coluna (e o próximo número seria pressionado). Uma inicialv
produziria uma matriz vazia.No final do código, a pilha é exibida implicitamente, com as seguintes regras:
Portanto, qualquer permutação dos caracteres de entrada produz
1
três vezes em linhas diferentes.fonte
Removing any part of the source code however should cause that specific output to not be produced.
no momento em que você postou, não queria adicioná-lo e foi removido. Talvez isso irá ajudá-lo a aumentar a pontuação um pouco, possivelmenteGeléia , pontuação
53101Usando apenas personagens que fazem parte do Jelly's página códigos .
Jelly tem entrada implícita de
0
e a primeira metade (até e inclusiveạị«»
) da cadeia de código acima consiste principalmente em átomos monádicos (maiúsculos) e diádicos (minúsculos e símbolos) que, quando recebem um zero ou uma lista contendo apenas um zero ( ou duas dessas entradas no caso de díades) retornam um zero ou uma lista contendo apenas um zero.As exceções são:
O espaço: é ignorado (mesmo que esteja na página de código).
O pilcrow,
¶
separa links (assim como um feed de linha - mas esse é realmente o mesmo byte), mas nenhum outro bytes fará referência ao código antes mesmo.o escaravelho,
¤
instrui o analisador a tratar tudo à sua esquerda, começando em uma nilada (ou constante) como uma constante (e funciona como um primeiro átomo).o dólar,
$
instrua o analisador a tratar os dois links à esquerda como mônada (e, de maneira surpreendente, funciona como um primeiro átomo)o iene, da
¥
mesma forma instrui o analisador a tratar os dois links à esquerda como díade.O recomendado,
®
lembra o valor do registro, inicialmente0
(seus direitos autorais equivalentes©
, quebram quando usado como o primeiro átomo, pois é uma aridade, é encontrado na aridade do link à esquerda, que ainda não está definido).O código dos parênteses,
(
e assim por)
diante, são pontos de código não utilizados no momento, todos são analisados e cada um causa uma nova cadeia (assim como uma nova linha, embora eles não tenham o efeito de criar links que podem ser chamados como uma nova linha, mas aqui não há problema, pois nada tenta fazê-lo).fonte
TI-Basic (série 83), 93 pontos (99 em uma TI-84 Plus)
Todos os dígitos, todas as variáveis de um byte (incluindo θ e n , as variáveis independentes para gráficos polares e sequencial), as constantes de pi, e , e i , alguns não muito variáveis (
Ans
,rand
, egetKey
), e 59 diferente variáveis de janela (todas com garantia de definição).A multiplicação implícita garante que o resultado será 0 quando o recebermos em qualquer ordem. Se isso estiver sendo executado em uma calculadora nova, todas as variáveis serão 0; mesmo se não,
getKey
será 0 porque não há tempo para pressionar uma tecla antes que o programa retorne um valor.Em uma TI-84 Plus ou superior, podemos obter mais 6 pontos, adicionando os tokens
getDate
,getTime
,startTmr
,getDtFmt
,getTmFmt
,isClockOn
. O resultado agora sempre será{0 0 0}
porquegetDate
e asgetTime
listas de retorno de comprimento 3 e a multiplicação implícita são distribuídas pelos elementos.Eu acho que esses são todos os tokens possíveis de usar: qualquer comando real é prefixo, infixo ou postfix (o que significa que não funcionará no início ou no final do programa) e outras variáveis podem ser indefinidas (e causar um erro quando usava).
fonte
(não concorrente) Brainf-ck, 63 bytes
Bem, eu não sei se isso é considerado trapaça, mas ...
O ponto imprime o caractere atual (0x00) e o restante dos caracteres não faz nada. Tecnicamente, isso pode ser expandido infinitamente; portanto, deixe-me saber se isso é considerado trapaça.
fonte
Haskell, 3 pontos
Não importa quão reorganizado esse código sempre retorne a função que incrementa a entrada. Exemplos de uso em repl:
fonte
√ å ı ¥ ® Ï Ø ¿ , 128.234 (?) Pontos
Cheguei a 128.234 com a ajuda de @DestructibleLemon. Este programa usa todos os caracteres Unicode (128.237)
o
, excetoO
eł
. Curiosamente, dois desses são comandos de saída.Certamente, porém, nenhuma linguagem poderia usar todos esses caracteres, certo? Bem, essa linguagem simplesmente ignora os comandos que não reconhece. Problema resolvido.
Esse idioma, por padrão, gera o seguinte:
que é nulo, nulo, não vazio e sem erro.
Nota: se isso violar alguma regra não escrita, notifique-me nos comentários e eu alterarei isso. Se você conhece minha pontuação (supondo que isso seja permitido), também poste nos comentários.
fonte
J, 3 bytes
Os caracteres 1, espaço e nova linha sempre imprimirão 1.
fonte
/// ,
12 pontosExperimente online!
Não tenho idéia de como fazê-lo em qualquer outro idioma completo de Turing. Claro, existe o HQ9, mas isso parece barato.
1 byte graças a @Martin Ender.
fonte
Pontos , 1.114.111 caracteres (se estiver usando unicode).
<87 dots here> Every Unicode character except NUL and . here
Explicação:
Portanto, a sequência binária resultante é
1010111
, que convertida em decimal é 87, então precisamos de 87 pontos.Como qualquer outro caractere é um comentário, usamos todos os caracteres, exceto um NUL, porque o Python3 para de ler o arquivo e um ponto, porque os pontos não são comentários.
fonte
Prelúdio , pontuação 1.112.051
(Ao considerar apenas o ASCII imprimível
[\t\n -~]
, a pontuação é 84. Se considerarmos todos os pontos de código Unicode , a pontuação é 1.112.051 .)(adicione todos os caracteres
[\u{7f}-\u{10ffff}]
depois dele.)Sempre imprima
0
.Prelude é uma linguagem paralela baseada em pilha, onde a pilha é pré-preenchida com números infinitos de 0s.
+
: Coloque dois valores (sempre 0), adicione-os (0) e empurre para empilhar.-
: Coloque dois valores (sempre 0), subtraia-os (0) e pressione para empilhar.#
: Coloque um valor e descarte-o.!
: Exibe um valor e o gera como um número (sempre 0) (a especificação diz "caractere", mas o intérprete diz "número"; em ambos os casos, um byte é impresso)0
: Empurra 0.^
,v
,V
: Empurra o valor superior dos próximos programas anteriores / paralelas ( "vozes"), mas as pilhas de todas as "vozes" são preenchidos com 0, para que eles sempre empurrar 0.Portanto, existem apenas 13 caracteres que precisamos evitar:
(
,)
: Parênteses não emparelhados causarão erro1
-9
: queremos apenas produzir 0.?
: Não queremos inserir nada.*
: Causa uma verificação de consistência muito complicada do código antes e depois de uma linha que consiste em um único*
. Então, precisamos remover a nova linha ou remover o*
. A implementação de referência usa Python 2.readline()
que uma "nova linha" pode significar\r
ou\n
. Portanto, é melhor apenas remover o*
.fonte
Peixe morto , pontuação 86
Se isso é ilegal, também há
(pontuação 1)
fonte