En prévision de la désactivation temporaire de MathJax , le MathJax rendu dans cette question a été remplacé par des images. Vous êtes toujours les bienvenus pour poster des réponses mais vous devrez voir le MathJax rendu sur un autre site .
PPCG vient d'obtenir MathJax ! Cela signifie que nous pouvons désormais facilement inclure des formules mathématiques bien formatées dans les publications. ( Tutoriel MathJax pratique. )
Par exemple, voici le nombre d' or exprimé en fraction continue infinie :
Le code MathJax pour cette équation est
$$\varphi=1+\cfrac1{1+\cfrac1{1+\cfrac1{1+\cfrac1{1+\ddots}}}}$$
Vous pouvez le trouver en cliquant avec le bouton droit sur la formule et en suivant Afficher les mathématiques sous → Commandes TeX .
Les $$
moyens qu'il est affiché sur son propre dans le centre de la page au lieu de ligne. Utilisez un seul $
pour inline.
Défi
Écrivez un programme qui prend un entier non négatif, n, et génère le code MathJax pour autant de «pas» de la fraction continue pour le nombre d'or.
Pour garder les choses standard dans les réponses, vous devez utiliser cette syntaxe MathJax exacte :
Pour n = 0, la sortie doit être
$$\varphi=1+\dots$$
.
Qui est rendu comme:Pour n = 1, la sortie doit être
$$\varphi=1+\cfrac1{1+\ddots}$$
.
Qui est rendu comme:Pour n = 2, la sortie doit être
$$\varphi=1+\cfrac1{1+\cfrac1{1+\ddots}}$$
.
Qui est rendu comme:Pour n = 3, la sortie doit être
$$\varphi=1+\cfrac1{1+\cfrac1{1+\cfrac1{1+\ddots}}}$$
.
Qui est rendu comme:
Ce modèle se poursuit pour un n plus grand. On pourrait dire que n représente le nombre de lignes de division dans l'équation.
Remarques
\cfrac
est utilisé à la place du plus courant\frac
.\dots
est utilisé au lieu de\ddots
pour n = 0.- Prenez l'entrée de stdin ou de la ligne de commande.
- Sortie vers stdout (avec une nouvelle ligne de fin facultative).
- Alternativement, vous pouvez écrire une fonction qui prend n comme un entier et renvoie le code MathJax sous forme de chaîne (ou l'imprime toujours).
Notation
La plus petite soumission en octets gagne. Tiebreaker revient à la communication précédente.
la source
Uncaught ReferenceError: textbox is not defined
Réponses:
CJam,
5150 octetsExplication du code:
Quelques exemples:
N = 0
N = 4
N = 15
MISE À JOUR - 1 octet enregistré grâce au Sp3000!
Essayez-le en ligne ici
la source
"$$\varphi=1+""\cfrac1{1+"ri:R*'\"ddots"R!>'}R*'$_
\v
à\\v
.Python,
706867 octetsCela définit une fonction anonyme qui utilise simplement une multiplication de chaîne simple et un formatage de chaîne.
(Merci à @xnor d'avoir souligné que cela
\\c
peut simplement être écrit comme\c
, carc
il ne peut pas être échappé. Malheureusement, cela ne vaut pas pour\\v
, car\v
c'est ASCII 11.)Tentatives précédentes:
la source
> <> ,
8986 + 3 = 89 octetsCourez avec le
-v
drapeau, par exempleÉtonnamment> <> ne fait pas trop mal ici, car nous pouvons imiter la multiplication des chaînes en ayant un compteur que nous décrémentons à chaque itération.
(-3 octets grâce à @randomra)
la source
Rétine , 160 + 7 = 167 octets
; +
(\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# ;
#Chaque ligne va dans un fichier source séparé, j'ai donc ajouté 1 octet pour chaque fichier après le premier . Cependant, pour plus de commodité, Retina prend désormais également en charge l'
-s
indicateur de ligne de commande, qui vous permet de mettre tout cela dans un seul fichier (auquel cas les retours à la ligne sont traités comme des séparateurs de fichiers).La plus grande partie du code (98 octets) est utilisée pour convertir l'entrée décimale en unaire (fichiers 3 à 6). L'idée de base du code est d'entourer l'entrée
$$\varphi=1+\dots...$$
, puis de convertir l'entrée en unaire, puis d'étendre\dotsN
ou\ddotsN
au niveau suivant de la fraction continue (tout en réduisantN
àN-1
).la source
Julia,
7673 octetsCela crée une fonction lambda qui prend un seul entier en entrée et renvoie le MathJax sous forme de chaîne. Pour l'appeler, donnez-lui un nom, par exemple
f=n->...
.Malheureusement, les barres obliques inverses et les signes dollar doivent être échappés dans les chaînes Julia, car ils ont tous deux une signification particulière. La concaténation de chaînes est effectuée à l'aide de
*
et la répétition de chaînes avec^
.Exemples:
Les suggestions sont les bienvenues comme toujours!
Edit: sauvé 3 octets grâce à plannapus!
la source
"d"^(n>0)
au lieu de(n>0?"d":"")
le raccourcir."string"^0
c'était légitime.Élément, 63 caractères
Il s'agit de la solution la plus simple. Malheureusement, la grande quantité de symboles dans la sortie entraîne une augmentation significative de la longueur du programme (placer les chaînes dans le programme entraîne directement les symboles pour effectuer des opérations). Je suis sûr qu'il y a de la place pour le golf, mais je n'ai pas plus de temps pour le moment.
Cette langue étant encore relativement inconnue, voici un lien vers l' interpréteur , écrit en Perl.
la source
T-SQL,
229227138Cela fait un moment que j'ai fait une réponse SQL et comme toujours c'est très verbeux. Éditer Bien sûr, j'ai trop compliqué les choses et je n'ai pas du tout eu besoin d'une requête récursive.
Original
Cela crée une fonction de table en ligne qui utilise une requête récursive pour remplir les informations supplémentaires
cfrac1{1+\
par itération. Changer les points en points était coûteux, mais cela a permis à quelques personnes de se débarrasser du remplacement :). Le fait de devoir également transtyper la chaîne d'origine en 'VARCHAR (MAX)' coûte un peu.Il est utilisé comme suit SQLFiddle :
la source
Rubis,
76757170 octetsCela semble étrangement simple, alors faites-moi savoir si j'ai foiré quelque part.
Soit dit en passant, c'est la première chose que j'ai jamais écrite en Ruby - je cherchais un langage qui supportait la répétition de chaînes en se multipliant, et Ruby semblait faire l'affaire.
À appliquer ainsi:
la source
J, 60 octets
Usage:
Méthode:
La chaîne
'$$\varphi=1+\ cfrac1{1+\ d dots } $$ '
est coupée en espaces et les parties sont répétées plusieurs1 n signum(n) 1 n 1
fois, puis ces parties sont concaténées.Essayez-le en ligne ici.
la source
R,
9390À peu près la même chose que les autres réponses. Merci à @plannapus pour la pointe de numérisation.
cat
utilisé plutôt que coller0 car le résultat se retrouverait avec\\
plutôt que\
.Utilisé
la source
n
stdin lors de sa première occurrence, vous pouvez enregistrer quelques caractères:cat("$$\\varphi=1+\\",rep("cfrac1{1+\\",n<-scan()),if(n)"d","dots",rep("}",n),"$$",sep="")
JavaScript,
114109106 10685 octets grâce à George ReithCeci est ma première entrée dans un concours de codegolf! Dites-moi comment vous améliorer.
Entrée précédente (106 octets):
Entrée précédente (109 octets):
Entrée précédente (114 octets):
Coller dans la console du navigateur et appeler comme
f(n)
oùn
trouve le nombre d '«étapes».Code simplifié :
la source
Pyth - 52 octets
L'approche simple en Pyth, quasiment dérobée à la solution Python de @ Sp3000. Utilise l'opérateur de formatage de chaînes
%
.Essayez-le en ligne ici .
la source
Pyth, 50 octets
la source
JavaScript (ES6), 76
80En partie récursif. Le simple / double d est la partie la plus ennuyeuse.
Tester dans la console Firefox / FireBug
la source
Python,
90116comme la solution la plus efficace a déjà été publiée plusieurs fois, je préfère le remplacement de chaîne
Edit: putain, négligé le
dots
au lieu deddots
pourn=0
, maintenant la solution récursive avec une clause supplémentaire clouée est trop moche pour rivaliser.la source
n=0
cas spécial (points au lieu de ddots).Haskell, 86
Essentiellement la même approche que toutes les solutions ici.
drop(0^n)"ddots"
est mignon, cependant!la source