Se você gosta disso, considere participar de:
Faça 12 trechos / expressões , no mesmo idioma, que resultem nos números de 0 a 10 e 42, respectivamente, mas sem gravar dados numéricos, de seqüência de caracteres ou caracteres literais.
Dados incorporados , como PI()
e ALPHABET()
, são bons, assim como, por exemplo, as constantes U, X, Y, Z e A de CJam, e as combinações BLEND, CHORD, CENTER, BREAK e LINES do Processing.
Todo snippet deve ser capaz de se manter por conta própria, ou seja, eles podem não ser interdependentes. No entanto, dentro de um único trecho, você pode atribuir uma variável e usá-la livremente, desde que se refira diretamente a ela pelo nome, e não por meio de uma string que contenha seu nome.
Todos os trechos devem ser válidos no computador do remetente no momento do envio (conforme relatado pelo SE), mas não podem depender de condições locais incomuns, como número de arquivos em um diretório, data ou hora exata ou entrada específica do usuário .
Exemplos de trechos válidos
3: INT(LOG10(YEAR(TODAY())))
porque permanece verdadeiro no futuro previsível
4: CUBICROOT(LEN(CHARACTERSET()))
porque um conjunto de caracteres de 256 letras é muito comum
8: SQRT(SYSTEMTYPE())
porque sistemas de 64 bits são muito comuns
Exemplos de trechos inválidos
5: LEN(USERNAME())
porque a maioria das pessoas não usa "Admin" como login :-)
9: LOG10(SYSTEMMEMORY())
porque funciona apenas em sistemas com exatamente 1 GB de memória
42: CODE("*")
porque contém um literal de cadeia / caractere
O resultado de cada snippet deve resultar em um número real (valor, int, float etc.) que pode ser usado para cálculos adicionais usando o mesmo idioma do snippet, ou seja, não uma sequência de texto representando esse número.
Somente idiomas baseados em caracteres são permitidos.
A pontuação é a contagem total de bytes de todos os 12 snippets combinados. As novas linhas que separam os trechos não são contadas.
Observe que as regras acima podem impedir a participação de alguns idiomas, mesmo que eles estejam completos no Turing.
Perguntas frequentes
P Os programas podem aceitar qualquer entrada?
R Sim, mas você pode não apenas solicitar entrada e inserir o número relevante.
P Os dígitos físicos (não dados) são permitidos?
A Sim, por exemplo LOG10()
.
P Os símbolos no Ruby contam como literais?
R Sim.
P A pontuação inclui novas linhas entre cada snippet?
A No.
P O TI-BASIC "baseado em caracteres" é suficiente para ser válido?
R Sim.
P Falso e verdadeiro contam como literais numéricos?
R Não, eles são aceitáveis.
P Podemos usar um literal numérico para chamar uma função se essa for a única maneira e o número não influenciar a saída da função?
R Sim, se essa for a maneira normal de escrever código no seu idioma.
P Minha linguagem assume que existe um [algo] no início de cada programa / expressão. Devo incluí-lo ou meus trechos devem funcionar se colocados no meio de um programa / expressão?
R Eles devem apenas trabalhar no meio de um programa / expressão.
P E os literais regex?
A Proibida, com exceção de línguas que apenas fazer expressões regulares.
P É aceitável um pedaço de código que possa imprimir todos os números especificados?
R Não, eles precisam ser separados e independentes entre si.
P Posso assumir um padrão semelhante int main() {}...
ou equivalente?
R Sim.
P Quais tipos de dados de saída são permitidos?
A Qualquer tipo de dados numérico, como int, float, etc.
P Preciso imprimir o resultado de cada snippet?
R Não, disponibilizar o resultado para uso posterior é suficiente.
P São permitidas variáveis predefinidas?
R Sim, e eles são redefinidos (se alterados) para cada trecho.
Q π e e são considerados literais numéricos?
R Não, você pode usá-los.
P Posso retornar 4 e 2 em células diferentes para 42?
R Não, eles devem estar conectados como um número.
P Bytes ou caracteres?
A Bytes, mas você pode escolher qualquer página de código desejada.
P Podem ser usadas funções constantes e variáveis predefinidas como J 9:
, Actually 9
e Pretzel 9
?
R Sim, se o vocabulário for finito (19 para J, 10 para Actually e Pretzel).
Respostas:
Hexagonia , 13 bytes
Experimente online!
No Hexagony,
0
through9
são funções que multiplicam a memória atual por 10 e adicionam o número representado pelo nome da função. Portanto, o primeiro trecho está vazio quando as memórias começam como0
.Por exemplo, se a memória atual estiver
65
, a execução da função3
criará a memória atual653
.(Para os que votam para baixo: votem para baixo quanto quiserem; eu estou pronto.)
fonte
Função , 1222 bytes
Além dos literais numéricos, há duas maneiras de produzir um valor (qualquer valor) no Funciton: expressões stdin e lambda. Stdin é uma caixa única, enquanto uma expressão lambda completa requer mais sintaxe, então eu vou com stdin. No entanto, embora stdin possa ser qualquer coisa, todos os trabalhos a seguir, independentemente de qual entrada é fornecida.
Todas as funções de biblioteca usadas aqui existiam antes do lançamento do desafio.
0 (40 bytes em UTF-16)
Isso usa a sintaxe bruta por menos que. Um valor nunca é menor que ele próprio, portanto, o resultado disso é 0.
1 (52 bytes em UTF-16)
⌑
retorna uma sequência lenta que contém um único elemento eɕ
conta o número de elementos. (A sequência lenta é preguiçosa o suficiente para que esse trecho não avalie realmente o stdin!)2 (70 bytes em UTF-16)
= 2¹.
ʂ
gera todas as subsequências de uma sequência e, assim, transforma uma sequência de n elementos em um com 2ⁿ.3 (88 bytes em UTF-16)
= 2 + 1.
♯
incrementa um valor em 1.4 (88 bytes em UTF-16)
= 2².
5 (106 bytes em UTF-16)
= 4 + 1.
6 (106 bytes em UTF-16)
= 3 fatorial.
7 (110 bytes em UTF-16)
= A (2, 2) (função Ackermann).
8 (118 bytes em UTF-16)
= 2 << 2 (shift-esquerda).
9 (128 bytes em UTF-16)
= 3 × 3.
10 (146 bytes em UTF-16)
= 5 + 5.
42 (170 bytes em UTF-16)
= 6 × (6 + 1).
fonte
JavaScript,
144141140138132125123 bytesCom a ajuda de @ edc65 , @Sjoerd Job Postmus , @DocMax , @usandfriends , @Charlie Wynn e @ Mwr247 !
fonte
-~-~Math.PI
e-~-~-~Math.PI
salvar outro byte (duas vezes).(escape+NaN).length
. PS Hoje eu aprendi que o JavaScript é realmente estranho ...NaN
conta como um número, mas é literalmente Não é um número: PMouse-2002 ,
27261714 bytesOs primeiros trechos pressionam 0-10 e
ZR+
empurram25
então17
e25 17 + 42 =
é1
.fonte
int main() {}...
equivalente padrão que o fará executar.CJam,
2724 bytesObrigado a @ MartinBüttner por -1 byte!
Experimente online!
fonte
Brainfuck, 70 bytes
Cada linha deve ser executada individualmente.
Os 10 primeiros são auto-explicativos: incrementamos o valor da célula via cada mais.
O 42 é muito mais complexo. Ele se baseia no fato de que o intérprete mais covarde usa células de 8 bits, o que significa que todas as operações nele são realizadas no módulo 256.
--
Define a célula # 0 a 254. Em seguida, inserimos um loop que é executado até a célula # 0 ser 0. Cada iteração adiciona 1 à célula nº 1 e adiciona 6 à célula nº 0. Esses loops são executados 43 vezes, então a célula 1 é 43. Finalmente, subtraímos 1 da célula 1 para torná-la 42.Eu consegui os 42 mais eficientes já encontrados em http://esolangs.org/wiki/Brainfuck_constants
fonte
Escuridão ,
339303 bytesÉ aqui que a escuridão realmente brilha . Pegue? : ~)!
Sem impressão (substituiu o espaço
\s
na primeira linha, pois não será exibido de outra forma):Com impressão:
Cada linha deve ser executada individualmente neste caso, pois o programa termina na luz (um espaço). No entanto, é possível escrever isso em uma ou várias linhas no mesmo programa.
A escuridão regular (█) incrementa um registro em 1, e a instrução ■ (algum tipo de mini-escuridão) gera o conteúdo do registro.
fonte
Perl 5,
86757166 bytesTodos os
^F
s são caracteres de controle literais (0x06 em ASCII) e, portanto, um único byte.Obrigado ao msh210 por salvar 11 bytes e ao Dom Hastings por 9 bytes!
fonte
!$[+ord$/ # -1 + 10
Eu não entendo. Na linha 2 você disser que!$[
lhe dá 1, não -1, então esse trecho dá 11.MATL, 30 bytes
H
,I
, EK
são constantes predefinidas para 2, 3, e 4 (comopi
).O
el
são funções que retornam uma matriz de zeros (O
) ou uns (l
), o tamanho padrão é 1x1.:
faz um vetor e os
soma, entãoK:s
faz um vetor de 1 a 4 e o soma para obter 10.Yq
é a n-ésima função primária, assimKYq
como o quarto primo, 7.fonte
Yq
função (e sua implementação) foi uma agradável sugestão de vocês :-)IK+
funcionaria tão bem para 7, mas é um pouco chato: PProlog,
11399 bytesTrechos:
Combina as constantes matemáticas e e pi de diferentes maneiras convertidas em int.
Editar: salvou 14 bytes utilizando flutuadores para 0-2.
fonte
PHP,
15714591 bytesA primeira vez que publiquei no Code Golf, achei que eu tentaria. Eu melhorarei eventualmente: P Se você encontrar algum ponto óbvio (para você) onde eu possa salvar personagens, me avise.
Edição: Percebi que não precisava de ponto e vírgula, uma vez que estes são apenas trechos.
EDIT2: Obrigado ao Blackhole por muitas sugestões!
fonte
LC_ALL
para 0 (-1 byte),DNS_A
para 1 (-3 bytes),LOCK_NB
para 4 (-3 bytes),LC_TIME
para 5 (-7 bytes),LOG_INFO
para 6 (-8 bytes),INI_ALL
para 7 (-5 bytes),…IMG_WBMP
Para 8 (-4 bytes),SQL_DATE
para 9 (-9 bytes),SQL_TIME
para 10 (-3 bytes) eLOG_INFO*INI_ALL
para 42 (-11 bytes). Portanto, um total de 51 bytes salvos! Essas constantes são válidas pelo menos no PHP 5.6.1 no Windows.LC_ALL
uma coisa dependente de localidade?setlocale()
para alterar todas as categorias de localidades. Mas o valor da constante em si é obviamente independente da localidade :).Python 2,
191159158157156149146 bytesMinha primeira submissão, espero ter acertado tudo! Com base no tempo que gastei nisso, acho que certamente há um melhor para alguns deles.
Muito obrigado a FryAmTheEggman!
fonte
True
como idioma para 1 deve ser aceitável, pois não sei quando eles não são equivalentes a trechos.True is not 1
mas para todo o cálculo baseado em 1, ajuda! Editando agora.#8 len(`id(id)`)
. Então 8, 9 e 10 serão mais curtos. Além disso, talvez adicione um hiperlink para Experimente online .len(`{()}`)
11 bytes, e isso fornece de 7 a 10 menores.C #, sem usos, 234 bytes
Isso é muito mais chato do que eu pensava inicialmente. Eu tinha idéias bastante variadas, como
new[]{true}.Length
etrue.GetHashCode()
etypeof(int).Name.Length
euint.MinValue
etc., masnew int()
venci todas elas.fonte
var a = new int();
e depois usassea
em cada trecho?using
declaração.int a=-~-~new int();a<<a
PowerShell, 147 bytes
Eles são usados
+
para converter implicitamente coisas em números inteiros. Os números posteriores usam Enums dos limites do .NET Framework do PowerShell, que possuem os valores corretos.-~-~-~
usado em JavaScript, as respostas C # e PHP estariam- -bnot - -bnot - -bnot
no PowerShell.x^y
exponenciação usada em respostas Perl, oux**y
em Python ou JavaScript ES7, seria[Math]::Pow($x,$y)
constantes e e Pi são os caracteres pesados
[Math]::E
e[Math]::PI
fonte
x^y
é xor em JavaScript. O JavaScript (ES7) possui**
para expoentes. FonteDC , 35 bytes
Para testar os trechos, anexe a
f
para imprimir a pilha e passe essa sequência paradc
:fonte
E
eF
aqui estão os dígitos (mesmo quando são maiores que o raio de entrada). A evidência para isso é que eles combinam como dígitos; por exemploF0
->150
. Você pode ver o mesmo comportamento com dígitos decimais depois de alterar o raio de entrada e saída.TI-BASIC, 41 bytes
0 ~ 10:
42:
No TI-BASIC, todas as variáveis de uma letra não inicializadas começam em 0 e
Xmax
(o limite direito da tela da tela do gráfico) começa em 10.A constante matemática
π
é de um byte , mase
tem dois bytes.fonte
Python 2,
306275274 bytesEu usei o fato de que para qualquer x (número inteiro e não 0) a expressão
x/x
é igual a 1 e brincamos com algumas operações bit a bit.Ajustei os trechos de forma que eles ainda atendam aos requisitos (graças a @nimi isso me salvou em 24 bytes), mas você deve testá-los manualmente. Aqui está o código e a contagem de bytes individuais:
fonte
i=id(id);r=~i/i
Math ++, total de 92 bytes
0 (1 bytes):
a
1 (2 bytes):
!a
2 (3 bytes):
_$e
3 (4 bytes):
_$pi
4 (7 bytes):
_$e+_$e
5 (8 bytes):
_($e+$e)
6 (9 bytes):
_$pi+_$pi
7 (8 bytes):
_($e*$e)
8 (9 bytes):
_($e*$pi)
9 (10 bytes):
_($pi*$pi)
10 (12 bytes):
_$e*_($e+$e)
42 (19 bytes):
_($pi+$pi)*_($e*$e)
fonte
Javascript (navegador Env),
155136130 bytesGraças a:
@Ismael Miguel : 155 -> 136 -> 130 bytes
fonte
-~[]+[]+-[]
para produzir10
. Ele retornará uma string, mas ainda poderá ser usada como um número. Além disso, você pode usar-~(top+top.s).length
para calcular42
(-8 bytes) e diminuir sua dependência no Google Chrome. Para economizar mais 3 bytes, use o(P=Math.PI)*P>>+[]
cálculo 9.~(~[]+[]+-[])
para gerar9
. Isso deve reduzir mais alguns bytes.+[12]
dá12
e+[1, 2]
dáNaN
. Eu odeio JS[1,2,3]
=>"1,2,3"
e strings convertidas em números como"12"
=>12
mas se houver caracteres não numéricos na sequência, o elenco retornaráNaN
.+[1,2]
lança para uma sequência e depois para um número, mas a sequência contém uma vírgula e"1,2"
se tornaNaN
.Sério,
3933 bytesCoisas entre parênteses são explicações:
Hexdumps de programas:
Graças à quintopia por 6 bytes!
fonte
HlPD
salva 2 bytes em 42, eQlP
salva um byte em 7, eQlª
salva um byte em 9 eQl╙
salva um byte em 8. Acho que isso reduz seriamente os 33 bytes ao todo, amarrando Pyth.dc, 42 bytes
Resultados
Não há muitas maneiras de gerar novos números com dc. Eu uso
O
: base de saída, inicialmente 10;K
: precisão, inicialmente 0;z
profundidade da pilha, inicialmente 0;Z
dígitos significativos do operando. Nós os combinamos com os operadores aritméticos usuais.Programa de teste
fonte
Mathematica, 101 bytes
Tenho certeza de que alguns deles são abaixo do ideal. Esses colchetes são realmente caros.
Para consistência, os dois primeiros também poderia ser
E-E
eE/E
é claro, mas eu pensei que é muito bacana para chegar0
e1
partir de um cálculo com variáveis indefinidas.fonte
0
. Sea
obtiver o valor0
posteriormente, isso não será um problema, desde que não seja utilizado quandoa/a
for avaliado.Japonês ,
343330 bytes1 byte salvo graças a @ThomasKwa
Aqui está o que cada um dos diferentes caracteres significa:
fonte
A-I
são variáveis que, por padrão, são atribuídas a vários números, como mostrado acima.A-F
são atribuídos a 10-15. Isso invalida essas variáveis?Marbelous , 98 bytes
Não é muito empolgante, depende dos
?n
dispositivos que transformam qualquer mármore em um valor aleatório no intervalo 0..n (inclusive), um efeito colateral disso é que?0
transforma qualquer mármore em um 0, independentemente da entrada. Eu acho que o uso de literais é permitido porque o valor não afeta o resultado e não há outra maneira de chamar uma função uma vez no Marbelous.0:
1:
...
9:
10:
42:
fonte
> <> , 86 bytes
ln;
lln;
llln;
lll+n;
lll:+n;
llll+n;
llll++n;
oullll:+n;
lllll+n;
lllll:+n;
lllll++n;
oullllll+n;
llll+:+n;
oulll:l+*n;
llll*ll+*n;
Depende do tamanho da pilha para obter seus literais.
fonte
n
em cada um porque as funções em idiomas baseados em pilha podem deixar a saída na pilha por -11 bytes.;
total de 22 bytes e considerar o final da função atingida no final da linha, mas é um pouco ambíguo, pois><>
não possui funções prontas para uso.><>
, suas funções precisam aceitar uma posição de retorno (x & y) na pilha, além de seus parâmetros, verifique se elas não atrapalham os cálculos ([
é útil nesse contexto), depois pule para a posição de retorno após concluir a execução. Eu tinha feito um POC há um tempo atrás, confira se você estiver interessado;
. A razão pela qual eu digo para sair;
é porque, caso contrário, não há como denotar quando a função termina sem a.
. A maioria das pessoas parece considerar isso justo, mas eu poderia tentar escrever uma meta post específica aqui, se você estiver preocupado.><>
trechos.
seria a melhor maneira de manter a definição de função, conforme descrito na resposta mais votada do meta post, no entanto, eu concordo que;
é uma boa alternativa que requer menos explicações.Fórmulas do MS Excel,
163151150143 bytesNão é exatamente uma linguagem de programação, mas aqui vai ...
PI()
é usado na maioria dos casos, pois é a maneira mais curta (que eu conheço) de introduzir um valor numérico sem usar um número ou string literal.N
converte várias coisas (incluindo booleanos) em números eT
converte várias coisas em texto.TYPE
retorna 2 para um argumento de texto e 4 para um argumento booleano.TRUNC
descarta a parte fracionária (ou seja, arredonda números positivos para baixo),EVEN
arredonda para o próximo número par eODD
arredonda para o próximo número ímpar.CODE(-PI())
é o código ASCII do primeiro caractere da conversão para o texto de -π, ou seja, 45 (para "-").EDIT: Removidos sinais de igual da contagem de bytes (-12!) - como apontado por Nᴮᶻ nos comentários, eles não devem ser incluídos.
EDIT 2: Supondo que o restante da planilha esteja vazio, é possível usar uma referência a uma célula vazia como zero (novamente, sugerido por Nᴮᶻ), desde que inclua um sinal de menos (ou use-o em outra expressão numérica) para resolver digite ambiguidade.
fonte
=Z9
=
, obrigado. Em relação à sua sugestão, evitei referências de célula de propósito, para garantir que as fórmulas sejam independentes do conteúdo da tabela - seZ9
contiver um texto,=Z9
não retornará mais zero. Decidi não assumir nada sobre a mesa.Z9
em uma planilha vazia é um valor vazio que é convertido0
em muitos casos, mas pode ser convertido em""
(string vazia) se usado em algumas expressões - como uma variante não inicializada do VBA - portanto, não é estritamente equivalente a0
. Por exemplo,= 0&"a"
é avaliado como"0a"
mas é= Z9&"a"
avaliado"a"
. Isso pode ser resolvido, no entanto, adicionando um unário-
à referência (forçando-o a ser numérico - novamente, como no VBA). Então-Z9
pode ser usado como zero. Acabei de atualizar a resposta. Obrigado novamente.DUP , 68 bytes
Try it here.
Existem muitas maneiras de fazer isso, mas estou abusando da pilha de retorno dessa.
Explicação
Para entender isso completamente, você precisa entender o comportamento do DUP em relação às lambdas. Em vez de enviar o próprio lambda para a pilha, ele realmente envia o IP atual para a pilha quando o lambda é detectado. Isso pode explicar os três primeiros trechos, que envolvem lambdas.
Os próximos trechos usam a pilha de retorno. Quando
!
é executado, o IP atual é enviado para a pilha de retorno e a parte superior da pilha é definida como o novo IP para iniciar a execução do lambda.)
aparece um número da pilha de retorno na pilha de dados.Isso é o suficiente para explicar o restante dos trechos. Se você ainda não o recebeu, lembre-se de que o Stepbotão é bastante útil!
fonte
05AB1E,
403824 bytesfonte
Y·
é mais limpo da pilha queYx
,X
pode ser usado em vez deº
aqui (o padrão é1
,º
significalen(stack)>1
, portanto, não é o padrão para nada). Além disso, seu número de bytes é 24, não 35 (CP-1252, as novas linhas não contam se forem trechos separados).₆t
agora pode ser 6 (push 36, raiz quadrada) para salvar um byte ( Experimente online ).D1ffe7e45e , 112
Cada linha é um trecho diferente.
Os números no programa não contam como literais numéricos, pois são usados apenas como comandos.
O último pode definitivamente ser jogado mais.
Edição: Eu tenho o intérprete trabalhando e todos os trechos funcionam. Se você quiser testar se, adicione
0f0f
no final do snippet para que o programa seja encerrado.fonte
+
em Brainf ** k). Eu pensei que, como eles estavam sendo usados como comandos e não como literais numéricos, ainda contava. Excluirei a resposta, caso contrário.Pyth,
353433 bytes-1 byte por @Mimarik
Existem várias possibilidades para alguns programas.
0, 1 byte
1, 2 bytes
2, 3 bytes
3, 3 bytes
4, 3 bytes
5, 4 bytes
6, 3 bytes
7,4 bytes
8, 3 bytes
9, 2 bytes
10, 1 byte
42, 4 bytes
Tudo isso envolve duplo básico (
y
comandos ), +1 (h
) e -1 (t
) oul
(comprimento de uma string). A variável Z é inicializada em zero.Para 5,
b
é inicializado com um caractere de nova linha. Backtick fornece"\n"
(incluindo as aspas, e o comprimento dessa sequência é 4.Experimente aqui !
fonte
yhyT
. ( Rejeitei a edição de acordo com meta.codegolf.stackexchange.com/questions/1615/… )