Desafio
Dada uma entrada de um número inteiro, (em que ), a saída do gráfico de a partir de a , inclusive.
Onde é a parte real do número complexo .
Observe que
Saída
A saída pode estar na forma que você desejar (por exemplo, uma imagem ou uma janela etc.). A arte ASCII não é permitida.
O gráfico não precisa ter eixos (para permitir que idiomas sem funções gráficas incorporadas concorram).
Se uma imagem é impressa, cada lado deve ter mais de 500 pixels. Da mesma forma, o gráfico deve preencher a imagem da melhor maneira possível.
O intervalo mínimo entre gráficos é 0,05.
Gráficos vetoriais são permitidos.
Exemplos
Para uma entrada de 2
:
Para uma entrada de 1
:
Você deve colocar as saídas correspondentes em sua resposta (n = 1 en = 2).
Ganhando
O código mais curto em bytes vence.
code-golf
math
graphical-output
complex-numbers
trigonometry
Beta Decay
fonte
fonte
ASCII art is disallowed.
(ಥ﹏ಥ)Respostas:
MATL,
22 1816 bytesObrigado @LuisMendo por mais -2 bytes!
Experimente em matl.suever.net
fonte
TI-Basic,
2621 bytesSaída para N = 2:
fonte
Bash + Gnuplot,
5645 bytes(-11 bytes graças a Noiralef!)
Salva o gráfico resultante como uma
png
imagem nomeadaA
no diretório de trabalho atual.Saídas de exemplo
Para n = 1 :
Para n = 2 :
fonte
gnuplot -e "se t png;p[-3:3]real((-2)**x)">A
Python 3 com matplotlib ,
10372 bytes-12 bytes graças a DSM (um módulo é instalado ao lado
matplotlib
chamadopylab
com a funcionalidade necessária "fazer Python em um repl mais como Matlab!" - estranho, mas é verdade)-18 mais como resultado (Pylab tem muitas funções numpy também!)
- 1 byte graças a Ajasja (substituindo
arange(-60,61)/20+0j
porarange(121)/20-3+0j
)n = 2,1
fonte
from matplotlib.pyplot import*
se iniciar o ipython com o sinalizador --pylab --matplotlib?%pylab
dá-lhe Numpy bem e se você estiver em um caderno que você não precisa de um show no final :)Mathematica, 41 bytes
A saída parece exatamente como mostrada no desafio, exceto pela fonte dos números (que eu suspeito que foi criada com o Wolfram Alpha).
fonte
MATLAB,
3530 bytesIsso define uma função anônima. A saída é feita através de uma nova janela com uma saída redimensionável de gráfico vetorial. O MATLAB
plot
ignora automaticamente a parte imaginária das coordenadas y, desde que você forneça as coordenadas x correspondentesn=3
. A saída a seguir é para .fonte
R, 30 bytes
n
= 1n
= 2fonte
x=seq(-3,3,.05);plot(x,Re((0i-n)^x))
R, 29 bytes
n
é fornecido através do stdin. Resultado para n = 1:E para n = 2:
fonte
n
como as outras respostas e remover cinco caracteres da sua resposta? Enfim, resposta louca. Eu sempre esqueçocurve
.n
. As respostas matlab, matl, TI-Basic e mathematica recebem entrada como stdin (tanto quanto eu as entendo), enquanto as respostas python e VBA criam uma função. Mesmo que seja permitido, é apenas uma questão de gosto pessoal: simplesmente não gosto de predefinir variáveis como uma forma de entrada.Excel VBA,
168160147138 Bytes (células como pixels na escala 100x)Economizou 8 bytes graças a KyleKanos
Economizou 22 bytes graças a Taylor Scott
Formatado, fica assim:
Fato de divertimento: O VBA não tem um built-in
pi
variável por isso temos que avaliá-lo como uma função de planilha onde ele faz existir.n = 1 n = 2
Comecei com uma versão gráfico em 193 bytes, mas fez obter resultados mais bonita.
n = 1 n = 2
fonte
(-n)^x
vez de pi codificado?atn(1)*4
no pi?MATLAB,
3533 bytesObrigado fo @flawr por remover 2 bytes!
Isso define uma função anônima. Para chamá-lo com entrada
2
, useans(2)
(ou atribua a função a uma variável comof
e usef(2)
).Saída é gráficos vetoriais (janela redimensionável). O intervalo de amostragem no eixo x é determinado automaticamente pela
ezplot
função, mas parece ser mais do que suficiente.Um aviso é produzido no STDERR porque a função passada para
ezplot
(@(x)real((-n)^x)
) não é vetorizada, mas o gráfico é gerado.Exemplo para
n = 2
:fonte
ezplot = la-z-plot
: D (eu continuo esquecendo sobre este ...)ezplot
isso. Infelizmente, o mesmo não pode ser ditofplot
, portanto, nenhum byte pode ser salvo lá.Caderno Jupyter e Python 3; 53 bytes
Três bytes salvos graças a @ Jonathan Allan.
fonte
x=arange(-60,61)/20
para corrigir os problemas destacados pelo DSM a um custo de 2 bytes. Se você adicionar0j
aarange
ele pode ser usado para mudar paraplot(x,(-n)**x)
salvar 4.arange(121)
!PostScript Encapsulado; 232 bytes
Agora, já que esta é uma imagem vetorial em si ...
fonte
TikZ + PGFPlots , 175 bytes
Compile com, por exemplo ,
latexmk -cd -f -pdf in.tex
uma saída em pdf. Durante a compilação, o usuário é solicitadon
.Saídas de amostra (convertidas em png) para n = 1 en = 2:
fonte
Math.JS Grapher , 20 bytes
Por puro acaso, esse utilitário gráfico é o TC (na maioria das vezes, os loops infinitos simplesmente quebram.) E, por natureza, sua principal saída é o gráfico.
Como funciona
r(n)=
atribui uma funçãor
que leva o argumenton
à expressãof(x)=re((-n)^x)
.re((-n)^x)
é praticamente letra por letra a descrição do desafio. Mas isso atribui a funçãof(x)
a isso, que o grapher gera implicitamente como um gráfico de linhas.Como testá-lo
Você pode usar este site, digitar essa função lá e chamá-lo com
r(input)
.Saída
fonte
J ,
3736 bytesAgradeço ao meu colega Marshall pela orientação. -2 graças a FrownyFrog.
Função de prefixo tácito anônimo.
fonte
20%~i:@60
pode seri:@3j120
.Dyalog APL, 41 bytes
Como funciona:
O comando de usuário
]chart
, neste caso, tem dois argumentos vetoriais,x
ey
e traça os gráficos:fonte
SmileBASIC, 82 bytes
O gráfico preenche a tela inteira, mesmo quando N é menor que 1.
Quando N é maior que 1, você pode dimensionar Y para estar entre -1 e 1 dividindo-o por
n^3
. Eu já estou fazendon^x
, en^x / n^3
pode ser simplificado paran^(x-3)
. No entanto, quando N é menor que 1, tenho que dividir Y por suan^-3
vez. Isso é equivalente an^(x+3)
.Eu posso usar
n^(x-3*sign(n-1))
para usar-3
sen>1
, e+3
sen<1
Imagens em breve
fonte
Excel VBA, 133 bytes
Script de janela imediato que recebe entrada
[A1]
e gera umChart
objeto para oSheet1
objeto.Ungolfed
Sub
Versão de rotina completa . A E / S permanece inalterada.Saída
fonte
Julia 0.6 com Plots.jl, 46 bytes
Isso precisava de uma representação de Julia!
No entanto, não há muito para jogar aqui, exceto (ab) usando sobrecarga de operador para salvar bytes na definição de função e usando
0im-n
para tornar o número de entrada complexo onde eu normalmente poderia ter usadoComplex(n)
. Isso é necessário porque, em Julia, por motivos de estabilidade de tipo , o^
operador retorna resultados complexos apenas quando a entrada é o próprio complexo. Então, aqui tornamos um número complexo adicionando0im
ie. 0i.Uma coisa interessante sobre o pacote Plots.jl é que ele escolhe automaticamente o back-end para usar com base em quais pacotes de plotagem você instalou e de onde você está executando o
plot
comando. O gráfico acima foi criado com o back-end do GR , mas se eu não o tivesse instalado (ou se eu executasse explicitamente umplotly()
comando como o fiz para isso), ele teria usado o back-end mais interativo do Plotly e emitido isso (que parece um IMO um pouco melhor):Existe até um back-end UnicodePlots , para imprimir um gráfico no terminal (ou salvar em um arquivo de texto) usando caracteres Unicode e códigos de cores. O SE continua atrapalhando o alinhamento da trama, se eu tentar colá-lo diretamente, então aqui está uma captura de tela do terminal:
PS: A fórmula alternativa, , tem o mesmo comprimento:Re((−n)x)=nxcos(πx)
fonte