Su desafío es dibujar / trazar uno de los corazones a continuación. El tamaño debe ser de al menos 50x50 píxeles (los gráficos vectoriales están bien). Puedes elegir cuál de los corazones quieres dibujar / trazar. Se aceptan ejes, líneas de cuadrícula, etc. Debe haber al menos 100 coordenadas / puntos distintos en el gráfico. El corazón puede llenarse de color si quieres.
Las ecuaciones son:
o
t
Está en el rango [-1, 1]
.
o
o
Este es el código de golf, por lo que gana el código más corto (en cada idioma) en bytes. Proporcione la salida (o enlace a un intérprete en línea).
fuente
IF (X²+ANS²-1)³-X²ANS³<0
conIF (X²+ANS²-1)³<X²ANS³
?Perl, 86 bytes
Corre con
perl -E
.Traza un corazón ASCII lleno, usando la primera ecuación. Tenga en cuenta que el eje x se estira por un factor de ~ 1.265: esto es para contrarrestar el hecho de que las fuentes de terminal suelen ser mucho más grandes verticalmente que horizontalmente.
Salida:
Explicación (ya que OP lo solicitó):
Esta es simplemente la primera ecuación, ligeramente reorganizada para acortarla. $ y representa directamente la y en la fórmula. $ _ es inicialmente proporcional a x, pero se asigna múltiples veces consigo mismo (
$_*=$_/1e3
), por lo que es proporcional a x². Como x² se usa dos veces en la fórmula, esto ahorra algunos bytes.1e3
significa 1000, y fue elegido porque es corto y el resultado se ve bien.**
es el operador de energía de Perl. Lo uso>0
más que==0
porque quiero un corazón lleno.v60 es un abuso de la sintaxis de cadena de versión arcaica para denotar el carácter con el código ASCII 60: '<'.
$ | es una variable mágica que solo puede ser 0 o 1. Disminuir cuando ya es 0 lo establece en 1. Disminuir cuando es 1 lo establece naturalmente en 0. Por lo tanto, $ | - a menudo se usa como flip-flop: cada vez se evalúa, alterna entre verdadero y falso.
En conjunto, esta expresión devuelve alternativamente '<' y 3.
Terrarios anidados. Si la condición es falsa (→ estamos fuera del corazón), se evalúa como $ ", que es una variable mágica que por defecto es" "(un solo espacio). Si la condición es verdadera (→ estamos dentro del corazón), evalúa flip_flop.
Evalúa inner_loop repetidamente, con $ _ (variable "predeterminada" de Perl) de -40 a 40, en incrementos de 1. Recopila los resultados de esas evaluaciones en una lista temporal, luego los imprime todos, concatenados, terminando con una nueva línea .
Esto ejecuta external_loop repetidamente, con $ y pasando de 1.24 (1 - (-6 / 25)) a -1 (1 - 50/25), en decrementos de 0.04.
Tenga en cuenta que y se divide por 25, mientras que x² se divide por 1000, que es lo mismo que dividir x por sqrt (1000). El factor ~ 1.265 que mencioné es sqrt (1000) / 25.
fuente
MathematicaWolframAlpha,17151311 bytesAfeitado de 2 bytes gracias a Martin Ender (primera curva del corazón -> curva del corazón 1)
Afeitado otros 2 bytes gracias a Martin Ender (heart curve 1 -> heartcurve1)
Esto probablemente sea trampa (la solución obvia), pero aquí va.
Pruébalo aquí!
Estoy seguro de que hay una forma de acortar primero, corazón o curva de tal manera que Wolfram todavía lo acepta.Bueno, ahora está libre de espacios, ¿tal vez alguna abreviatura de corazón?¿Recibo puntos de bonificación por trazar 2 de ellos?
¡Intenta eso aquí!
fuente
heart curve 1
heartcurve1
funciona.Mathematica, 52 bytes
Podríamos guardar un byte más con,
ContourPlot
pero luego el fondo se vuelve un poco extraño:Para un byte adicional podríamos usar la cuarta fórmula y en su
PolarPlot
lugar:fuente
Casio fx-7700GH, 21 bytes
La función de gráfico sin nombre se ingresará en una de las ranuras de función de gráfico de coordenadas polares, luego hace lo que dice en la lata.
El rango de gráficos debe establecerse manualmente (a menos que se ajuste al rango establecido actual), lo configuro a
Xmin=-2.75, Xmax=2.75, Ymin=-4, Ymax=1
.Debería funcionar también en otras calculadoras de la serie gráfica Casio Power, y muy posiblemente en las calculadoras gráficas Casio posteriores.
(
Sí, soybastante viejo y polvoriento)fuente
MATLAB / Octave, 31 bytes
fuente
SmileBASIC,
8581 bytesfuente
Desmos ,
20 1615 bytesV 2:
(=
xx)^.3y=xx+yy-1
)V 1:
V 0:
fuente
xx
lugar dex^2
MATL, 36 bytes
Pruébalo en MATL Online
fuente
Python,
119116bytesPruébalo en línea
fuente
SageMath, 66 bytes
Pruébalo en línea
Desafortunadamente, los nombres largos de
implicit_plot
yparametric_plot
(más la necesidad de definir una variable diferente a la definida implícitamentex
para la primera) hacen que las tres primeras opciones sean demasiado largas para ser consideradas.Gracias a busukxuan y Andrea Lazzarotto por un byte
fuente
^.5
Funciona en lugar de**.5
?^
es XOR.^
con**
. Me preguntaba si era porque no podría sustituir correctamente si fuera seguido de un.
**
). Si intentara usar^
, terminaría con una advertencia y un resultado incorrecto.C,
137133byteshttp://codepad.org/zqqYUui8
Gracias @AlbertRenshaw, también cambié los 100 a 99 por 2 bytes más
fuente
v
para la función, buen estilo. Puede reducir dos bytes reemplazando4000
con4e3
y reemplazando0.001
con1e-3
Jalea , 31 bytes
Pruébalo en línea!
o 35 bytes con a
♥
, en lugar de*
relleno: cambie la línea media a²+’*3<ç×9829Ọ»⁶
.¿Cómo?
Implementos: más de una cuadrícula de caracteres separada por avance de línea de 51 por 51.
fuente
JavaScript (ES6),
151147 bytesEditar: Guardado 4 bytes gracias a @ user2428118. Versión ES7 para 143 bytes:
fuente
y**3
lugar dey*y*y
?BBC BASIC, 80
Terminará de jugar golf mañana.
Descargue el intérprete en http://www.bbcbasic.co.uk/bbcwin/bbcwin.html
Dibuja un corazón lleno usando la primera ecuación, que reorganizamos y tomamos la raíz cúbica de (hay 3 raíces cúbicas de un número real, una real y 2 compleja, pero solo nos interesa la raíz real aquí). obtener un cuadrático en
y
Usando la fórmula cuadrática estándar para expresiones del tipo
ay^2+by+c=0
, y aprovechando el hecho de quea
= 1 obtenemosdonde
-b/2 = (x^0.66)/2
(representado porb
en el programa).Simplemente escaneamos los valores de
x
izquierda a derecha, dibujando una línea vertical entre cada par de valores válidos paray
construir una forma sólida.sin golf
fuente
Rubí, 80 bytes.
Muéstrale algo de amor a Ruby.
Salida:
con algunas líneas vacías arriba y abajo
fuente
Processing.js:
123119 bytessin golf:
golfizado:
este es bastante engañoso, ya que traza el # 2 de 0 a infinito en lugar de -1 a 1 como se muestra en la imagen para guardar en los dos abdominales (t). Pero es técnicamente correcto ya que hay más de 100 puntos.
130 bytes "más correcto"
pruébalo en línea
nota: probablemente haya una manera de obtener 100 puntos en el lienzo predeterminado de 100x100 y eliminar la configuración.
fuente
float
lugar deint
TI-84 Basic,
4038 bytesSimilar a la respuesta y salida de @ 12Me21, pero para la serie TI-83/84 en su lugar.
fuente
BBC BASIC (BBC Micro) (126 bytes)
Esta es una variación de la respuesta de Level River Street , pero para la iteración original de BBC Micro de BBC BASIC.
Puede copiar y pegar cualquiera de los siguientes en la nueva funcionalidad de pegado de JSBeeb en https://bbc.godbolt.org/ (Un emulador de BBC Micro con JavaScript), una vez que se haya pegado, presione Entrar dentro de la 'pantalla' para mostrar un nuevo , escriba RUN y luego presione Intro para ejecutar cualquiera de las versiones.
Golfizado. (126 bytes)
sin golf (176 bytes)
La línea 7 requiere una verificación de X, para evitar un error de "Rango de registro" cuando X se convierte en 0 a mitad del ciclo. Aparte de esto, es más o menos lo mismo. Es mucho más lento dibujar en una máquina real, que JSBeeb emula bastante bien.
fuente