En previsión de que MathJax se deshabilite temporalmente , el MathJax representado en esta pregunta ha sido reemplazado por imágenes. Aún puede publicar respuestas, pero tendrá que ver MathJax en otro sitio .
¡PPCG acaba de recibir MathJax ! Esto significa que ahora podemos incluir fácilmente fórmulas matemáticas bien formateadas en las publicaciones. ( Tutorial práctico de MathJax ) .
Por ejemplo, aquí está la proporción áurea expresada como una fracción continua infinita :
El código MathJax para esta ecuación es
$$\varphi=1+\cfrac1{1+\cfrac1{1+\cfrac1{1+\cfrac1{1+\ddots}}}}$$
Puede encontrar esto haciendo clic derecho en la fórmula y siguiendo Mostrar Matemáticas como → Comandos TeX .
Esto $$
significa que se muestra solo en el centro de la página en lugar de en línea. Use un solo $
para en línea.
Desafío
Escriba un programa que tome un número entero no negativo, n, y genere el código MathJax para esa cantidad de "pasos" de la fracción continua para la proporción áurea.
Para mantener las cosas estándar en las respuestas, debe usar esta sintaxis exacta de MathJax:
Para n = 0, la salida debe ser
$$\varphi=1+\dots$$
.
Que se representa como:Para n = 1, la salida debe ser
$$\varphi=1+\cfrac1{1+\ddots}$$
.
Que se representa como:Para n = 2, la salida debe ser
$$\varphi=1+\cfrac1{1+\cfrac1{1+\ddots}}$$
.
Que se representa como:Para n = 3, la salida debe ser
$$\varphi=1+\cfrac1{1+\cfrac1{1+\cfrac1{1+\ddots}}}$$
.
Que se representa como:
Este patrón continúa para n más grande. Se podría decir que n representa el número de líneas de división en la ecuación.
Notas
\cfrac
se usa en lugar del más común\frac
.\dots
se usa en lugar de\ddots
para n = 0.- Tome la entrada de stdin o la línea de comando.
- Salida a stdout (con una nueva línea final opcional).
- Alternativamente, puede escribir una función que tome n como un entero y devuelva el código MathJax como una cadena (o aún lo imprima).
Puntuación
La presentación más pequeña en bytes gana. Tiebreaker va a la presentación anterior.
fuente
Uncaught ReferenceError: textbox is not defined
Respuestas:
CJam,
5150 bytesExplicación del código:
Pocos ejemplos:
N = 0
N = 4
N = 15
ACTUALIZACIÓN : ¡1 byte guardado gracias a Sp3000!
Pruébalo en línea aquí
fuente
"$$\varphi=1+""\cfrac1{1+"ri:R*'\"ddots"R!>'}R*'$_
\v
a\\v
.Python,
706867 bytesEsto define una función anónima que solo usa la simple multiplicación de cadenas y el formato de cadenas.
(Gracias a @xnor por señalar que
\\c
solo se puede escribir como\c
, yac
que no se puede escapar. Desafortunadamente, esto no es cierto\\v
, ya que\v
es ASCII 11.)Intentos previos:
fuente
> <> ,
8986 + 3 = 89 bytesCorre con la
-v
bandera, por ej.Sorprendentemente> <> no hace demasiado mal aquí, ya que podemos imitar la multiplicación de cadenas al tener un contador que disminuimos cada iteración.
(-3 bytes gracias a @randomra)
fuente
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 línea entra en un archivo fuente separado, por lo que agregué 1 byte para cada archivo después del primero . Sin embargo, por conveniencia, Retina ahora también admite el
-s
indicador de línea de comandos, que le permite poner todo esto en un solo archivo (en cuyo caso las nuevas líneas se tratan como separadores de archivos).La mayor parte del código (98 bytes) se utiliza para convertir la entrada de decimal a unario (archivos 3 a 6). La idea básica del código es rodear la entrada
$$\varphi=1+\dots...$$
, luego convertir la entrada en unaria y luego expandir\dotsN
o\ddotsN
al siguiente nivel de la fracción continua (mientras se reduceN
aN-1
).fuente
Julia,
7673 bytesEsto crea una función lambda que toma un entero entero como entrada y devuelve MathJax como una cadena. Para llamarlo, dale un nombre, por ejemplo
f=n->...
.Desafortunadamente, tanto las barras invertidas como los signos de dólar deben escaparse en las cadenas de Julia porque ambos tienen un significado especial. La concatenación de cadenas se realiza utilizando
*
y la repetición de cadenas con^
.Ejemplos:
¡Las sugerencias son bienvenidas como siempre!
Editar: ¡ Guardado 3 bytes gracias a plannapus!
fuente
"d"^(n>0)
en lugar de(n>0?"d":"")
lo haría más corto."string"^0
era legítimo.Elemento, 63 caracteres
Esta es la solución más directa. Desafortunadamente, la gran cantidad de símbolos en la salida causa un aumento significativo en la longitud del programa (poner las cadenas en el programa directamente hace que los símbolos realicen operaciones). Estoy seguro de que hay espacio para jugar al golf, pero no tengo más tiempo en este momento.
Dado que este lenguaje aún es relativamente desconocido, aquí hay un enlace al intérprete , escrito en Perl.
fuente
T-SQL,
229227138Ha pasado un tiempo desde que hice una respuesta SQL y, como siempre, es muy detallado. Editar Por supuesto, lo compliqué demasiado y no necesité una consulta recursiva en absoluto.
Original
Esto crea una función de tabla en línea que utiliza una consulta recursiva para completar la
cfrac1{1+\
iteración adicional . Cambiar los puntos a ddots fue costoso, pero salvó a un par de deshacerse del reemplazo :). También tener que emitir la cadena original como 'VARCHAR (MAX)' cuesta un poco.Se utiliza de la siguiente manera SQLFiddle :
fuente
Ruby,
76757170 bytesEsto se siente sospechosamente sencillo, así que avíseme si me equivoqué en alguna parte.
Por cierto, esto es lo primero que he escrito en Ruby: estaba buscando un lenguaje que admitiera la repetición de cuerdas al multiplicar, y Ruby parecía hacer el truco.
Para ser aplicado así:
fuente
J, 60 bytes
Uso:
Método:
La cadena
'$$\varphi=1+\ cfrac1{1+\ d dots } $$ '
se corta en espacios y las partes se repiten1 n signum(n) 1 n 1
veces y luego estas partes se concatenan.Pruébelo en línea aquí.
fuente
R,
9390Al igual que las otras respuestas. Gracias a @plannapus por la sugerencia de escaneo.
cat
utilizado en lugar de paste0 como el resultado terminaría en\\
lugar de\
.En uso
fuente
n
como stdin en su primera aparición, puede guardar algunos caracteres:cat("$$\\varphi=1+\\",rep("cfrac1{1+\\",n<-scan()),if(n)"d","dots",rep("}",n),"$$",sep="")
JavaScript,
11410910685 bytes gracias a George Reith¡Esta es mi primera entrada en un concurso de codegolf! Por favor dime como mejorar.
Entrada anterior (106 bytes):
Entrada anterior (109 bytes):
Entrada anterior (114 bytes):
Pegue en la consola del navegador y llame como
f(n)
donden
está el número de 'pasos'.Código simplificado :
fuente
Pyth - 52 bytes
El enfoque simple en Pyth, prácticamente robado de la solución Python de @ Sp3000. Utiliza el operador de formato de cadena
%
.Pruébelo en línea aquí .
fuente
Pyth, 50 bytes
fuente
JavaScript (ES6), 76
80Parcialmente recursivo. El simple / doble d es la parte más molesta.
Prueba en la consola Firefox / FireBug
fuente
Python,
90116Como la solución más eficiente ya se ha publicado varias veces, en su lugar, uso el reemplazo de cadena
Editar: maldición, pasado por alto en
dots
lugar deddots
porn=0
, ahora la solución recursiva con una cláusula adicional añadida es demasiado fea para competir.fuente
n=0
caso especial (puntos en lugar de puntos).Haskell, 86
Esencialmente, el mismo enfoque que todas las soluciones aquí.
drop(0^n)"ddots"
es lindo, sin embargo!fuente