Seu desafio é desenhar / traçar um dos corações abaixo. O tamanho deve ter pelo menos 50 x 50 pixels (os gráficos vetoriais estão OK). Você pode escolher qual dos corações deseja desenhar / traçar. Eixos, linhas de grade etc. são aceitos. Deve haver pelo menos 100 coordenadas / pontos distintos no gráfico. O coração pode ser preenchido com cores, se você quiser.
As equações são:
ou
t
está no intervalo [-1, 1]
.
ou
ou
Este é o código-golfe, portanto o código mais curto (em cada idioma) em bytes vence. Forneça a saída (ou link para um intérprete online).
fonte
IF (X²+ANS²-1)³-X²ANS³<0
porIF (X²+ANS²-1)³<X²ANS³
?Perl, 86 bytes
Corra com
perl -E
.Plota um coração ASCII preenchido, usando a primeira equação. Observe que o eixo x é esticado por um fator de ~ 1.265: isso é para neutralizar o fato de que as fontes de terminal geralmente são muito maiores verticalmente do que horizontalmente.
Resultado:
Explicação (desde que o OP solicitou):
Esta é simplesmente a primeira equação, ligeiramente reorganizada para torná-la mais curta. $ y representa diretamente y na fórmula. $ _ é inicialmente proporcional a x, mas é multiplica-se consigo mesmo (
$_*=$_/1e3
), tornando-o proporcional a x². Como x² é usado duas vezes na fórmula, isso economiza alguns bytes.1e3
significa 1000 e foi escolhido porque é curto e o resultado parece bom.**
é o operador de energia do Perl. Eu uso>0
mais do que==0
porque quero um coração cheio.v60 é um abuso da sintaxe arcaica da cadeia de versão para denotar o caractere com o código ASCII 60: '<'.
$ | é uma variável mágica que só pode ser 0 ou 1. Decrementar quando já é 0 o define como 1. Decrementar quando é 1 o define naturalmente como 0. Portanto, $ | - é frequentemente usado como um flip-flop: sempre é avaliado, alterna entre verdadeiro e falso.
Como um todo, essa expressão retorna alternativamente '<' e 3.
Ternários aninhados. Se a condição for falsa (→ estamos fora do coração), for avaliada como $ ", que é uma variável mágica cujo padrão é" "(um único espaço). Se a condição for verdadeira (→ estamos dentro do coração), avalia flip_flop.
Avalia inner_loop repetidamente, com $ _ (variável "padrão" de Perl) indo de -40 a 40, em incrementos de 1. Ele coleta os resultados dessas avaliações em uma lista temporária e depois imprime todos, concatenados, terminando com uma nova linha .
Isso executa o outer_loop repetidamente, com $ y passando de 1,24 (1 - (-6 / 25)) para -1 (1 - 50/25), em decréscimos de 0,04.
Observe que y é dividido por 25, enquanto x² é dividido por 1000, que é o mesmo que dividir x por sqrt (1000). O fator ~ 1.265 que mencionei é sqrt (1000) / 25.
fonte
MathematicaWolframAlpha,17151311 bytesRetirou 2 bytes graças a Martin Ender (1ª curva do coração -> curva do coração 1)
Raspou outros 2 bytes graças a Martin Ender (curva do coração 1 -> heartcurve1)
Provavelmente isso é trapaça (a solução óbvia), mas aqui vai.
Experimente aqui!
Tenho certeza de que há uma maneira de encurtar o primeiro, coração ou curva, de modo que Wolfram ainda o aceite.Bem, está livre de espaços agora, talvez algum tipo de abreviação para coração?Recebo pontos de bônus por plotar 2 deles?
Tente isso aqui!
fonte
heart curve 1
heartcurve1
funciona.Mathematica, 52 bytes
Podemos economizar mais um byte,
ContourPlot
mas o plano de fundo fica um pouco complicado:Para um byte adicional , poderíamos usar a quarta fórmula e, em
PolarPlot
vez disso:fonte
Casio fx-7700GH, 21 bytes
A função de gráfico sem nome deve ser inserida em um dos slots de função de gráficos de coordenadas polares e, em seguida, faz o que diz na lata.
O intervalo de representação gráfica deve ser definido manualmente (a menos que ele se ajuste ao intervalo de definição atual), defino-o como
Xmin=-2.75, Xmax=2.75, Ymin=-4, Ymax=1
.Também deve funcionar em outras calculadoras Casio Power Graphic Series e, possivelmente, posteriormente, nas calculadoras gráficas Casio.
(sim,
eu soubem velha e empoeirada)fonte
MATLAB / oitava, 31 bytes
fonte
SmileBASIC,
8581 bytesfonte
Desmos ,
20 1615 bytesV 2:
(=
xx)^.3y=xx+yy-1
)V 1:
V 0:
fonte
xx
vez dex^2
MATL, 36 bytes
Experimente no MATL Online
fonte
Python,
119116 bytesExperimente online
fonte
SageMath, 66 bytes
Experimente online
Infelizmente, os nomes longos de
implicit_plot
eparametric_plot
(mais a necessidade de definir uma variável diferente da definida implicitamentex
para a primeira) tornam as três primeiras opções muito longas para serem consideradas.Obrigado a busukxuan e Andrea Lazzarotto por um byte
fonte
^.5
o trabalho no lugar de**.5
?^
é XOR.^
por**
. Eu queria saber se era porque não podia substituir corretamente se seguido por um.
**
). Se você tentasse usar^
, acabaria com um aviso e um resultado incorreto.C,
137133 byteshttp://codepad.org/zqqYUui8
Obrigado @AlbertRenshaw, eu também mudei os 100s para 99s por mais 2 bytes
fonte
v
para a função, bom talento. Você pode raspar dois bytes, substituindo4000
com4e3
e substituindo0.001
com1e-3
Gelatina , 31 bytes
Experimente online!
ou 35 bytes com a
♥
, em vez de*
preencher: altere a linha do meio para²+’*3<ç×9829Ọ»⁶
.Quão?
Implementações: mais de uma grade de caracteres separada por feed de 51 por 51 linhas.
fonte
JavaScript (ES6),
151147 bytesEditar: salvou 4 bytes graças a @ user2428118. Versão do ES7 para 143 bytes:
fonte
y**3
vez dey*y*y
?BBC BASIC, 80
Terminará o golfe amanhã.
Faça o download do intérprete em http://www.bbcbasic.co.uk/bbcwin/bbcwin.html
Desenha um coração cheio usando a primeira equação, que reorganizamos e obtemos a raiz do cubo (existem 3 raízes de cubo de um número real, uma real e duas complexas, mas só estamos interessados na raiz real aqui.) Em seguida, reorganizamos novamente para obter um quadrático em
y
Usando a fórmula quadrática padrão para expressões do tipo
ay^2+by+c=0
e aproveitando o fato de quea
= 1 obtemosonde
-b/2 = (x^0.66)/2
(representado porb
no programa.)Simplesmente digitalizamos os valores da
x
esquerda para a direita, desenhando uma linha vertical entre cada par de valores válidos paray
criar uma forma sólida.destroçado
fonte
Ruby, 80 bytes
Mostre a Ruby um pouco de amor.
Resultado:
com algumas linhas vazias acima e abaixo
fonte
Processing.js:
123119 bytesungolfed:
golfed:
este é bastante barato, pois representa # 2 de 0 ao infinito, em vez de -1 a 1, como mostrado na figura, para economizar nos dois abdominais (t). Mas é tecnicamente correto, pois há mais de 100 pontos.
130 bytes "mais corretos"
experimente online
nota: provavelmente existe uma maneira de obter 100 pontos na tela 100x100 padrão e reduzir a configuração.
fonte
float
em vez deint
TI-84 Basic,
4038 bytesSemelhante à resposta e saída do @ 12Me21, mas para a série TI-83/84.
fonte
BBC BASIC (BBC Micro) (126 bytes)
Essa é uma variação da resposta da Level River Street , mas para a iteração original da BBC Micro da BBC BASIC.
Você pode copiar e colar qualquer um dos seguintes itens na nova funcionalidade de colagem do JSBeeb em https://bbc.godbolt.org/ (um emulador da BBC Micro com JavaScript), depois de colar, pressione Enter dentro da 'tela' para mostrar uma nova prompt, digite RUN e pressione Enter para executar qualquer versão.
golfed. (126 bytes)
não destruído. (176 bytes)
A linha 7 requer uma verificação de X, para evitar um erro "Log range" quando X se torna 0 no meio do loop. Fora isso, é praticamente o mesmo. É muito mais lento desenhar em uma máquina real, que o JSBeeb emula muito bem.
fonte