Desafio:
Sua tarefa é escrever o maior número possível de programas / funções / trechos, onde cada um gera / imprime / retorna um número inteiro. O primeiro programa deve gerar o número inteiro 1
, o segundo 2
e assim por diante.
Você não pode reutilizar nenhum caractere entre os programas. Portanto, se o primeiro programa for x==x
:, você não poderá usar os caracteres x
e =
novamente em nenhum dos outros programas. Nota: É permitido usar o mesmo caractere várias vezes em um programa.
Pontuação:
O vencedor será a finalização que contar mais. Caso haja empate, o vencedor será o envio que utilizou o menor número de bytes no total.
Regras:
- Você pode usar apenas um idioma para todos os números inteiros
- Snippets são permitidos!
- Para mantê-lo justo, todos os caracteres devem ser codificados usando um único byte no idioma que você escolher.
- A saída deve estar em decimal. Você não pode imprimi-lo com notação científica ou algum outro formato alternativo. A saída de flutuadores está OK, desde que todos os dígitos mostrados atrás do ponto decimal sejam
0
. Então,4.000
é aceito. Imprecisões devido ao FPA são aceitas, desde que não sejam mostradas na saída. ans =
, espaços à esquerda e à direita e novas linhas etc. são permitidos.- Você pode desconsiderar STDERR, desde que a saída correta seja retornada para STDOUT
- Você pode optar por enviar o número inteiro para STDERR, mas apenas se STDOUT estiver vazio.
- Os idiomas independentes de símbolos (como o Lenguage ) não são permitidos
- As letras diferenciam maiúsculas de minúsculas
a != A
. - Os programas devem ser independentes
- Espaço em branco não pode ser reutilizado
- Você deve usar dígitos ASCII na saída
As explicações são incentivadas!
number
code-challenge
restricted-source
Stewie Griffin
fonte
fonte
#include <iostream>
outras informações básicas em C ++. Você não precisafrom numpy import *
. Nota: Eu não sou programador, então não conheço todas as nuances. Podemos discutir em bate-papo se algo não estiver claro :)Respostas:
JavaScript (ES7), pontuação 17, 176 bytes
Eles disseram que não podia ser feito, então eu fiz: D (graças a muita ajuda do @FullDecent)
Caracteres não utilizados:
Eu não acho que 18 seja possível, mas eu disse a mesma coisa sobre 17 ...
Explicação
JavaScript é uma linguagem de tipo muito fraco; se você tentar executar uma operação matemática em um valor não numérico, o JS fará o possível para convertê-lo em um número primeiro. Isso permite muitas soluções interessantes. Tentei evitar o máximo possível de dígitos, para que possam ser usados posteriormente.
**
é o operador de exponenciação no ES7. A cadeia vazia, quando coagida a um número0
, torna-se , portanto0 ** 0
, calcula o que está de1
acordo com o JavaScript./~/
é um literal de regex e~/~/
retorna-1
, então é~(-1 / -1) / -1
=~(1) / -1
=-2 / -1
=2
. (créditos para @ GOTO0 pela ideia)3
.4
.NaN
Falsas é, assim!NaN
sejatrue
, o que é equivalente a1
. A expressão torna-se assim1 - -1 - -1 - -1 - -1
=1 + 1 + 1 + 1 + 1
=5
.6
.7
.8
.9
.+[]
é0
, então[[]][+[]]
retorna o primeiro elemento de[[]]
(ou seja,[]
) e o++
incrementa para1
. Em seguida,+[+[]]
adiciona a matriz[0]
, que é coagida a uma sequência e cria"10"
.11
. Eu tinha usado originalmente11&1111
para 3 e33/3
11, até que percebi novamente como sou burra ...12
e uso.length
.2
s e>
s por um tempo para conseguir este. Tive sorte novamente:222 >> 2
é55
e55 >> 2
é13
.14
em hex (0xE
), mas precisamos do dígito em0
outro lugar. Então, em vez disso, acrescentamos o resultado de``^``
à stringxE
; a cadeia vazia forçada a um número é0
, então isso retorna0 ^ 0
=0
. Em seguida, o resultado é XORed com a sequência vazia, que converte os dois valores em números;"0xE" ^ ""
é14
.0XF
é um literal hexadecimal com um valor de15
.C
comoCSS == CSS
(ou seja,true
). Depois, pegamos o resultado e executamos<< C
quatro vezes, o que basicamente se multiplica1
por2 ** 4
.555...555%55
retornar um número que não é0
ou5
. Por acaso tive muita sorte enquanto brincava por aqui.Estratégias que funcionariam em muitos números:
-!NaN
funcionaria em qualquer número (atualmente5
), embora ele fique grande muito rápido.~/~/
funcionaria em qualquer número (atualmente2
), embora fique muito grande muito rápido.+[]
funcionaria em qualquer número (atualmente10
), embora seja muito mais fácil em10
ou11
..length
funcionaria em qualquer número.`${-``}xE`-``
funcionaria em praticamente qualquer número, se você fizer certo.C<<C
funcionaria com qualquer potência de duas (atualmente16
) ou int, se você incluísse|
.fonte
window.
propriedades, comodefaultPixelWidth
, mas todas elas parecem conter umal
ou outrae
. Você pode obter outro 0,URL | URL
mas isso não ajuda muito.+ - * ~ < x X length
1 2 3 4 5 6 7 8 9 + - * ~ < x X length
. Portanto, antes de resolvê-lo, não podemos ir 18Geléia , 47 números inteiros, 519 bytes
Cada linha é um programa completo e separado.
Experimente online! (inclui suíte de testes e verificador de interseção)
Como funciona
Todo programa completo sem argumentos de linha de comando executa seu link principal (definido na última linha) niladicamente, ou seja, sem entrada. Se o primeiro link da cadeia for um nilad, ele será consumido, chamado, e o argumento do link principal e o valor de retorno serão configurados para o resultado; se o primeiro link da cadeia for uma mônada ou díade, ele não será consumido e o argumento implícito e o valor de retorno 0 serão usados. Nos dois casos, o restante da cadeia é executado monadicamente.
A geléia controla sua produção em vários casos. Notavelmente, uma matriz simples é impressa sem seus colchetes, portanto 42 e [42] e indistinguíveis após a impressão. Usaremos isso em várias ocasiões.
1 - 10
O átomo existe testa se o valor de retorno 0 pertence ao argumento 0 . Sim,
e
retorna 1 .BI$
é um link rápido, especificamente uma cadeia monádica formada pelo$
agrupamento rápido do átomo binárioB
e do átomo de incrementosI
. Combinados, eles convertem um número inteiro na matriz de seus dígitos na base 2 e depois calculam as diferenças diretas dos dígitos resultantes. Se a matriz tiver apenas um elemento, não haverá diferençasI
diretas e retornará uma matriz vazia (falsy); se houver pelo menos dois dígitos,I
retornará uma matriz não vazia (verdade).O quick
#
consome o link rápido anterior e o aplica a 0 , 1, 2,… até que sejam encontradas correspondências suficientes e retorna a matriz de correspondências. A quantidade requerida é calculada por⁼
, que compara o valor de retorno / argumento 0 a si mesmo, produzindo 1 . Assim, o programa inteiro retorna [2] , o primeiro número inteiro não negativo com dois dígitos na base 2.⁾⁾⁾
é uma string literal, especificamente a string ⁾⁾ . O grau até átomoỤ
ordena seus índices por seus valores correspondentes; como os dois caracteres são iguais, isso gera [1, 2] . A matriz resultante é reduzida com o XOR bit a bit^/
, para que o programa inteiro retorne 3 .ı
inicializa argumento e retorna valor para a unidade imaginária i .*
é a díade de exponenciação , cujo argumento correto é o padrão do argumento do link principal. Assim,***ı
calcula ((i i ) i ) i ≈ 4,81 + 0i , oḞ
átomo ( piso para argumentos reais , parte real para argumentos complexos) calcula a parte real ( 4,81 ), depois osḞ
pisos, produzindo 4 .Esses três programas consistem em um único literal e fazem exatamente o que você esperaria.
O literal
.
é uma abreviação de 0,5 e inicializa o argumento e o valor de retorno. O argumento da direita da díade da divisão inteira (:
) assume como padrão o argumento dos links principais,::::
calculando 0,5 / 0,5 / 0,5 / 0,5 / 0,5 , produzindo 8 .Outro literal.
O átomo todo igual
E
retorna 1 se todos os elementos em seu argumento são iguais e 0 se não. Um argumento inteiro z é promovido para [z] , entãoE
retornará 1 para o argumento implícito 0 .Agora, o átomo de saída
Ȯ
imprime 1 em STDOUT. Em seguida, comparamos 1 com o argumento implícito 0 usando o menor que átomo<
. O resultado é (1 <0) = 0 e é impresso implicitamente quando o programa termina.11 - 20
O átomo da grade
G
tenta criar uma tabela visualmente agradável a partir de seu argumento. Para um argumento inteiro simples (aqui: 0 ), ele simplesmente o agrupa em uma matriz. O átomo plano não igual⁻
compara o argumento implícito 0 com o resultado à direita ( [0] ), produzindo 1, pois seus argumentos não são iguais. O átomo de representaçãoṘ
imprime 1 em STDOUT e retorna seu resultado. No final do programa, o valor final de retorno é impresso implicitamente; portanto, terminamos com uma saída 11 .O eu rapidamente
`
transforma uma díade em uma mônada, chamando-a com argumentos idênticos de esquerda e direita. Primeiro,=`
compara o argumento implícito 0 com ele mesmo, produzindo 1 .O átomo do produto cartesiano
p
espera listas como argumentos, portanto promove o número inteiro 1 no intervalo [1,…, 1] = [1] .p`
toma o produto cartesiano de [1] e ele próprio, produzindo [[1, 1]] .O átomo eval
V
transforma todas as matrizes planas (contendo apenas números e caracteres) em cadeias de caracteres e avalia as cadeias resultantes como programas niládicos de geléia. [[1, 1]] é primeiro transformado em [“11”] , depoisV
avalia a corda, produzindo [11] . Mais uma vez,V
transforma essa matriz em "11" e a avalia para produzir 11 .Agora,
×`
multiplica 11 com ele mesmo, produzindo 121 . O átomo decimal transforma 121 em [1, 2, 1] , o átomo exclusivoQ
descarta o segundo 1 eV
, mais uma vez, transforma uma lista de dígitos no número inteiro resultante da concatenação, retornando 12 .~
é o átomo NÃO bit a bit . Com a aritmética do complemento de dois, ele mapeia um argumento z para ~ z = - (z + 1) .A
é o átomo de valor absoluto , por isso mapeia - (z + 1) = z + 1 . Com o valor de retorno inicial 0 , as treze cópias do~A
retorno 13 .A constante
⁷
mantém o caractere de nova linha '\ n' e inicializa o argumento e o valor de retorno.O átomo desigual
Ṿ
tenta criar uma representação de string de seu argumento z, de modo que um programa Jelly que consiste nesse código retorne z .A primeira chamada devolve obedientemente a string "” \ n " , que é um caractere literal. A próxima chamada retorna "" "," \ n " - um par de caracteres literais. A terceira e última chamada retorna "" "," "," ,, "", "\ n" - um quintupleto de caracteres literais.
Finalmente, o átomo do índice da janela
w
promove seu argumento correto '\ n' para a cadeia "\ n" e encontra o primeiro índice de uma substring começando com "\ n" . Isso retorna 14 .⁴
é a constante 16 . O filtro de link rápidofalso each (ḟ€
) promove seu argumento esquerdo 16 no intervalo [1,…, 16] e , em seguida, itera sobre seus elementos.Para cada elemento z ,
ḟ⁴
é executado, primeiro promovendo z para [z] e removendo todas as ocorrências (se houver) de 16 . Isso gera a matriz [[1], [2],…, [14], [15], []] , onde a última matriz está vazia porque continha 16 .Finalmente, o átomo máximo
Ṁ
seleciona [15] .O átomo modular
m
- chamado com argumentos x (matriz) e y (número inteiro) geralmente leva todos os | y | th elemento de x , começando com o primeiro se y> 0 , com o último se y <0 . No entanto, quando y = 0 , ele retorna x concatenado com seu reverso.O argumento inteiro esquerdo 0 é promovido primeiro para [0] . A primeira cópia de
m
concatena [0] consigo mesma, produzindo [0, 0] . As cópias restantes transformam esse resultado em [0, 0, 0, 0] , depois [0, 0, 0, 0, 0, 0, 0, 0] e, finalmente, [0, 0, 0, 0, 0, 0 , 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] .Por fim, o átomo de contagem
ċ
conta o número de vezes que o argumento implícito 0 aparece na matriz resultante, retornando 16 .ṭ
é o átomo de aderência e acrescenta seu argumento esquerdo ao direito. Comoṭ
e a seguirḍ
são diádicos, todas as chamadas paraṭ
passar o argumento implícito 0 como o argumento corretoṭ
. A primeira chamada retorna [0, 0] , a segunda [0, [0, 0] e a oitava e última [0, [0, [0, [0, [0, [0, [0, [0, [0, 0]]]]]]]] .ḍ
é o átomo de divisibilidade ; para argumentos x e y , ele retorna 1 é x é divisível por y , 0 se não.Ḅ
é um no-op para números inteiros, entãoḍḄ
testa 0 quanto à divisibilidade de cada número inteiro na matriz construída. 0 é divisível por si só, então obtemos [1, [1, [1, [1, [1, [1, [1, [1, 1]]]]]]]]]]] .Agora, o átomo não binário
Ḅ
opera em matrizes planas. Para um par [a, b] , ele simplesmente retorna 2a + b . Como mencionado anteriormente,Ḅ
é um no-op para números inteiros: um argumento inteiro c é promovido para [c] e [c] em qualquer base é simplesmente c .A primeira chamada para
Ḅ
reduz [1, 1] para 3 , resultando em [1, [1, [1, [1, [1, [1, [1, 3]]]]]]]]] . A próxima chamada reduz [1, 3] para 5 , a próxima [1, 5] para 7 e assim sucessivamente até o nonoḄ
retornar 17 .Ṇ
é o átomo lógico NÃO plano e mapeia o argumento implícito de 0 a 1 .+
é o átomo de adição; portanto, cada uma das dezoito cópias de+Ṇ
incremento do valor de retorno anterior (inicialmente 0 ). Todo o programa retorna 18 .C
é o átomo do complemento e mapeia seu argumento z para 1-z .N
é o átomo de negação e mapeia seu argumento z para -z . Juntos,CN
mapeia z para - (1-z) = z-1 , para que as dezoito cópias transformem o argumento implícito 0 em -18 . Uma aplicação final deC
rendimentos1 - (-18) = 19
.O enumerar átomo
Ė
enumera os itens em uma matriz, criando pares de valores de índice. O argumento implícito 0 é promovido para [0] , depoisĖ
produz [[1, 0]] . O átomo não decimal converte uma matriz plana da base 10 em número inteiro, produzindo [10] neste caso particular.A segunda chamada para
Ė
transforma [10] em [[1, 10]] , que a segundaḌ
finalmente transforma em [20] .21 - 30
O átomo da cauda
ṫ
(díade) seleciona o postfix de seu argumento esquerdo que inicia no índice (baseado em 1 e modular) especificado em seu argumento direito, promovendo um argumento inteiro esquerdo x a [x] . Quando chamado com os dois argumentos definidos como 0 ,ṫ
retorna [0] .O átomo any e all
Ȧ
retorna 1 se seu argumento é verdadeiro e não contém zeros em nenhuma profundidade, 0 caso contrário. Aqui, simplesmente a usamos como uma função de identidade para retornar o argumento implícito 0 . A divisão no átomoṣ
particiona seu argumento esquerdo [0] nas ocorrências de seu argumento direito 0 , então retorna [[], []] aqui.O átomo de índices
J
descarta os elementos do valor de retorno e os substitui por seus índices, produzindo o intervalo [1, 2] nesse caso específico.Ȧ
eṫ
ambos funcionam como antes, então eles reduzem [1,2] para o postfix que inicia no último índice, produzindo [2] .Nos links niládicos, a constante
⁸
mantém [] . Este é um nilad incomparável, ou seja, não se encaixa na cadeia de forma alguma. Como resultado, o valor de retorno anterior ( [2] ) é impresso em STDOUT e, em seguida, substituído pelo valor da nilad ( [] ).Como [] é falso,
Ȧ
transforma-o em 0 . OJ
átomo promove 0 a [0] e , em seguida, retorna a lista de seus índices ( [1] ), que é impressa implicitamente quando o programa termina.Outro literal. Repdigits parecem ser o melhor lugar para usá-los.
Isso usa a compactação de string incorporada de Jelly. Os índices de @ e ṃ na página de código do Jelly são 64 e 220 e os literais de cadeias podem conter 250 caracteres diferentes, portanto, este primeiro calcula o número inteiro 250 × 65 + 220 = 16470 .
16470 é divisível por 3, portanto, o quociente 16470/3 = 5490 codifica um caractere ASCII imprimível ou um avanço de linha. Existem 96 deles e 5490 = 96 × 57 + 18 , o que significa que decodificamos o caractere ASCII imprimível no índice baseado em 0 18 , que é '2' .
Ficamos com 57 , que também é divisível por 3 , então o quociente 57/3 = 19 = 96 × 0 + 19 codifica o caractere ASCII imprimível no índice baseado em 0 18 , que é '3' .
Isso deixa 0 ; o processo de decodificação é interrompido. Os caracteres gerados são concatenados para formar "23"
O átomo fatorial
!
transforma o argumento implícito 0 em 1 . Duas invocações do átomo nãohalveḤ
transformam 1 em 2 , depois 2 em 4 . Finalmente,!
calcula 4! = 24 .Na ausência de argumentos da linha de comando, a constante
³
contém 100 . Duas invocações dasH
voltas 100 para 50 , depois 50 para 25 .A constante
Øa
contém o alfabeto em minúsculas. O átomo máximoM
produz todos os índices de itens máximos e, como z é a maior letra minúscula, o resultado é [26] .Vinte e seis cópias do concatenate átomo de
;
concatenar o valor de retorno inicial 0 e vinte e seis instâncias do argumento padrão 0 , a construção de um conjunto de 27 zeros.¬
é o átomo lógico do NOT , portanto;¬
acrescenta 1 à matriz de zeros. O próximo¬
nega todos os elementos da matriz, deixando-nos com uma matriz de 27 unidades e 1 zero.ḅ
é o átomo unbase e converte uma matriz de dígitos do argumento esquerdo da base especificada em seu argumento direito em número inteiro.ḅ¬
converte de unário para inteiro, então ele simplesmente executa uma soma. Para uma matriz de 27 unidades, isso retorna 27 .O índice de átomo
i
promove seu argumento esquerdo 0 a [0] , depois encontra o índice de seu argumento direito 0 nessa matriz, produzindo 1 .O átomo de alcance
r
constrói um alcance ascendente ou descendente, do argumento esquerdo para o direito. O argumento certo é o argumento implícito 0 , então isso gera [1, 0] . Uma segunda invocação dei
localiza o índice de 0 em [1, 0] , produzindo 2 .ð
inicia uma nova cadeia diádica. Como a cadeia anterior era niládica, os argumentos esquerdo e direito dessa cadeia serão iguais ao valor de retorno da primeira cadeia ( 2 ).c
no átomo de combinações . Com o argumento esquerdo 8 e o argumento direito 2 , ele conta todas as 2 combinações únicas e não ordenadas de um conjunto de 8 elementos, retornando 8C2 = 8! / (6! 2!) = 28 .A constante
⁶
mantém um caractere de espaço e define o argumento e retorna o valor para '' . O átomo de palavrasḲ
promove o caractere '' para a string singleton "" e o divide em espaços, produzindo [[], []] .O átomo do grupo
Ġ
agrupa todos os índices de elementos iguais. Como os dois elementos do último valor de retorno são iguais, ele retorna [[1, 2]] aqui. O átomo mínimo extrai um elemento mínimo (o único) dessa matriz, produzindo [1, 2] .O átomo em graus
°
converte ambos os números inteiros de graus sexagesimais em radianos, produzindo 1 ° × 2π / 360 ° = π / 180 e 2 ° × 2π / 360 ° = π / 90 . O átomo inverso recebe os inversos multiplicativos, produzindo 180 / π ≈ 57,3 e 90 / π ≈ 28,6 .Então,
Ṃ
mais uma vez leva o mínimo, produzindo 28,6 . Finalmente, o átomo do tetoĊ
transforma 28,6 em 29 .O átomo de identidade
¹
retorna 0 para o argumento implícito 0 . A divisão em torno do átomoœṡ
promove os dois argumentos (ambos 0 ) a [0] e depois divide [0] em torno de sub-matrizes contíguas iguais a [0] . Isso produz [[], []] .O átomo da janela deslizante
Ẇ
cria todos os sub-arranjos contíguos de seu argumento. A primeira instância transforma [[], []] em [[]], [[]], [[], []]] , a segunda instância transforma [[]], [[]], [[] , []] para[[[]]], [[[]]], [[[], []]], [[]], [[]]], [[]], [ [], []]], [[[]], [[]], [[], []]]] .
O átomo da verdade
T
lista todos os índices de elementos de verdade . Nenhuma das matrizes no primeiro nível está vazia, então isso gera [1, 2, 3, 4, 5, 6] . O átomo de reversãoU
inverte essa matriz, produzindo [6, 5, 4, 3, 2, 1] .Quatro cópias do átomo pop
Ṗ
removem os últimos quatro elementos, deixando-nos com [6, 5] . Finalmente, o átomo do produtoP
transforma esse array em 30 .31 - 40
ȷ
é uma abreviação de 1 × 10 3 = 1000 . O átomo de raiz quadrada½
produz 31,6 , que o átomo do intervaloR
transforma em [1,…, 31] . Finalmente, o átomo da caudaṪ
extrai o último elemento, retornando 31 .O átomo de comprimento
L
promove o argumento implícito de 0 a [0] e , em seguida, leva o comprimento para produzir 1 .µ
inicia uma nova cadeia monádica e o resultado 1 se torna seu argumento.Para os argumentos x e y , o átomo divmod
d
produz [x / y, x% y] . Cada chamada terá y = 1 , portanto o resultado será sempre [x, 0] .A primeira chamada começa com x = 1 , produzindo [1, 0] .
d
opera apenas em números inteiros; portanto, vetoriza nas chamadas subseqüentes. A segunda chamada produz [[1, 0], [0, 0]] , a terceira [[[1, 0], [0, 0]], [[0, 0], [0, 0]]] , e o quinto e último, uma matriz de profundidade 5 que contém um único e 31 zeros.µ
mais uma vez inicia uma nova cadeia monádica e a matriz anterior se torna seu argumento. O átomo planoF
desinesta esse arranjo, produzindo um arranjo plano de um único e 31 zeros. Finalmente,L
leva o comprimento do resultado, retornando 32 .Outro repdigit, outro literal.
Cada instância do átomo de quebra transforma seu argumento z em [z] . Com o valor de retorno inicial de 0 , todas as 34 instâncias produzem juntas [[[[[[[[[[[[[[[[[[[[[[[[[[[[[[ ]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]] . Finalmente, o átomo de profundidade
ŒḊ
calcula a profundidade máxima da matriz resultante, retornando 34 .A janela existe atom
ẇ
promove ambos os seus argumentos (ambos padrão para 0 ) para [0] e , em seguida, testa se ** [0] ** ocorre como uma sub-matriz contígua de [0] . Sim,ẇ
retorna 1 .ɓ
inicia uma nova cadeia diádica. Como a cadeia anterior era niládica, os argumentos esquerdo e direito dessa cadeia serão iguais ao valor de retorno da primeira cadeia ( 1 ). A cadeia faz uso de dois átomos diádicos diferentes: deslocamento de bits para a esquerda (æ«
) e OR de bit a bit (|
).Uma cadeia diádica que começa com três ou mais díades inicialmente chama a primeira díade com os argumentos da cadeia. Aqui, isso fornece 1 << 1 = 2 . As seis díades subseqüentes são agrupadas em pares (os chamados garfos ), onde a díade mais à direita é chamada primeiro com os argumentos da cadeia, depois a mais à esquerda é chamada com os valores de retorno anteriores para ambos os lados.
Pois
æ«æ«
, obtemos 2 << (1 << 1) = 2 << 2 = 8 . Então,æ«æ«
calcula 8 << (1 << 1) = 8 << 2 = 32 . Agora|æ«
nos leva 32 | (1 << 1) = 32 | 2 = 34 .Finalmente, o final
|
funciona como um gancho e é chamado com o valor de retorno anterior como argumento à esquerda e o argumento à direita da cadeia como argumento à direita. Isso retorna 34 | 1 = 35 .Na ausência de um segundo argumento, a constante
⁹
contém 256 . O átomo reverso promove 256 à matriz [2, 5, 6] e a reverte para produzir [6, 5, 2] . Então, o átomo principalḢ
extrai o primeiro elemento e o átomo quadrado²
retorna ** 6² = 36 *.O incremento átomo
‘
incrementa o seu argumento por uma , assim‘‘‘
transformar o valor de retorno inicial 0 em 3 . O 0 a seguir é um nilad imperceptível, ou seja, não se encaixa na cadeia de forma alguma. Como resultado, o valor de retorno anterior ( 3 ) é impresso em STDOUT e, em seguida, substituído pelo valor da nilad ( 0 ).As 7 cópias a seguir
‘
transformam 0 em 7 , impressas implicitamente quando o programa termina.O decréscimo átomo
’
diminui seu argumento por 1 , então trinta e oito cópias transformar o valor de retorno inicial 0 para -38 . O átomo de diferença absolutaạ
calcula a diferença não assinada entre -38 e o argumento implícito 0 , retornando 38 .-
é uma abreviação de -1 e define o argumento do link e o valor de retorno como -1 . Cada_
um é uma instância do átomo de subtração diádica , cujo argumento correto será padronizado como -1 se estiver ausente.Primeiro,
-____-
calcula (-1) - (-1) - (-1) - (-1) - (-1) = 3 . O -1 a seguir é um nilad imperceptível; portanto, o valor de retorno anterior ( 3 ) é impresso em STDOUT e, em seguida, substituído pelo valor do nilad ( -1 ).Em seguida,
-_
calcula (-1) - (-1) = 0 , onde o literal-
define o argumento esquerdo de_
e usa o valor de retorno como o direito. As nove cópias a seguir_
subtraem o argumento padrão -1 do valor de retorno, produzindo 9 , que é impresso implicitamente quando o programa termina.”(
é um literal de caractere e o átomo ordinalO
procura seu ponto de código Unicode, produzindo 40 .41 - 47
Na ausência de um terceiro argumento de linha de comando, a constante
⁵
mantém 10 . O átomo sem comprimentoḶ
cria um intervalo baseado em 0, especificamente [0,…, 9] para o argumento 10 , para ambos os lados do átomo de repetição no lugarx
. O último combina elementos do argumento esquerdo com repetições do argumento direito e repete cada um dos elementos o número correspondente de vezes. Com [0,…, 9] como argumento à esquerda e à direita, obtemos zero zeros, um, dois, etc.O índice no átomo
ị
busca o elemento do argumento correto no índice especificado no esquerdo. Com o argumento esquerdo 10 (⁵
à esquerda) e o argumento direito [1, 2, 2, 3, 3, 3, 4, 4, 4, 4,…, 9] (resultado anterior), isso dá 4 .A corrente até esse ponto é seguida por um nilad inigualável
⁵
; portanto, o valor de retorno anterior ( 4 ) é impresso em STDOUT, o valor de retorno é definido como 10 e o restante da cadeia é analisado como de costume.Como antes,
⁵ḶxḶ
produzirá a matriz [1, 2, 2, 3, 3, 3, 4, 4, 4, 4,…, 9] . Desta vez, chamamos o átomo classificadoṢ
no argumento 10 , que promove 10 a [1, 0] , depois classifica-o para produzir [0, 1] . O átomo da cabeça diádica agora busca os prefixos dos comprimentos 0 e 1 do resultado para a esquerda, deixando-nos com [[], [1]] . Quando impresso, nada além de 1 permanecerá visível.⁽
e seus dois caracteres a seguir constituem um literal numérico. Se j e k são seus pontos de código na página de códigos de Jelly e (j, k) <(124, 250) , obtemos o número inteiro 1001 + 250j + k . Os pontos de código de '{' , '}' e 'ʂ' são 123 , 125 e 167 ; portanto, o literal esquerdo é avaliado em 1001 + 250 × 123 + 167 (= 31918) , enquanto o direito é avaliado em 1001 + 250 × 123 + 125 (= 31876) .Como o número inteiro esquerdo é menor que o dobro do número direito, o resultado é (… + 167)% (… + 125) = (… + 167) - (… + 125) = 167 - 125 = 42 .
O átomo aleatório
Ẋ
aleatoriamente a ordem dos elementos de seu argumento; um argumento numérico z é promovido para o intervalo [1,…, z] anteriormente. Para o argumento implícito 0 , esse intervalo está vazio eẊ
gera [] . O átomo allẠ
retorna 1 se todos os elementos de seu argumento forem verdadeiros, 0 se não. Como uma matriz vazia não contém elementos falsos,Ạ
retorna 1 aqui.O zip com átomo
ż
(uma díade) recebe os argumentos x e y e transpõe o par [x, y] . Para números inteiros x e y , isso simplesmente produz [[x, y]] ; portanto, esse particularż
, chamado com os argumentos 1 e 0 (o argumento implícito), retorna [[1, 0]] . O átomo de avaliação diádicav
transforma todas as matrizes planas (contendo apenas números e caracteres) no argumento da esquerda em seqüências de caracteres e depois avalia as sequências resultantes como programas monádicos do Jelly com seu argumento correto como argumentos dos programas. Desde ["10"]consiste unicamente de literais, isso ignora o argumento corretov
e resulta simplesmente em [10] .A cópia é
©
anexada rapidamentev
e copia seu resultado no registro. Ocorrências posteriores do átomo de recuperação®
(um nilad) serão buscadas [10] no registro.As próximas três cópias do
żv
trabalho como antes, mapeando [10] para [[10, 0] para [100] para… para [10000] . O átomo da ordemọ
testa quantas vezes seu argumento esquerdo é divisível pelo argumento direito; portanto, aqui, ele calcula a ordem de 10 (buscada com®
) em 10000 = 10 4 , produzindo [4] .A seguir,
®
é apresentado um nilad incomparável; portanto, o valor de retorno anterior ( [4] ) é impresso em STDOUT e, em seguida, substituído pelo valor do nilad ( 10 ). Nós aplicamos aẠ
seguir, produzindo 1 . (Isso é necessário, pois uma nilada seguida por uma díade seria analisável neste momento.)Como antes,
żvżvżv
acrescenta três zeros ao valor de retorno atual, transformando 1 em [1000] . Por fim,ọ®
calcula a ordem de 10 em 1000 = 10 3 e 3 é impresso em STDOUT quando o programa termina.Mais um repdigo, mais um literal.
Em primeiro lugar, o literal
111111
define o argumento e o valor de retorno inicial como 111111 . As outras execuções1
também são literais.l
é o átomo do logaritmo , que calcula o logaritmo do argumento esquerdo para a base especificada no direito. Quando chamado 111111 com o argumento certo 11 , obtemos o log 11 111111 ≈ 4.85 .A palavra átomo
K
une um argumento de lista em espaços, depois de promover um caractere numérico / z para [z] . Aqui, simplesmente o usamos para transformar o argumento do link 111111 em [111111] . (Não exigimos uma matriz aqui, mas ficamos sem átomos de identidade.) O átomo AND bit a bit&
leva os valores de retorno para ambos os lados, os converte em número inteiro, se necessário, e calcula seu AND bit a bit. Nesse caso em particular, ele retorna [4,85 e 111111] = [4 e 111111] = [4] .A seguir,
1111111
é apresentado um nilad incomparável; portanto, o valor de retorno anterior ( [4] ) é impresso em STDOUT e, em seguida, substituído pelo valor do nilad ( 1111111 ).K
então transforma esse número inteiro em [1111111] . (Mais uma vez, isso não é realmente necessário, mas um nilad seguido por uma díade seria analisável neste momento.)Como antes,
l11
calcula o log 11 1111111 ≈ 5,81 , depois&
retorna [5,81 e 111111] = [5 e 111111] = [5] .Este é o único programa que consiste em vários links definidos pelo usuário. O último link é o link principal e é executado quando o programa é iniciado, os demais são links auxiliares. O quick
Ç
sempre se refere ao link acima do atual e o executa monadicamente. Da mesma forma, o quickÑ
sempre se refere ao link abaixo do atual (quebra automática) e também o executa monadicamente.A ligação superior consiste no par átomo
,
- uma díade que transforma argumentos x e y para [x, y] - e a soma átomoS
- um mônade que promove um argumento inteiro z para [z] e reduz um argumento de matriz por adição. Quando o link,SS
é chamado com um argumento inteiro n , ele calcula Σ [n, Σn] = Σ [n, n] = 2n .O elo do meio consiste nos átomos acima, o rápido mencionado acima
Ç
e o átomo insignificanteỊ
- uma mônada que produz 1 para argumentos numéricos z com -1 ≤ z ≤ 1 , mas 0 para todos os outros. A aplicação deỊ
duas vezes a um argumento inteiro n essencialmente o substitui por 1 , pois a saída do primeiroỊ
(a entrada do segundo) é sempre insignificante. Esse resultado é então emparelhado com o valor de retorno deÇ
(chamado com o argumento n ) e o par resultante é reduzido emS
. No total, calculamosΣ [(| n | ≤ 1) ≤ 1, 2n] = Σ [1, 2n] = 2n + 1 .Com esses dois links auxiliares, o link principal agora pode construir qualquer número inteiro não negativo observando seus dígitos binários. Com um valor de retorno inicial de 0 , a cadeia
ÇÑÇÇÇÑ
calcula o resultado final ((((((0 × 2 + 1) × 2)) × 2 + 1) × 2 + 1) × 2 + 1) × 2 = ((5 × 2 + 1) × 2 + 1) × 2 = 46 .O próximo átomo primo encontra o menor número primo positivo estritamente maior que seu argumento. Com o valor de retorno inicial 0 , quinze invocações de
Æn
cálculo do décimo quinto número primo, que é 47 .fonte
brainfuck , score 2,
25514410 bytes... Sim, não é a melhor ideia, já que tenho apenas 8 caracteres (tarpits que vão tarpit) para trabalhar, mas vamos ver o quanto é possível.
Eu acho que isso é tudo que é possível. : PEsta resposta demonstra seis dos oito caracteres que o brainfuck usa, sendo os outros dois,
, o que é entrada e o.
que é saída.Visualize online!
Explicação
Cada número é criado e armazenado na célula inicial da fita. Depende muito das células de quebra automática, que não são implementadas em alguns intérpretes.
1 :
2 :
fonte
Neim , pontuação 38, 327 bytes
Explicação:
0
.ℂ
0 e 0 para verificar a co-primalidade, quais são. Isso empurra 1. Em seguida, obtemos o primeiro uso primo𝐋
, o que resulta em uma lista de singleton contendo apenas 2. Em seguida, obtemos o maior elemento (𝐠
), que empurra 2 como um número. Então repetimos esse processo até chegarmos à lista[2 3 5 7 11]
. Depois disso, usamos o𝐝
cálculo dos deltas, resultando na lista[1 2 2 4]
. Em seguida, usamos𝐬
a soma - que é 9 - e calculamos o intervalo exclusivo de 0 a 9, resultando em[0 1 2 3 4 5 6 7 8]
. Finalmente,𝐬
é usado novamente para obter 37.α
é uma constante que representa uma negativa, e repetidamente a pressionamos e subtraímos (novamente explorando o fato de que, quando tentamos abrir a entrada vazia, 0 é pressionado)Pode ser experimentado aqui
fonte
all characters must be encoded using a single byte in the language you choose
. Neim codifica esses caracteres especiais em apenas 1 byte? Quão?1
. Certamente você pode usar isso?Python 2, 15
Aqui está um começo, procurando mais
Graças a leo cuja dica me ajudou a chegar a 15
fonte
-~-~-~-~-~-~-~-~-~[[]==[]][[]<[]]
para 10 e0xD
13 para uma contagem total de bytes menor''is''
ser verdadeiro para fazer outro número?((()<((),))|(()<((),))<<(()<((),))|(()<((),))<<(()<((),))<<(()<((),)))<<(()<((),))
string.printable
c, j, k, l, s, v, w, y, z, A, B, C, D, E, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z, !, #, $, &, ., :, ?, @, \\, `, {, }, \t, \r, \x0b, \x0c
Japt , 448 bytes, pontuação 42
Uma grande colaboração entre Shaggy , ETHproductions e Oliver .
Estes caracteres (úteis) são deixados:
Explicações
Algumas coisas a saber sobre Japt antes de começarmos, das quais fiz uso frequente. Primeiramente, o Japt possui 6 variáveis reservadas para entrada, sendo essas as maiúsculas
U-Z
. Se nenhuma entrada for passada por essas variáveis, todas elas serão padrão0
. A segunda coisa é abordada nesta dica .Clique em qualquer trecho para experimentá-lo no intérprete online .
Quando aplicado a um número, o
v
método usa um número inteiro n como argumento e retorna 1 se o número for divisível por n , 0 se não. Se n não for fornecido, o padrão será 2 . 0 (o valor padrão paraU
) é divisível por 2 , então isso nos dá nosso 1 .Muito parecido com o primeiro. Quando aplicado a um número, o
y
método pega um número inteiro n como argumento e retorna o GCD dos dois números. Se n não for fornecido, o padrão será 2 . Como 0 é divisível por 2 , o MDC (0, 2) nos dá nossos 2 .Í
é o atalho paran(2)
ou2
-this
. Porque não temos entrada, nós padrãothis
para0
, o que resulta em2-0 = 2
.à
retorna o número de combinações de[1...this]
, que retorna 3Q
o padrão é aspas simples.i
em uma string insere outra string no começo; conforme explicado em # 3 , cada umiiii)
é equivalente a.i("i".i("i"))
JS, inserindo duas cópiasi
no início da sequência. Faça isso duas vezes e você terá a stringiiii"
.âQ
então simula.search(Q)
, fornecendo o índice do primeiro"
na sequência, que é 4 .H
é a constante para 32 . Quando aplicado a um número doq
método, que leva inteiro n como um argumento, retorna o n th raiz desse número. Se n não é fornecido o valor padrão é 2 assimHq
nos dá a raiz quadrada de 32, que é de aproximadamente 5,6568 .Â
é o atalho para~~
, que pavimenta o resultado, fornecendo 5 .L
é predefinido para 100 eÁ
é o atalho para>>>
(deslocamento à direita bit a bit de preenchimento zero).100>>>100
é o mesmo que100>>>4
(o operando direito envolve o mod 32), que é 6 .Como observado anteriormente, o
V
padrão é 0 .´
é o atalho para o--
operador, portanto, o código é equivalente ao seguinte JS:X.n(Y)
é equivalente a Y - X ou -X + Y ; o primeiro--V
retorna -1 e o segundo -2 , então isso é equivalente a - (- 1) + (- (- 2) + (- (- 2) + - (- 2))) . Simplificando, obtemos 1 + 2 + 2 + 2 = 7 .Literalmente, 8 e 9 .
Estas são as constantes para 10 - 16 , inclusive.
J
está predefinido para -1 . O interpretador Japt de alguma forma consegue analisar isso corretamente, como(J--) - (--J) - (--J) - (--J) - (--J)
. Fazendo um pouco mais de matemática, descobrimos que isso é equivalente a (-1) - (-3) - (-4) - (-5) - (-6) ou -1 + 3 + 4 + 5 + 6 = 17 .¾
é, como você pode imaginar, um atalho para.75
. Colocamos 24 cópias de 0,75 em uma matriz e depois somamosx
, dando 0,75 * 24 = 18 .Eu acho que este é o meu favorito.
;
no início do programa altera os valores de algumas das constantes japt; sem eleI
é 64 , mas com eleI
é 91 .ìw
converte-o em uma lista de dígitos e é executadow
na lista, revertendo a matriz e depois volta a ser um número para obter 19 .½
é um atalho para.5
.e
em um número x recebe um argumento y e retorna x * 10 y . Portanto, a cadeia de cálculos que acontece é:E a final
~~
serve como base para um número inteiro, produzindo o resultado de 20 .T
está predefinido para 0 .++
é o operador de incremento em JS e também em Japt;T+++T
é analisado como(T++) + T
, mas++T+++T
é analisado como(++T) + (++T)
, portanto, isso é equivalente ao código JSO resultado é 1 + 2 + 3 + 4 + 5 + 6 , que soma 21 .
Um literal 22 .
Ä
é um atalho para+1
, então isso simplesmente soma 231
s.Isso encontra o número de permutações de
[1, 2, 3, 4]
, que é 4! = 24 .²
é um atalho parap2
, que eleva um número à potência de dois. 5 ** 2 é 25 .°
é um atalho para o++
operador ou, se não puder ser analisado como tal+ +
,. Como observado anteriormente, quando não há entrada, oU
padrão é 0 . Portanto, o código é equivalente a(++U), (U++) + + (++U) + + (++U) + + (++U) + + (++U) + + (++U)
, que é muito semelhante ao # 17 :U
primeiro é incrementado1
, depois repetidamente incrementado e adicionado, de modo que o resultado final seja 1 + 3 + 4 + 5 + 6 + 7 = 26 .³
é o atalho para op
método com um argumento 3 . No entanto, se uma letra minúscula aparecer diretamente após um parêntese esquerdo (»
é o atalho para((
), ela se tornará uma sequência. Isso permite que ele seja passado para um método e chamado como uma função (ou seja,m³
seria mapeado por.p(3)
). Nesse caso, no entanto,("p",3)
retorna nosso3
, então aumentamos o poder de3
(p
é o método de poder quando aplicado a um número), o que nos dá 27 .¼
, como você provavelmente já sabe, é um atalho para.25
, portanto, calcula 7 / 0,25 = 28 .Tudo o que
$
estiver envolto em símbolos é tratado como JavaScript puro, por isso temos uma sequência de 29 sublinhados seguida por ab
. (Sem o$
,'
seria uma cadeia de caracteres únicos.) Ob
método, quando aplicado a uma cadeia, retorna o primeiro índice de seu argumento nessa cadeia. Conforme explicado no item 3 , o últimob
é convertido em uma sequência, então estamos pegando o primeiro índice deb
nossa sequência, que é 29 .µ
é um atalho para-=
eÉ
para-1
. O efeito está subtraindo 30 cópias de -1 de 0 , o que dá 30 .Muito parecido com # 29. O
a
método, quando aplicado a uma string, retorna o último índice de seu argumento nessa string. Usando a indexação 0, o último índice dea
uma sequência de 32a
s é 31 .S
é predefinido para um único espaço e,c
em uma sequência de caracteres únicos, retorna seu código de caracteres, fornecendo 32 .Literal 33 .
MgN
retorna o número enésimo de Fibonacci.011
é 9 em octal; o 9º número de Fibonacci é 34 .#
retorna o código de caractere do próximo caractere. O código de caractere por#
si só passa a ser 35 , tornando nosso trabalho aqui especialmente fácil.p
é exponenciação e, sem um segundo argumento, o padrão é 2 ; portanto, isso imprime 6 ** 2 = 36 .Este é um pouco complicado.
R
o padrão é um único caractere de nova linha (que é uma nova linha se torna importante posteriormente).í
em uma string, sem argumentos, pega cada caractere e anexa seu índice: uma transformação bastante inútil, mas o resultado através de 5 iterações é o seguinte: (usando emR
vez de uma nova linha literal)Interessante como cada entrada é simplesmente um prefixo da próxima ... Mas, de qualquer maneira, a última parte
è.
, conta quantas correspondências de/./g
são encontradas no resultado. Existem 38 caracteres na string; no entanto, como/./g
corresponde apenas a caracteres que não são de nova linha, o resultado é 37 .Os backticks marcam uma string compactada e
¥
descompactam parall
.l
em uma string fornecel
ength; portanto, após a descompressão, isso fornece 38 .Oooh garoto, esse aqui é doozy. Primeiro, geramos
true
com¨N
(¨
significa>=
eN
sem entradas é a matriz vazia), depois convertemos isso em1
com|N
. A partir daí, fica muito louco:(Os
¹
são apenas substitutos para parênteses próximos e foram omitidos.) A finalo
aparece e retorna o item final na matriz, dando 39 .Principalmente o mesmo truque do # 3 .
¤
é o atalho para os
método com um argumento 2 . Nesse caso, no entanto, o código transpilado é(("s", 2).s(2) * (("s", 2) * (("s", 2))))
, ou simplificado(2).s(2) * (2 * 2)
..s(2)
retorna o número como uma string de base 2, que fornece"10"
;* (2 * 2)
implicitamente converte isso em um número e multiplica por 4 , resultando em 40 .Semelhante ao anterior.
Å
é o atalho para os
método com um argumento 1 . Nesse caso, no entanto, cada um(Å
transpila para("s", 1)
, o que apenas retorna 1 .1<<1<<1<<1<<1<<1
é 32 e1<<1<<1<<1
é 8 ; estes são XORed junto com1
para obter 41 .±
é um atalho para+=
e¶
para===
. Isso significa que o código é realmenteY===Y
é sempre verdade, para que possamos simplificar isso:0 + 1 = 1 ; 1 + 1 = 2 ; 2 + (2 + 1) = 5 ; 5 + 5 = 10 ; 10 + (10 + 1) = 21 ; 21 + 21 = 42 .
fonte
Iq
8 para8
voltar, mas teria que encontrar outra coisa para o 19.q
para5
permitir que eul
adicione um número extra. Trabalhando em uma alternativa para2
que eu possa=
voltar.(¤
para 2.L>>L
pode liberar 6.#w s Å
pode liberar;
eI
#
para os 21.*
e^
PHP, pontuação 17, 130 bytes
caracteres usados
ADEFGIKLMOPRSTVXYZ=_![]()<>'"#$,;/-+*|^&0123456789afhnprstwx
1 Constante booleana Z (não definida) igual constante Z
2 FTP_MOREDATA é uma constante no PHP com o valor 2
3 bit a bit e caracteres; e W
4 bit a bit Shift esquerdo e lógico não convertido em array vazio para boolean true com é convertido em número inteiro 1 através do operador shift left
7 bit a bit Ou caracteres # e $ e 1
9 SIGKILL é uma constante em PHP com o valor 9
10 bit a bit Shift para a direita, cada etapa é uma divisão inteira com 8, portanto temos as etapas 333333, 41666, 5208, 658, 651, 81, 10
13 caracteres char X na string X ... desde o início
15 valor hexadecimal f = 15
17 Xor bit a bit com as cadeias ha e YV
Todos os snippets são itens em uma matriz
Experimente online!
PHP, pontuação 16, 94 bytes
caracteres usados
AEIMPRTUZeflnrstvwx^_&|()[]=!.*+/-<>$":0123456789
1 Constante booleana Z (não definida) igual constante Z
2 bit a bit e caracteres: ew
3 Pi convertido para valor inteiro por meio de matriz vazia convertida em zero
7 xor char a bit A e v
10 variável $ s não configurada! $ S = uma concat com comprimento de string da variável $ s
13 111/2 = 55/2 = 27/2 = 13 Divisão inteira bit a bit
15 valor hexadecimal f = 15
Todos os snippets são itens em uma matriz
Experimente online!
PHP, pontuação 14, 84 bytes
caracteres usados
$!_^[]()%/+~-=AEILMNPRUZ0123456789delnrstx
1 Constante booleana Z (não definida) igual constante Z
3 Pi convertido para valor inteiro por meio de matriz vazia convertida em zero
7 ERA é uma constante com o valor 131116 mod 11 = 7
10 variável $ s não configurada! $ S = uma concat com o comprimento da string da variável $ s é zero
13 valor hexadecimal d = 13 14 bit a bit não e sinal de menos aumenta NULL para 14
Todos os snippets são itens em uma matriz
Experimente online!
fonte
R, pontuação
1314Obteve um extra graças ao user2390246.
Caracteres utilizados:
0123456789acemqrstuvxDFT^=";-/+()$
fonte
F^F
2"n"%in%"n"+"n"%in%"n"
:; 3-9: numerais, 10:1e1
, 11:22/2
, 12:T--T--T--T...
, 13:0xD
, 14:sum(mtcars$vs)
%
e pensamento de usar conjuntos de dados internos. Não vejo por que não ficaria bem.dataset['A','B']
, desde que evitasse a sobreposição das letras já usadas (e acontece para conter um valor útil!). Infelizmente, até onde posso ver rapidamente, todos os conjuntos de dados com linhas nomeadas contêm a letra i, portanto, não é compatível com o uso%in%
.q=""=="";q+q
. Isso liberaria o uso das letrasi
en
. Não tem tempo para olhar para ele agora, mas eu aposto que há um extra em algum lugar ...MATL , pontuação
212223 números (273 bytes)Agradecemos a J Doe por estender de 22 para 23 números!
Experimente online! Cada trecho no link é finalizado por
D
(exibição) ou]D
(loop fechado explicitamente e exibição) para limpar a pilha e, assim, isolar-se do próximo trecho.Explicação
Empurre
0
. Negar. Dátrue
, que é exibido como1
.Empurre a corda
'bd'
. Diferença consecutiva entre os pontos de código dos caracteres.Empurre a matriz de células que contém o número
pi
. Converta em matriz numérica (ou seja, em um único número). Arredondar para baixo.Empurre
2
duas vezes. Poder.Literal numérico.
Literal numérico.
Literal numérico.
Literal numérico.
Literal numérico.
Empurre
3
. Empurre3.333333333333333
. Multiplicar. Devido à precisão do ponto flutuante, isso fornece10
.Literal numérico.
Empurre
3
. Multiplique2
duas vezes.Empurre
[6]
(que é o mesmo que6
). Calcular o n- ésimo primo.Empurre
1
14 vezes. Número de elementos na pilha. Limpe o restante da pilha.Empurre
4
. Quadrado. Faça o mesmo. Qualquer: dá1
. Subtrair.Empurre
4
.2
elevado a isso.Empurre a matriz
[false false ... false]
(17 vezes). Número de elementos na matriz.Empurre a matriz
[true true ... true]
(18 vezes). Soma da matriz.Pressione 19 números aleatórios retirados do intervalo (0,1). Concatene horizontalmente 18 vezes. Número de elementos diferentes de zero na matriz.
Empurre
0
20 vezes. Concatene o conteúdo da pilha verticalmente (fornece um vetor de coluna). Tamanho: fornece a matriz[20 1]
. Máximo de matriz.Empurre
1j
(unidade imaginária) 21 vezes. Adicione 20 vezes. Divida por1j
.Literal numérico
Faça ... while loop (
`
) com final implícito. Na primeira iteração, ele empurra o índice de iteração (@
) e o incrementa (Q
) 22 vezes, o que gera23
. A condição do loop (@@<
) é falsa; portanto, o loop é encerrado.Algumas idéias para melhorias adicionais
(espaço) no snippet 10 pode ser substituído por
|
X>
no snippet 20 pode ser substituído porp
, liberando assim o prefixoX
.:
,A
fonte
Vim 8 no Windows, pontuação 13, 104 bytes
^{keystroke}
representa<C-{keystroke}>
, assim^X
é<C-x>
, exceto o^@
que é<C-j>
. Ainda estou tentando adicionar mais números a esta lista e<CR>
representa um avanço de linha.Nota: para executar esses comandos, inicie o vim usando
-u NONE -U NONE
. Isso é para garantir que suas configurações não interfiram no código.Os fragmentos 1 a 10 iniciam no modo de inserção. Enquanto os trechos 12 e 13 começam no modo normal.
Explicações
O snippet 8 é
:^R=&ts^@
. Tenho que agradecer @ L3viathan para chegar com isso e @ nmjcman101 por sugerir^@
como um substituto para o avanço de linha e @ ØrjanJohansen para encurtar&tabstop
a&ts
.&ts
avalia o tamanho da guia, que é por padrão 8 e esse valor é inserido no editor.O snippet 10 é
8^O^A^O^A
. Inserimos um 8 e, em seguida, incrementamos duas vezes para obter 10.O fragmento 11 é
0^[^X^X^X^X^X^X^X^X^X^X^X0x
. Escrevemos um 0 e diminuímos 11 vezes para obter -11. Em seguida, removemos o sinal de menos para obter 11.O fragmento 12 é
:h<CR>wwwwwwwwwwwy$:q<CR>p
. Isso abre o menu de ajuda do Vim 8, que contém as seguintes informações:E a sequência de
w
s passa para o 12, momento em quey$
copia o número. Em seguida, é colado no editor usandop
.O snippet 13
grgKjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjYZZvPWWWllld|llD
agradece a @DJMcMayhem por ter vindo com ele. Isso funciona apenas no Windows. O trecho procura no menu de ajuda por comandos que começam comg
. Em seguida, ele desce usandoj
para chegar a esta linha:após o que ele copia e cola no buffer. Depois disso, tudo, exceto os 13, é removido do buffer.
fonte
^R=&tabstop+&tabstop+&tabstop<CR>P
você os 12, ou<CR>
já é usado por causa de^M
?<CR>
quando eu disse^M
, mas obrigado, eu vou olhar para remover a^M
partir trecho de 8 agora :)0x01
enquanto Ctrl + X fornece0x18
. E claramente, esses dois são bytes separados. Isso faz sentido?-u NONE -U NONE
,&tabstop
avalia a 8. Então eu troquei isto com o 8 trecho com algumas modificações, graças :)Mathematica, pontuação 13
fonte
⌊⌋⌈⌉
coisas em um byte de cada ...⌊⌋⌈⌉
nos transformando⌊E⌋
emFloor@GoldenRatio
,⌈Pi⌉
em4
,LucasL@4
em7
e77/7
em22/2
. Provavelmente é possível ir pelo menos um passo adiante, aplicando uma função com//
05AB1E , pontuação 18, 67 bytes
Experimente online!
fonte
A'ok
:)„((Ç;¬
=20.0
(caractere de dois bytes "(("; para valores ordinais; reduza pela metade; pegue a cauda));₁.²₁P₃/ï
=21
(log-2 de 256; multiplicado por 256; dividido por 95; com decimais removidos);₂Ågttγć
=22
(termo Lucas 26; dois times square enraizada; dividida em mandris de elementos iguais; cabeça extraído) Os dois últimos foram de tentativa e erro ..;.)PingPong , pontuação 127
No PingPong, cada caractere tem seu próprio valor numérico distinto, tornando a contagem até 127 uma tarefa trivial. A linguagem funciona lendo o valor de cada caractere e empurrando-o para o topo de uma pilha, onde todas as operações são executadas. Teoricamente, o PingPong pode ultrapassar 127, mas seria necessário passar um bloco de caracteres que simplesmente aparecem como espaços em um editor de texto, então eu os deixei de fora da minha solução.
fonte
Oitava, Pontuação 14, 74 bytes
Tenho certeza de que estou perto do limite agora.
Teve de remover
strchr
uma vez que já temc
em número 10. Eu ainda tenhoj
,^
,=
,!
, espaço e guia horizontal (ASCII-9) para a esquerda, por isso pode ser possível espremer mais um em.A guia horizontal pode ser usada como um espaço, portanto, o truque usado com
strchr
ennz
pode ser usado mais uma vez. As únicas letras minúsculas restantes sãoabdfgjkmoquvwxy
. Não há muitas funções que possam ser feitas com essas funções.mod
poderia funcionar, mas não pode receber entrada de string.É fácil usar os caracteres restantes para obter
1
, mas não sei como conseguir mais nada.Teste tudo .
Possivelmente útil:
fun a
é o mesmo quefun('a')
,fun a b
é o mesmofun('a','b')
e assim por diante. Isso pode ser usado em vários lugares:Usar isso
0
disponibilizará, mas ainda não consigo ver como torná-lo útil.e (2.71828...)
ej
ainda não são utilizados. Deve removerceil
para usare
embora.Alternativas (inspiração):
fonte
JavaScript (ES7), 16 números inteiros,
137130128 bytesTomei resposta @ETHproductions e correu com ela por um tempo; mudou tanto que estou postando separadamente. Idéias são bem vindas. :)
Remanescente:
$_@#!^&|/?:, ABDEGHIJKLNPQRUVWZcghjklmpqrsuvwyz
Ou, se o snippet de 1 for substituído por
!!/!//!!/!/
:$_@#^&|*?:", ABDEGHIJKLNPQRUVWZcghjklmpqrsuvwyz
JavaScript (ES7), 16 números inteiros, 127 bytes
Um byte mais curto. : P
Remanescente:
$_@#!/^&|?:,ABDFGHIJKLNPQRVWYZcghjklmpqrsuvwyz
fonte
-~{}-~{}
: P No geral, porém, eles são muito bons. Caminho mais curto do que a minha, com certeza ...!&/^|
para trabalhar, bastante impressionante. Se necessário, você pode usar!!/!//!!/!/
para 1 ao comércio!/
para"*
.-~-~{}
+!![]+[+[]]
, contanto que não haja melhor uso para!
Dyalog APL, pontuação 15, 89 bytes
As novas linhas anteriores
l:l
fazem parte de 12.Os espaços em 14 representam tabulações.
fonte
0 0 0
->0,0,0
;]fromhex f
> <> , pontuação 20,
93907465 bytes(3 bytes salvos pelo Teal Pelican, muitos bytes salvos por Jo King!)
Experimente-os no parque infantil de peixes! Você pode fazer com que os trechos imprimam seus resultados adicionando
n;
ao final de cada um. Observe que o nono snippet contém uma guia que é consumida pela troca de pilhas.Explicação:
iii((
, cada umi
tenta obter entrada, mas como não há, eles pressionam EOF =-1
. Então(
é a instrução menor que, e como-1
não é menor que-1
, empurra uma falsa0
; mas o segundo(
pergunta se-1
é menor que0
, o que é, então empurra uma verdade1
.2
e3
são óbvias.ll{lll{[
, o primeirol
empurra o comprimento da pilha, ou seja0
, o segundo empurra o novo comprimento, trazendo a pilha para0, 1
. O{
gira a pilha para a esquerda, trocando o1
e0
. Mais trêsl
s trazem a pilha para1, 0, 2, 3, 4
. Em seguida,{
gira1
para a frente e[
extrai a primeira1
coisa na pilha, que é4
.5
,6
,7
E8
são óbvias demais.!\t00=0g
(onde\t
representa uma guia),!
pula a guia e00=
pressiona dois zeros e verifica se são iguais - eles são, então temos uma verdade1
. Depois de pressionar outro0
, og
personagem fica na posição1,0
do código, que é a guia do código de caractere9
.a
através def
cada push10
para15
respectivamente (presumivelmente para tornar hexadecimal agradável).44*
empurra dois se4
multiplica-os juntos, por16
.'RA'
envia os códigos de caracteres deR
eA
(82 e 65 respectivamente) para a pilha e depois%
calcula82 mod 65 = 17
.999-9--
avalia a9 - ((9 - 9) - 9) = 18
."&F#"
empurra os códigos de caracteres de&
,F
e#
, que são38
,70
e35
respectivamente. Então,
é a divisão, então chegamos38 / (70 / 35) = 19
.1::
pressiona ae1
duplica duas vezes,+
adiciona duas para obter2
;:+
duplica o2
e adiciona a si próprio para obter4
;+
adiciona o restante1
para obter5
; em seguida,:+:+
duplica e adiciona duas vezes, resultando em20
.Esta é a pontuação máxima possível com> <>. Qualquer trecho deve incluir uma instrução em algum lugar que se transforma uma pilha vazia em uma pilha não-vazia, e há apenas 18> <> instruções que podem fazer isso (ou seja
i
,l
e os dígitos0–9
ea–f
), além de modo de string. (Todas as outras instruções não fazem nada em uma pilha vazia><v^/\|_#x!{}r
ou tentam exibir algo e erros?.+-*,%=():~$@[]on&gp
.) A entrada no modo de seqüência de caracteres usa um"
ou outro'
, para que haja no máximo18 + 2 = 20
trechos possíveis.Se você está mais confortável com unprintables do que eu sou, isso é possível em 53 bytes, graças a Jo King:
00=, iii((i-, 3, 4, 5, 6, 7, 8, 9, a, b, c, d, e, f, 2222***, !Xll$g, 11+::+:+:++, 'Y', "Z"
, onde aX
,Y
eZ
são substituídos por caracteres com códigos17
,19
e20
respectivamente.fonte
iii((i-
16>2222***
17>lll{lllll{{[{n
(talvez incompleto, mas se você deseja exibir como um número, pelo menos há um menosl
) 18> #11+::+:+:++
! ll$g
onde o espaço é substituído pelo caractere de controle com o valor 17 (Controle de Dispositivo 1)?MathGolf ,
485153 inteiros, 324 bytes+2 pontos (e -2 bytes distintos usados
40
) graças a @maxb .Cada linha é um programa separado.
Bytes usados (92 bytes distintos):
îª∞~c±b+φⁿ_¥-567○¢i♀/d²♂ABCDE☻FGHIJKLMNOPQRST♥UVWXYZ♫¼8]Σ41╔½π░3§2#τ╥└♦⌡!⌠'0$ÿ@£9)►◄╠•╠"h ♣(
Explicação e links TIO:
MathGolf é uma nova linguagem de golfe especializada em desafios matemáticos de golfe. Ele possui um monte de componentes de byte único para números, tornando este um desafio perfeito para ele.
1)
î
: Pressione o valor indexado em 1 do loop, que é 1 por padrão: Experimente online.2)
ª∞~
: Pressione [1]; dobrar ([2]); lista pop e coloque seu conteúdo na pilha: Experimente online.3)
c±b±+
: Pressione -2; depois pop e pressione seu valor absoluto; empurre -1; depois pop e pressione seu valor absoluto; e adicione-os juntos Experimente online.4)
φⁿ_¥-
: Empurre a proporção áurea (1,618033988749895); cubo-lo (4.23606797749979); duplicar a parte superior da pilha; tome o módulo 2 (0,23606797749979); subtraia-os um do outro: Experimente online.5,6,7) Os próprios números: Experimente online.
8)
○¢i♀/
: Pressione 2048; converter para uma cadeia hexadecimal (800); converter para inteiro; empurre 100; dividir: Experimente online.9)
d²
: Pressione -3; quadrado: Experimente online. 10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33, 34,35,36,37,38) Envie os builtins para os próprios números (♂ABCDE☻FGHIJKLMNOPQRST♥UVWXYZ
): experimente online.39)
♫¼¼¼¼
: Pressione 10000; número inteiro dividido por 4 quatro vezes: Experimente online.40)
88888]Σ
: Empurre 8 cinco vezes; envolva-os em uma lista; some essa lista: experimente online.41) O número em si: Experimente online.
42)
╔½½½½½½½½½½½
: Pressione 86400; inteiro dividido por 2 onze vezes: Experimente online.43)
π░3§3
: Pressione PI (3.141592653589793
); moldar a corda; pop e pressione seu terceiro caractere indexado em 0 (4); empurrão 3; produza a pilha inteira unida implicitamente: 44)Experimente online. : Pressione 2 duas vezes; tome o poder dos dois (4); faça isso novamente; produza a pilha inteira unida implicitamente: Experimente online. 45) : Pressione 2 * PI (6.283185307179586); estale e empurre a potência de 2 abaixo dela, a mais próxima (4); empurre o topo da pilha + 1 sem estourar (5); produza a pilha inteira unida implicitamente: Experimente online. 46) : Pressione 64; diminuir por 2 nove vezes: Experimente online. 47) : Pressione gamma (n + 1) (1 por padrão); incrementar em 2 vinte e três vezes: Experimente online. 48) : Empurre a corda22#22#
τ╥└
♦⌡⌡⌡⌡⌡⌡⌡⌡⌡
!⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠⌠
'0$
: Pressione o valor ordinal do caractere '0': experimente online.49)
ÿ@@@@£9
"@@@@"
; estale e empurre seu comprimento (4); empurrão 9; produza a pilha inteira unida implicitamente: Experimente online.50)
))))))))))))))))))))))))))))))))))))))))))))))))))
: Incremento de 1 cinquenta vezes: Experimente online.51)
►◄╠•╠
: Empurre 1.000.000; Empurre 10.000.000; pop tanto e inteiro - divida-os um com o outro (10); push 512; pop tanto e inteiro-divida-os um com o outro: Experimente online.52)
"hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh"h
: Empurre a corda"hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh"
; empurre seu comprimento (sem esticar a corda); remova tudo da pilha, exceto o último item: experimente online.53)
♣(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((
: Pressione 128; decrementado em 1 setenta e cinco vezes: Experimente online.Tentará adicionar um pouco mais adiante. Ainda tenho algumas coisas úteis, incluindo módulo
%
e multiplicação*
.fonte
88888ΓΣαΣ
->88888]Σ
ou88888§§§§Σ
economiza 2 comandos com o custo de usar um. Você também pode fazer algo como"xxxxxx"h
onde o último caractere é um espaço sem quebra que limpa tudo, exceto os TOS, e você pode usar o comprimento da string para gerar o número. Talvez use algo que nãox
seja o contrário , porque então você tem oWx
que lhe dá 53 desde que você possa obter 35 de outra maneira.char/ord
operador, que funciona como'A$
->67
, e também funciona para strings mais longas (como números inteiros de base 256). Não está extremamente bem documentado, mas se você estiver interessado em melhorar esta resposta, eu poderia recriar a sala de bate-papo do MathGolf para qualquer pergunta.88888]Σ
. Não sabia]
. Quanto ao"hhhhh"h
, isso não parece funcionar . : S[
iniciando o contexto da matriz e]
finalizando-o e agrupando os resultados em uma matriz. Para que o nível superior se comporte como os níveis mais baixos, ter uma]
quebra da pilha inteira em uma matriz parecia uma boa idéia.Java 8,
111213, 39 bytesJava possui apenas 10 símbolos para números (0-9) e todas as chamadas e constantes de métodos requerem um período, portanto, não tenho certeza se posso obter acima de 11 saídasAparentemente, os caracteres convertidos para números inteiros por padrão quando operações são aplicadas
+1 com a ajuda de @ OlivierGrégoire
Explicações:
número inteiro lambda que não recebe entrada e retorna 1. Quando um parâmetro não recebe entrada, o valor padrão é usado conforme o meta post acima, que para números inteiros é 0
inteiros literais
XOR de dois caracteres para retornar 10
inteiro literal
expressão lambda que retorna o comprimento de uma sequência de 12 caracteres
Hexadecimal 13
Link TIO se você deseja verificar.
fonte
2
pode ser escrito como2
e10
como'P'^'Z'
. Além disso, isso libera os caracteresX+*
e usosP
.i->i.ONE
é inválido.Gaia , pontuação 25, 203 bytes
Considero isso uma pontuação perfeita, já que nenhuma outra nilada pode ser usada, dadas as limitações do personagem.
Explicações
1
§‼
§
é um caractere de espaço,‼
é coerente com booleano; portanto, o resultado é 1.2)
..⌉+⌉
.
é um atalho para0.5
, então é issoceil(0.5+ceil(0.5))
.3)
₵P~~
₵P
é pi,~
é uma negação bit a bit. A negação bit a bit dupla é simplesmente truncamento.4)
4
5)
5
6
6
7)
∂Ql
∂Q
é uma lista que contém os nomes dos dias da semana el
é longa.8)
8
9
9
10)
¶c
Ponto
c
de código do avanço de linha¶
.11)
11
12)
'¡ċ⌋u⌋
13)
--⁻-⁻-⁻-⁻-⁻-⁻-⁻-⁻-⁻-⁻-⁻-⁻-⁻-⁻
-
é uma abreviação de-1
,⁻
é subtração. Portanto, isso é-1 - -1 - -1...
tempo suficiente para fazer 13.14)
7:,Σ
Empurre
7
, duplique:
, emparelhe,
os dois 7s em uma lista e someΣ
.15
Ø!))))))))))))))
Ø
é uma sequência vazia, assimØ!
como 1. Incremente)
1 14 vezes.16
øøw<øøw<«øøw<«øøw<«øøw<«
17
⟩‘
Fechar uma string
‘
faz com que seja um número base-250 literal.⟩
está no valor de byte 17 na página de códigos do Gaia.18
₸ḣ₸K$₸ḣ₸/S₸₸/=$
19
]]]]]]]]]]]]]]]]]]]n
Cada um
]
envolve a pilha na lista. Faça isso 19 vezes e obtenha a profundidaden
da lista.20
⇑’e
Fechar uma string
’
faz dela uma lista de pontos de código da página de códigos.e
despeja a lista na pilha.⇑
tem um ponto de código 20 na página de códigos.21
0(((((((((((((((((((((_
Decrescente
(
0 21 vezes e depois negue_
.22)
22
23
“B”“↺↺↺↺↺↺↺↺↺↺↺↺↺↺↺↺↺↺↺↺↺↺↺B”B
Converta a string
“B”
da base 24, onde estão os dígitos de 0 a 23↺↺↺↺↺↺↺↺↺↺↺↺↺↺↺↺↺↺↺↺↺↺↺B
. O resultado é23
.24
3₈×
3 × 8.
25)
ℍḥḥ
100
ℍ
pela metadeḥ
e novamente pela metade.fonte
C, pontuação 13
Essas são apenas várias constantes inteiras.
0==0
avalia para 1__LINE__
= 21+1+1...
=1*10
= 10'o'
é 111,'.'
representa o ASCII 0x10 não imprimível. 111/10 = 11(2<<2)
= 8,8*2
= 16,16-2-2
= 12"strlenstrlens"
= 13fonte
Ohm , pontuação
2122, 160 bytes totaisExperimente online!
Explicações
1
╓S@Ri
Pressione os segundos da data / hora atual (
╓S
). Obtenha o intervalo inclusivo de 1 a segundos (@
), inverta-o (R
), obtenha o último elemento (i
), que é sempre 1.2)
ΓΓ-Γ-Γ-
Γ
é -1, então isso é (-1) - (-1) - (-1) - (-1), que é 2.3)
αê⌠
αê
é o número de Euler (2.71828 ...),⌠
é o teto. 3 é o resultado.4)
¡¡¡¡¼
¡
incrementa o contador,¼
empurra o contador.5)
5
Apenas um literal.
6
▀lll▀l
▀lll▀
é uma literal de string compactada que é equivalente a"of >ic"
.l
leva o comprimento, então o resultado é 6.7)
ÑÑÑÑÑÑÑÿWÿk
Primeiro, pressionamos 7 caracteres de nova linha (
Ñ
) e depois uma string vazia (ÿ
). A pilha é agrupada em uma matriz (W
) e, em seguida, o índice da sequência vazia nessa matriz é encontrado.8)
ü`½½
ü
é um caractere de espaço.`
pressiona seu valor ASCII (32) e, em seguida, é reduzido pela metade duas vezes (½½
).9
9
Apenas um literal.
10)
..≥°
..
é um.
caractere literal . Ele é incrementado (≥
), que analisa a sequência como um número, padronizando para 0, pois não é um número válido, e a incrementa para 1. Em seguida, calculamos 10 1 (°
).11)
$$J
$
empurra o valor atual do registro, inicialmente 1. Então, pressione 1 duas vezes, junte a pilha e imprima.12)
3dd
Pressione 3 e dobre duas vezes.
13)
7ƒ
Empurra o 7º número de Fibonacci.
14)
2≡≡≡Σ
Empurre 2, triplique três vezes, deixando 7 2 na pilha. Então pegue a soma da pilha (
Σ
).15
║F
║
é o delimitador para literais de números de base 220. Como isso está no final de uma linha, não precisa ser finalizado.16
4º
Calcular 2 4 .
17
0ò~ò~ò~ò~ò~ò~ò~ò~ò~ò~ò~ò~ò~ò~ò~ò~ò~
ò
é negar bit a bit,~
é negar aritmético. Combinando esses operadores, podemos incrementar 0 17 vezes.18
6DD++
Pressione 6, duplique duas vezes e calcule 6 + 6 + 6.
19
8π
Empurre o 8º número primo.
20
τ╛hτ*
Pressione 10 (
τ
), obtenha o primeiro elemento (h
) de seus fatores primos (╛
), multiplique por 10.21
"≤"≤≤≤≤≤≤≤≤≤≤≤≤≤≤≤≤≤≤≤≤≤A
Da mesma forma que os trechos anteriores, a string
"≤"
é analisada como 0. Nós a diminuímos 21 vezes e, em seguida, obtemos o valor absoluto.22)
1111 11v11%L1111 11v11%L
Aqui calculamos 1111 div 11 mod 11, que é 2, depois imprimimos 2. Em seguida, faça-o novamente.
fonte
PowerShell, pontuação
12, 91 bytes.14, 176 bytesEditar:
(),""
Pondering 15 com algo como,"ZZZZZZZZZZZZZZZA".InDeXof("A")
mas não pode reutilizar o ponto ou o 'e' ..O PowerShell não pode fazer variáveis sem $, não pode fazer exponenciação, deslocamento de bits, Pi, ceil () etc. com símbolos básicos e, na maioria das vezes, digita coercian para / de bool e para / de números como seqüências de caracteres, portanto há relativamente pouco espaço para geração de números com baixa sintaxe.
fonte
0
, então 13 podem ser0xd
. Você pode colocar5
em seu lugar normal, liberando+
para combinar1
s. Isso deve chegar a 14. Se você precisar salvar caracteres, as chaves de hashtable podem ter mais de uma letra. E se você tiver uma maneira livre de obter 1s para somar, poderá fazer10
=1e1
.""-(""-(""-lt(""-""))-(""-lt(""-"")))
. Isso libera$?
para resumir, e então você pode fazer o1e1
que eu sugeri.t
confrontos com as duas versões do 1.(""-eq"")-(""-(""-eq""))
parece melhor, oq
na hashtable é facilmente substituído.TI-Basic (série 83), pontuação
2122232425 (1003 bytes)Consulte http://tibasicdev.wikidot.com/one-byte-tokens para obter uma lista de quais coisas o desafio faz e não permite aqui.
Todos esses podem ser programas completos, pois a última linha de um programa é impressa automaticamente. Mas (exceto 17, que tem várias linhas), eles também podem ser trechos na tela inicial.
Neste ponto, não vejo outra maneira de obter nenhum valor diferente de zero dos tokens restantes disponíveis. Se houver alguma melhoria a ser feita, será necessário primeiro tornar algumas das soluções acima mais conservadoras.
Explicações
A=A
é um booleano 1 porque a variávelA
é igual a si mesma.B
é 0 por padrão,tan(tan(cos(cos(cos(B
é cerca de 2,21, e então tomamos a palavra.C!°
é de 1 grau em radianos, cerca de 0,017. Algum poder positivo disso é tanh (2), cerca de 0,964. Codificamos esse poder em binário usando multiplicação implícita e√(
, em seguida, pegamostanh⁻¹(
.cosh(sinh⁻¹(X
₁₀^(
é um byte embutido para potências de 10 e 10 ^ 10 ^ 0 = 10 ^ 1 = 10.F nPr F
sin(tan⁻¹(X
G≤G
é 1, assim[[G≤G]...[G≤G]]
como um vetor de coluna 13x1. Levar consigo o produto de sua transposição fornece a matriz[[13]]
, cujo determinante é 13.not(H)
é 1.tanh(not(H))
é apenas um número diferente de 0 ou 1 eln(XXX....X)ln(X)^⁻1
será simplificado para o número deX
's' no primeiro log, desde queX
não seja 0 (para que o log exista) e não 1 (para que não dividamos por 0).e^(e^(e^(F
avalia para cerca de 15.15, e depois tomamos a palavra.J≥J
é 1.identity(
constrói uma matriz de identidade 1x1,dim(
encontra suas dimensões de linha e coluna e assum(
adiciona para obter 2. Em seguida, fazemos isso novamente, adicionando as dimensões de uma matriz 2x2 para obter 4 e, novamente, adicionando as dimensões de uma matriz 4x4 para obter 8 e, novamente, adicionando as dimensões de uma matriz 8x8 para obter 16.K nCr K
é o coeficiente binomial 0, escolha 0 ou 1. Somando 17 1, obtém-se 17.i-i-...-i
simplifica para i18i, e tendoabs(
dá 18.rand→L
armazena um número real aleatório em L, mas não nos importamos com o que é. Estamos computandolog(L)⁻¹log(L^19)
, o que simplifica para 19.sinh(sinh(cos⁻¹(I
é um pouco acima de 4,seq(III,I,I,sinh(sinh(cos⁻¹(I
fornece a lista{0 1 8 27 64}
cuja média aritmética é 20.π
deve dar 21; codificamos esse poder no ternário usando multiplicação implícita e³√(
.3×√(
como raiz de cubo e(
para multiplicação.Fix 0
é a configuração para exibir 0 dígitos após o decimal, arredondando todos os valores para números inteiros.sin⁻¹(ᴇ0
avalia para π / 2, e π / 2 multiplicado por si só 7 vezes resulta em 23,59, que arredonda para 24.5*5
é 25. (Seria mais conservador usar5
para obter 5 e adaptar a solução usada lá para 25. Mas dessa maneira economiza muito espaço e*
não é um caractere muito útil porque existe multiplicação implícita.)fonte
SOGL , pontuação
161820, 109 bytes, 47 caracteres usadosfonte
Braquilog , 16 inteiros, 86 bytes
Experimente online! (A entrada controla qual programa é executado, de 1 a N)
Explicação
fonte
Geléia , pontuação 22, 177 bytes
Tente tudo de uma vez ou Tente um de cada vez (o argumento é qual saída você deseja).
Caracteres não utilizados:
fonte
A
para 2 e 4 , não?22¹£€Y
o link principal, poderá executar todos os trechos de uma só vez. tio.run/##y0rNyan8///hzjauOsc6Ry5jLt0jG3UPbTq0icuUy4zLnMuC6/...Reng, pontuação 40, 149 bytes
Experimente aqui!
Todas as letras maiúsculas são números, então isso é legal. Todos, exceto dois, são trechos. Os dois que são programas:
O link fornecido permite ver a pilha durante a execução. Vou escrever uma explicação mais tarde.
fonte
CJam, pontuação 27, 168 bytes
3/1:
X
,Y
,Z
As variáveis
X
,Y
eZ
são inicializadas em 1, 2 e 3, respectivamente.4:
",,,,",
Empurre a corda
,,,,
e pegue o comprimento.5-9:
5
,6
,7
,8
,9
Literais numéricos.
10-20 :
A
-K
Variáveis pré-inicializadas.
21:
U)))))))))))))))))))))
A variável
U
é inicializada para0
. EmpurreU
e aumente 22 vezes.22:
22
Literal numérico.
23:
';(((((((((';((((((((
Empurre o personagem
;
e diminua 9 vezes para obter2
, depois empurre;
novamente e diminua 8 vezes para obter3
.24:
4m!
Tome o fatorial de 4.
25:
TT=TT=+TT=TT=TT=TT=TT=++++
TT=
empurra1
. Este código é equivalente a1 1+1 1 1 1 1++++
.26:
N:i~W-W-W-W-W-W-W-W-W-W-W-W-W-W-W-W-
N
empurra uma string contendo uma nova linha.:i
converte-o em uma lista de códigos de caracteres, produzindo[10]
.~
descompacta, dando10
.W-
é o equivalente a adicionar um. Aumentar 10 dezesseis vezes dá 26.27:
LLLLLLLLLLLLLLLLLLLLLLLLLLL0]0#
Encontre o índice de 0 em uma lista em que 0 esteja no 27º índice.
Personagens ainda disponíveis:
$%&*./1<>?@MOPQRSV[\^_`abcdefghjklmnopqrstuvwxyz{|}
Algumas notas para potencial expansão:
Talvez eu precise alterar de 10 a 20 para usar as variáveis para outra coisa. Se eu conseguir números maiores que 1, posso usar
*
(e possivelmente operadores bit a bit, mas acho que eles não ajudarão muito).Eu ainda tenho
S
, qualquer bem que me faça.Se eu mudar 26 para
N{}/iW-W-W-W-W-W-W-W-W-W-W-W-W-W-W-W-
,:
estará disponível.Eu posso enviar algumas listas vazias e obter mais zeros com as variáveis existentes. Também posso obter π, mas isso não parece muito útil, a menos que eu possa convertê-lo em um número inteiro de alguma forma, e
m
(param[
) ei
já esteja sendo usado.Em termos de manipulação de array, eu posso:
%
ouf
*
|
:M1|2|3|
fonte
U)))))))))))))))))))))
e 22 ser, o22
que seria liberado1
para um trecho posterior.:i
na lista de dígitos (por exemplo,[P]1b
dá3
).''
vez de';
usar o suficiente(
para envolver os dígitos (aproximadamente 65k(
para cada dígito). Isso seria liberado;
para outra coisa, mas não tenho certeza do quanto isso é útil.;
, mas no momento não posso.Haskell , pontuação 13, 86 bytes
Experimente online!
Agradeço a Ørjan Johansen por encontrar uma maneira de corrigir a sobreposição da minha carta, preservando a pontuação de treze. (Também por me esforçar para me notificar sobre isso enquanto essa resposta foi excluída.)
pi/pi
é1.0
.sum[]
avalia para0
,0^0
para1
esum[1,1]
para2
.3
para9
se decodificar.length"eeeeeeeeee"
produz o comprimento da string, que é10
.2+2+2+2+2+2
é12
.0xD
é hexadecimal para13
.fonte