Sua tarefa é escrever um programa, função ou snippet (sim, snippets são permitidos) que simplesmente produz um número inteiro. No entanto , você deve poder separar seu envio em prefixos que também produzam números inteiros distintos. Você não pode usar nenhum bytes que tenha aparecido em prefixos anteriores. Por exemplo, podemos ter os prefixos:
1 # 1 (Now we can't use 1)
1-6 # -5 (Now we can't use - or 6)
1-6/3 # -1 (Now we can't use / or 3)
1-6/3+0xA # 9 Final submission
Regras
- Seu objetivo é criar para tentar criar os números inteiros mais exclusivos, mantendo-os próximos de zero.
- O sistema de pontuação é que
((number of unique integers)**3)/(sum of absolute values)
, quanto maior a sua pontuação, melhor. O exemplo acima pontua .
- O sistema de pontuação é que
- Deve haver pelo menos dois números inteiros únicos (sem dividir por zero!)
- Formate sua resposta semelhante a:
# Language, \$(4^{3})/16 = 4\$
1-6/3+0xA (the full program)
- Mencione se o seu envio é composto por trechos que avaliam um valor, funções ou programas completos.
- Liste cada um dos prefixos e (opcionalmente) uma explicação de como eles funcionam.
number
code-challenge
restricted-source
Brincadeira
fonte
fonte
print 123-len(open(__file__).read())
seguido#
de um byte não usado até o momento (exceto alguns caracteres de controle), com prefixos cortando esses bytes. Ajuste 123 para centralizar o intervalo de saídas em torno de 0. Para uma pontuação melhor, a parte sem comentários do programa pode ser reescrita usando apenas os 7 caracteres distintos que são universais para o Python. Isso tudo é válido?Respostas:
TI-BÁSICO (TI-84 + CE),2383/ 14161=952,0
Os 256 bytes no TI-BASIC são divididos da seguinte maneira:
"
,→
caracteres, e de nova linha a qual as cadeias ruptura.A cadeia contém todos os 237 bytes permitidos na primeira categoria que ainda não está dentro
118-length(
.O programa calcula 238 números inteiros distintos, variando de 118 a -119. A pontuação é, portanto,2383∑118n = - 119| n |= 952
fonte
mean({1,2,3
, o que seria concluído emmean({1,2,3})
. seqüências de caracteres também são concluídas:Disp "Hi!
conclui paraDisp "Hi!"
. Portanto, a citação final é desnecessáriavim, 14³ / 53 = 51,77
Experimente online! (todos os prefixos)
Demolir:
fonte
<esc>
representa a tecla Escape e<c-char>
representa ctrl + charLinguagem , 256³ / 16384 = 1024
O código fonte da solução pode ser descrito da seguinte maneira:
Cada execução de bytes idênticos combinada com as execuções anteriores constitui um prefixo, e o programa completo é todas as seqüências de caracteres descritas acima concatenadas.
Essa é uma pontuação ótima. (Os programas imprimem todos os números de -127 a 128, inclusive.)
Para criar essa resposta, primeiro copiei a resposta Java aqui para gerar programas de foda cerebral para imprimir uma string. Eu o executei com esta
main
função:Em seguida, executei esse script Ruby para gerar o texto legível por humanos mostrado aqui:
O maior programa tem 3594571896764310192036774345469579167648804468538578264427 bytes de comprimento (e é impresso
-90
).fonte
(Agradeça a este interessante utilitário pela conversão.) O exemplo acima é efetivamente avaliado no seguinte código:
... que cria um proxy que converte o comprimento de um nome de propriedade em um número. O primeiro prefixo termina um caractere após o
.
e usa apenas 6 caracteres exclusivos, excluindo o.$
. As próximas 63 fatias anexam 63 outros caracteres de byte válidos nos nomes de propriedades do objeto JS. As próximas 44 fatias acrescentam caracteres válidos de dois bytes compostos por bytes não utilizados. As fatias finais acrescentar&''
,|""**""
, e,~{}
. A primeira fatia retornos-2
, o segundo2
, em seguida-3
, em seguida3
,-4
,4
,-5
, etc. até os últimos três fatias que são0
,1
e-1
.fonte
Para este, usamos trechos de testes cerebrais, por isso estamos preocupados com o valor e não com o que eles fazem.
Programa completo:
Prefixos e saída
Experimente online!
Explicação
Esta é provavelmente a melhor resposta que um cérebro pode ter, já que usamos todo o personagem que se preocupa com cérebro, e não podemos agrupar os números mais perto de zero.
O primeiro trecho é
<>
,<>
altera a pilha, mas avalia como zero, então começamos com zero. A partir daqui, adicionamos(())
isso faz um. Poderíamos ter acabado de fazê-lo()
, porque esse também é um, mas se pressionarmos um agora poderemos lembrá-lo mais tarde com{}
e[]
. Essa é praticamente a única maneira{}
e[]
pode criar valor, por isso fazemos isso. Como há uma coisa na pilha que[]
conta como 1, subtraímos 3 do total,[[][][]]
levando-nos a -2. Por fim, usamos o{}
pop que pressionamos anteriormente, aumentando para -1.fonte
Após duas horas de tentativa e erro, finalmente obtive todos os números inteiros de
-4
até+5
(e7
).Este é um trecho com os seguintes trechos de prefixo:
Experimente online!
fonte
2*2
para22&7
(-3 e 6 em vez de -3 e 4) para corrigir essa repetição de*
.'
e_
usar emcmp(cmp,())
vez decmp('','_')
Se isso for útil.--[-1-1-1-1-1]
, mas isso não melhora sua pontuação.Lote, 176³ / 7744 = 704
O primeiro prefixo inclui dois pontos e gera o número -88. Os prefixos subsequentes geram números ascendentes e o programa final gera 87.
fonte
Todos os caracteres de escape são bytes únicos - apresentei o programa neste formulário para facilitar a cópia e a colagem. Este link é para o programa completo sem caracteres de escape; como pode ser visto, existem muitos espaços reservados para os caracteres não imprimíveis usados.
A abordagem usada é semelhante à resposta TI-BASIC do lirtosiast , embora eu tenha escrito minha resposta antes de navegar pelas outras entradas. O cabo funciona da seguinte maneira:
A sequência é composta por todos os caracteres de byte único que não sejam 0 (NULL), 127 (backspace) e os caracteres padrão (
-C\|l"
). Dessa forma, cada caractere da cadeia de caracteres pode ser removido um de cada vez para produzir cadeias de comprimento de 248 a 0. Esses programas produzem resultados no intervalo [-124 - 124], com a soma dos valores absolutos de 15500.O código foi gerado usando este programa :
E a soma dos números gerados de cada um dos programas truncados foi encontrada com este programa :
fonte
Gelatina , 984
Experimente online!
Você pode ver os prefixos (separados por uma nova linha dupla) aqui .
Os números impressos são, em ordem:
fonte
Prefixos:
Não é o ideal, mas o melhor que eu pessoalmente poderia encontrar com essa estrutura específica.
fonte
Aqui estão os prefixos e o que eles produzem
fonte
Experimente online!
Define o
n
que é produzido-20, -19, ..., 18, 19
dependendo do comprimento do tipoG
.O menor prefixo de
G
aparência:: G = G
, precedido pelas importações e definições variadas.O maior prefixo de
G
aparência é similarmente precedido.:: G = GABCFHIJKMNOPQRUVWXYZcjkqxyz_0123456789`
fonte
Experimente online!
Como as outras entradas, usa o comprimento de uma sequência. Caracteres no snippet inicial, bem como
\r
(as áreas de texto não se saem bem com isso) e{
(caractere de interpolação de string) são excluídos da string.O primeiro programa é que
_Ê-122}$($"
cada programa tem um caractere a mais, com exceção de quando você adiciona\\
.fonte
122
com#z
, mas que não iria melhorar a sua pontuação.Este é um trecho.
Os fragmentos de prefixo individuais são:
Os operadores bit a bit do Python tratam números inteiros negativos como complemento de dois com
1
s ilimitados à direita,-5
sendo tratados como...11111011
, o que quando ORed com...000010
fornece...11111011
inalterado.fonte
Prefix
O desafio não combina bem com a estrutura da fórmula do Excelfonte
Enchantments Rúnicas , 117 3 /3422 = 468.034
Experimente online!
E o prefixo .
Imprime [-58,58] inclusive.
Usa uma tática semelhante a outras entradas, usando uma sequência progressivamente mais longa, obtendo seu comprimento, subtraindo
B
(valor decimal de66
) e imprimindo o resultado. Usa um caractere não imprimível(mostrado no bloco de código,
€
porque aparentemente é o que é€
avaliado em HTML) para utilizar o valor de byte0x80
(e consumir um que não seria utilizável0x00
) e obter mais um valor. Somente valores de bytes de até 127 que não podem ser representados de maneira alguma são10
e13
, porque causariam o programa com duas linhas de altura e não ser lido corretamente pelo ponteiro de instrução.fonte
Carvão vegetal ,
95³ / 2256 = 380,0421196³ / 2304 = 384O primeiro prefixo são os primeiros 7 bytes e gera o número
47
. Experimente online! Os prefixos subsequentes geram números decrescentes e o programa final é gerado-48
. Experimente online! Editar: aumento de pontuação em 3,95789 graças a @ ASCII-only.fonte