Antecipando que o MathJax seja temporariamente desativado , o MathJax renderizado nesta pergunta foi substituído por imagens. Você ainda pode postar respostas, mas precisará visualizar o MathJax renderizado em outro site .
O PPCG acabou de receber o MathJax ! Isso significa que agora podemos incluir facilmente postagens em fórmulas matemáticas bem formatadas. ( Tutorial prático do MathJax. )
Por exemplo, aqui está a proporção áurea expressa como uma fração contínua infinita :
O código MathJax para esta equação é
$$\varphi=1+\cfrac1{1+\cfrac1{1+\cfrac1{1+\cfrac1{1+\ddots}}}}$$
Você pode encontrar isso clicando com o botão direito do mouse na fórmula e seguindo Show Math As → Comandos TeX .
O $$
meio que é exibido por si só no centro da página, em vez de embutido. Use um único $
para inline.
Desafio
Escreva um programa que receba um número inteiro não negativo, n, e emita o código MathJax para as muitas "etapas" da fração continuada da proporção áurea.
Para manter as coisas padrão nas respostas, você deve usar esta sintaxe exata do MathJax:
Para n = 0, a saída deve ser
$$\varphi=1+\dots$$
.
O qual é renderizado como:Para n = 1, a saída deve ser
$$\varphi=1+\cfrac1{1+\ddots}$$
.
O qual é renderizado como:Para n = 2, a saída deve ser
$$\varphi=1+\cfrac1{1+\cfrac1{1+\ddots}}$$
.
O qual é renderizado como:Para n = 3, a saída deve ser
$$\varphi=1+\cfrac1{1+\cfrac1{1+\cfrac1{1+\ddots}}}$$
.
O qual é renderizado como:
Esse padrão continua para n maior. Você poderia dizer que n representa o número de linhas de divisão na equação.
Notas
\cfrac
é usado em vez dos mais comuns\frac
.\dots
é usado em vez de\ddots
para n = 0.- Pegue a entrada do stdin ou da linha de comando.
- Saída para stdout (com uma nova linha à direita opcional).
- Como alternativa, você pode escrever uma função que receba n como um número inteiro e retorne o código MathJax como uma string (ou ainda o imprima).
Pontuação
O menor envio em bytes vence. O desempatador vai para a finalização anterior.
fonte
Uncaught ReferenceError: textbox is not defined
Respostas:
CJam,
5150 bytesExplicação do código:
Poucos exemplos:
N = 0
N = 4
N = 15
ATUALIZAÇÃO - 1 byte economizado graças ao Sp3000!
Experimente online aqui
fonte
"$$\varphi=1+""\cfrac1{1+"ri:R*'\"ddots"R!>'}R*'$_
\v
para isso\\v
.Python,
706867 bytesIsso define uma função anônima que apenas usa multiplicação e formatação simples de cadeias.
(Obrigado a @xnor por apontar que
\\c
pode ser escrito apenas como\c
, uma vezc
que não pode ser escapado. Infelizmente isso não se aplica\\v
, pois\v
é o ASCII 11.)Tentativas anteriores:
fonte
> <> ,
8986 + 3 = 89 bytesCorra com a
-v
bandeira, por exemploSurpreendentemente> <> não se sai muito mal aqui, pois podemos imitar a multiplicação de cadeias por ter um contador que diminui cada iteração.
(-3 bytes graças a @randomra)
fonte
Retina , 160 + 7 = 167 bytes
; +
(\d*)#(?:(((((((((9)|8)|7)|6)|5)|4)|3)|2)|1)|0) $1$1$1$1$1$1$1$1$1$1$2$3$4$5$6$7$8$9$10# ;
#Cada linha entra em um arquivo de origem separado, então adicionei 1 byte para cada arquivo após o primeiro . No entanto, por conveniência, o Retina agora também suporta o
-s
sinalizador da linha de comando, que permite colocar tudo isso em um único arquivo (nesse caso, as novas linhas são tratadas como separadores de arquivos).A maior parte do código (98 bytes) é usada para converter a entrada de decimal em unária (arquivos 3 a 6). A idéia básica do código é envolver a entrada
$$\varphi=1+\dots...$$
, converter a entrada em unário e expandir\dotsN
ou\ddotsN
avançar para o próximo nível da fração continuada (enquanto reduzN
paraN-1
).fonte
Julia,
7673 bytesIsso cria uma função lambda que recebe um único número inteiro como entrada e retorna o MathJax como uma sequência. Para chamá-lo, dê um nome, por exemplo
f=n->...
.Infelizmente, as barras invertidas e os cifrões precisam ser escapados nas strings de Julia, porque ambos têm um significado especial. A concatenação de strings é realizada usando
*
e repetição de strings com^
.Exemplos:
Sugestões são bem-vindas como sempre!
Edit: Salvo 3 bytes graças ao plannapus!
fonte
"d"^(n>0)
em vez de(n>0?"d":"")
torná-lo mais curto."string"^0
era legítimo.Elemento, 63 caracteres
Esta é a solução mais direta. Infelizmente, a grande quantidade de símbolos na saída causa um aumento significativo no comprimento do programa (colocar as strings no programa faz com que os símbolos executem operações diretamente). Tenho certeza de que há espaço para jogar golfe, mas não tenho mais tempo no momento.
Como esse idioma ainda é relativamente desconhecido, aqui está um link para o intérprete , escrito em Perl.
fonte
T-SQL,
229227138Já faz um tempo desde que eu fiz uma resposta SQL e, como sempre, é muito detalhada. Editar É claro que eu o complicava demais e não precisava de uma consulta recursiva.
Original
Isso cria uma função de tabela embutida que usa uma consulta recursiva para inserir itens adicionais
cfrac1{1+\
por iteração. Mudar os pontos para ddots era caro, mas salvou alguns se livrando da substituição :). Também ter que converter a string original como 'VARCHAR (MAX)' custa um pouco.É usado da seguinte maneira SQLFiddle :
fonte
Ruby,
76757170 bytesIsso parece suspeito, então, por favor, deixe-me saber se eu errei em algum lugar.
Aliás, esta é a primeira coisa que eu já escrevi em Ruby - eu estava procurando uma linguagem que suportava a repetição de strings multiplicando, e Ruby parecia fazer o truque.
Para ser aplicado assim:
fonte
J, 60 bytes
Uso:
Método:
A corda
'$$\varphi=1+\ cfrac1{1+\ d dots } $$ '
é cortada em espaços e as partes são repetidas1 n signum(n) 1 n 1
vezes e, em seguida, essas partes são concatenadas.Experimente online aqui.
fonte
R,
9390Muito parecido com as outras respostas. Obrigado a @plannapus pela dica de digitalização.
cat
usado em vez de colar0, pois o resultado acabaria com\\
vez de\
.Em uso
fonte
n
como stdin em sua primeira ocorrência, você pode salvar alguns personagens:cat("$$\\varphi=1+\\",rep("cfrac1{1+\\",n<-scan()),if(n)"d","dots",rep("}",n),"$$",sep="")
JavaScript,
11410910685 bytes graças a George ReithEsta é a minha primeira participação em um concurso de codegolf! Por favor me diga como melhorar.
Entrada anterior (106 bytes):
Entrada anterior (109 bytes):
Entrada anterior (114 bytes):
Cole no console do navegador e chame como
f(n)
onden
está o número de 'etapas'.Código simplificado :
fonte
Pitão - 52 bytes
A abordagem simples no Pyth, praticamente roubada da solução Python do @ Sp3000. Usa o operador de formatação de string
%
.Experimente online aqui .
fonte
Pitão, 50 bytes
fonte
JavaScript (ES6), 76
80Parcialmente recursivo. O single / double d é a parte mais irritante.
Teste no console Firefox / FireBug
fonte
Python,
90116Como a solução mais eficiente já foi lançada várias vezes, eu substituo a string
Edit: caramba, esquecido o em
dots
vez deddots
paran=0
, agora a solução recursiva com uma cláusula extra é muito feia para competir.fonte
n=0
caso especial (pontos em vez de pontos).Haskell, 86
Essencialmente, a mesma abordagem de todas as soluções aqui.
drop(0^n)"ddots"
é fofo!fonte