Vous devez créer un polyglotte qui affiche le carré de l'entrée dans une langue et la racine carrée de l'entrée dans une autre. La réponse la plus courte en octets gagne!
Vous devez avoir une précision d'au moins 3 décimales et l'entrée sera toujours un flottant positif.
auto
signifie "allouer sur la pile". Le mot-clé est assez inutile car c'est le mot par défaut de toute façon. C ++ l'a donc changé pour signifier autre chose. En C, cependant, il n’exprime aucune opinion sur le type dep
(c’est une classe de stockage, pas un type), il est donc considéré comme un comportementint
par défaut (ceint
comportement par défaut est déconseillé de nos jours et n’existe probablement que parce que certains des prédécesseurs de C n'avaient pas du tout de types de données, mais les compilateurs le comprennent toujours). Et bien sûr,(int)0.5
est 0.n^2
.Python 2 et Python 3,
2321 octetsPython 2.x produit
n^2
, Python 3.x produitsqrt(n)
.2 octets sauvés grâce à @Dennis!
la source
or
?/
division entière (1/2==0
). En Py3, il s’agit d’une division en virgule flottante (1/2==0.5)
.0
Est falsey.2sable / Jelly , 2 octets
2sable calcule le carré. Essayez-le en ligne!
La gelée calcule la racine carrée. Essayez-le en ligne!
Comment ça fonctionne
2sable
Gelée
la source
C (clang) et Python ,
1091076953 octetsC: Essayez-le en ligne!
Python: essayez-le en ligne!
Fonctionne en utilisant des commentaires à polyglot. Le reste est assez explicatif.
Première fois en utilisant C!
la source
return 0;
de fin. C99 détientmain()
spécifiquement un retour implicite de 0 . Sourcestdio.h
dans ce cas?Ohm and Jelly , 3 octets
Affiche le carré en Ohm et la racine carrée dans Jelly.
Ohm et Jelly utilisent des pages de codes à un octet différentes, de sorte que le programme apparaît différemment dans chaque codage.
xxd hexdump du programme:
Gelée
En utilisant la page de code de Jelly, cela ressemble à ceci:
Jelly considère que la ligne du bas est son lien principal et ignore les autres liens, sauf indication contraire. Donc, ici, il ne fait que la racine carrée (
½
) et le sort implicitement.Ohm
En utilisant la page de codes d'Ohm (CP437), il se présente comme suit:
²
est la fonction carrée, et⌂
et◙
sont tous les deux indéfinis, de sorte que le programme met en carré l'entrée lue implicitement et la renvoie implicitement.la source
½
un octet, à quoi la²
carte correspond-elle? Est-ce juste une ordure qui est toujours ignorée? Et vice-versa pour Ohm? Ensuite, il semblerait que ce soit 2 octets.²
dans Ohm se trouve au point de code 5. Le point de code 5 dans Jelly%
ne fait rien et ne fait rien. La première ligne importe donc peu. Supposons que½
dans Jelly soit à 27 et que le point de code 27 dans OhmJ
ne fasse rien et qu'il ne fasse rien, la seconde ligne n'a donc pas d'importance. Ainsi, si vous avez un fichier de00000101<newline>00011011
, c'est 3 octets. Je suppose que le seul problème est que la nouvelle ligne se trouve à un emplacement différent dans les pages de code.C89 et C99, 47 + 3 = 50 octets
Nécessite le
-lm
drapeau (+3)C89 produit
n^2
, C99 produitsqrt(n)
. Pour tester en C89, essayez-le en ligne!Obtenir que C89 fasse la
sqrt
version devrait prendre moins de code, mais il insiste pour déclarer implicitement lasqrt
fonction avecint
s, c'est donc le mieux que je puisse gérer.la source
Octave / MATLAB,
3129 octetsCela donne le carré dans Octave et la racine carrée dans MATLAB.
Explication:
La syntaxe est bien sûr identique dans MATLAB et Octave (pour ce petit morceau de code au moins).
Cela crée une fonction anonyme:
la source
Basic / Delphi - 6 caractères
Racine carrée en Basic et carrée en Delphi.
Vous pouvez utiliser un débogueur pour inspecter l'expression, remplissant ainsi toutes les exigences de sortie!
la source
x
? Vous ne pouvez pas supposer que c'est sauvegardé à une valeur. Mais vous pourrez peut-être supprimer(x)
et étiqueter comme renvoyant une fonction.05AB1E / Fireball , 3 octets
Les octets suivants constituent le programme:
05AB1E calcule la racine carrée, les carrés Fireball.
Explication (05AB1E -
ý¹t
):Explication (Fireball -
²╣t
):Parfois, il est utile d’avoir une langue incomplète;)
la source
PHP7 + JavaScript,
626158 octetsC'était plus difficile que prévu! Je suis assez surpris de la longueur de mon code.
Comment ça marche?
Cela fonctionne en sélectionnant le code à exécuter, à partir du tableau.
La détection PHP et JavaScript est faite avec
+![]
.En PHP,
[]
(un tableau vide) est une valeur falsy, alors que dans JavaScript, il s'agit d'une valeur de vérité (les objets (saufnull
) sont toujours en vérité, et même ennew Boolean(false)
vérité!).Mais, je dois obtenir une valeur numérique, alors, je viens d'utiliser un
not
(!
) et de le convertir en entier (avec le+
).Maintenant, PHP donne la valeur
1
, alors que JavaScript donne0
.Placer le code dans un tableau, à ces index, nous permettra de sélectionner le bon code pour la langue désirée.
Ceci peut être utilisé comme
[JS,PHP][+![]]
, pour obtenir le code de la bonne langue.Sur les polyglottes précédentes, j'ai utilisé
'\0'=="\0"
, qui esttrue
en JavaScript (depuis\0
est analysé comme l'octet NULL) etfalse
en PHP (le'\0'
ne sera pas analysé comme l'octet NULL, en comparant la chaîne littérale\0
avec l'octet NULL).Je suis heureux d'avoir réussi à réduire ce chèque à
+!'0'
.Je suis encore plus content de @rckd , qui l'a réduit à la version actuelle!
A partir de là, c’est tout simplement
eval
le code requis.PHP
PHP s'exécutera
echo$argv[1]**.5
(équivalentecho sqrt($argv[1]);
du nombre correspondant à la racine carrée), recevra la valeur du deuxième argument et l'affichera dans la sortie standard.JavaScript
JavaScript s'exécute
alert((_=prompt())*_)
, ce qui affiche le nombre au carré dans un fichieralert
.Merci à @rckd pour la sauvegarde de 1 octet et à @ user59178 pour la sauvegarde de 3 octets!
la source
echo$argv[1]**.5
plutôt queecho sqrt($argv[1])
05AB1E et Jelly , 4 octets
(05AB1E) - (Gelée)
Je suppose que quelqu'un d'autre a fait valoir un bon point, car les caractères UTF-8 ne partagent pas la même opération sur des pages de code qu'ils sont techniquement sur deux octets à encoder. Cependant, en ce qui concerne le vidage hexadécimal:
Avec le codage CP1252 de 05AB1E, cela se traduit par:
Cela signifie que le carré restera affiché et quittera, ignorant le reste. Lorsque ces octets sont codés à l'aide de la page de code de Jelly:
Quel est le code d'origine prévu, une fois exécuté, donne le résultat souhaité: prendre l'entrée et prendre le sqrt.
la source
Ɠ
et½
nécessitent deux octets à coder. Cependant, la séquence d'octets6e 71 93 0a
(nqƓ½
pour Jelly,nq“\n
pour CP-1252) devrait fonctionner dans les deux langues.½
trouvant sur les deux pages de code ne lui permet pas de compter comme une seule, car ce sont des opérations différentes, je suppose? Je suis encore flou sur la chose entière page de code.6e 71 93 0a
donc il n'y a pas "théoriquement" de réclamer 4 octets. Réclamez simplement 4 octets. Il se trouve que dans le codage standard de 05AB1E, il lit une chose qui fait ce que vous voulez, alors que dans le codage standard de Jelly, il en lit une autre qui fait ce que vous voulez. En passant, le fait que 2 encodages puissent coder le même caractère ne signifie pas que ce caractère sera le même dans les deux cas. Il suffit de penser à des encodages comme un chiffre avec une table de recherche déjà partagée et j'espère que cela vous donnera un bon modèle mental de départ.CJam / MATL , 8 octets
Calcule le carré dans CJam ( Essayez-le en ligne! ) Et la racine carrée dans MATL ( Essayez-le en ligne! ).
Explication de la place dans CJam
Explication de la racine carrée dans MATL
la source
Python 2 et Forth,
4333 octetsEssayez-le en ligne: Python 2 (carré) | Forth (sqrt)
Cela donne une fonction anonyme en Python et une fonction intégrée
fsqrt
dans Forth. Python peut avoir une fonction nomméef
pour 2 octets de plus en mettantf=
devant le lambda.Le programme Forth utilise un littéral à virgule flottante , qui doit être écrit en notation scientifique. Pi tronqué à 3 décimales (
3.141
) serait écrit comme ceci:la source
JavaScript (ES6) / JavaScript (ES7), 52 octets
Renvoie le carré de l'entrée dans ES7 et la racine carrée dans ES6. Assez difficile à tester, sauf si vous avez un navigateur plus ancien qui supporte ES6 mais pas ES7.
la source
PHP et CJam ,
302925 octetsCalcule le carré en PHP et la racine carrée dans CJam. Doit être exécuté en utilisant
-r
PHP.PHP
Lève le premier argument de ligne de commande (
$argv[1]
) à la puissance 2 et le sort. Ici, il$argv[1]
s'agit en réalité d'une variable en ligne dans une chaîne, qui est convertie en un nombre avant de procéder à l'exponentiation. En effet, cev
n'est pas une instruction valide dans CJam et entraînera une erreur lors de l'analyse, mais le placer dans une chaîne ne posera aucun problème.#
commence un commentaire, donc tout ce qui suit est ignoré.Essayez-le en ligne!
CJam
La première partie du code
ECHO"$argv[1]"**2;#
contient de nombreuses valeurs et des opérations totalement inutiles. La seule chose importante est qu'ils ne génèrent aucune erreur, car ce qui est juste après];
, encapsule la pile entière dans un tableau, puis le rejette.Après cela, il lit un double à partir de input (
rd
), obtient sa racine carrée (mq
) et le sort implicitement.Essayez-le en ligne!
la source
C, langage de script Operation Flashpoint , 52 octets
Dans un script OFP, un point-virgule au début d'une ligne en fait un commentaire alors que C ne se soucie pas du point-virgule supplémentaire.
C:
Essayez-le en ligne!
Langage de script OFP:
Enregistrer sous
init.sqs
dans le dossier de mission, puis appelez-le avechint format["%1", 2 call F]
.Résultat:
la source
Réticulaire / Befunge-98 , 15 octets
Langues 2D!
Befunge-98
Réticulé
la source
> <> / Jelly , 9 octets (code de 7 octets + 2 pour l'indicateur '-v' dans> <>)
Mec, je m'amuse vraiment avec la structure de liens Jelly.
Calcule le carré dans> <> et la racine carrée dans Jelly .
la source
-v
mon avis, l' utilisation de of est conforme à la [réponse votée par le plus grand nombre [( codegolf.meta.stackexchange.com/a/11431/44874 ) sur une méta-querstion traitant de cette affaire. L’><>
interprète a besoin de cela-v
et c’est donc l’invocation la plus simple possible.Python 3 + JavaScript, 101 octets
Racine carrée en JS, carrée en Python.
Fonctionne sur Firefox (testé sur FF 52) et nécessite
(function(x) x)(42) === 42
une syntaxe valide. Nécessite également ES7 pour l'**
opérateur.la source
x=>x**y
place? Ou Python va s'étouffer avec ça?function
n'est pas un mot-clé, c'est un identifiant valide. Je lui ai donc simplement assigné une fonction noop (à l'intérieur de laexec
déclaration).bash et sh, 48 octets
Mise à jour: je dois concéder la défaite. La réponse bash / sh de Digital Trauma est beaucoup plus élégante que celle-ci.
bash produit
n^2
, sh produitsqrt(n)
.bc
est seulement nécessaire poursqrt
pouvoir être calculé. La différence de comportement est entre bash et sh.OK, techniquement, le "sh" que j'utilise est toujours bash, mais bash en mode "POSIX" (ce qui se produit si vous appelez
/bin/sh
au lieu de/bin/bash
sur des systèmes où/bin/sh
est un alias pour bash). Si tel est le cas sur votre système, vous pouvez tester avec:Ceci est basé sur l'une des différences expliquées ici: https://www.gnu.org/software/bash/manual/html_node/Bash-POSIX-Mode.html
la source
kill -l
(liste les signaux possibles; ne change rien) dansbash
etsh
. C'est l'une des nombreuses différences que vous pouvez trouver ici: gnu.org/software/bash/manual/html_node/Bash-POSIX-Mode.htmlQBIC / QBasic,
26 à18 octetsEn QBasic , il faut un nombre et l’imprime au carré. Le reste du code est ignoré car QBasic le considère comme un commentaire (
'
).QBIC utilise la même instruction d'entrée. Il a ensuite imprimé le même chiffre au carré, puis augmenté à la puissance d'un quart, ce qui l'a enraciné deux fois. En effet, il
'
est considéré comme un littéral de code: code QBasic pur qui n’est pas analysé par QBIC.la source
Gelée / Pip , 6 octets
EDIT: C'est un octet plus court pour inverser les opérations.
Essayez Jelly en ligne!
Jelly commence l'exécution au bas du code (son "lien principal") et voit s'il a besoin de quelque chose de plus haut: il voit la commande se mettre en carré et prend en charge les entrées et les sorties de manière implicite.
Essayez Pip en ligne!
Pip exécute la ligne du haut, en quadrillant (variquement, implicitement, la ligne de commande) et en imprime implicitement. La ligne du bas est ignorée.
la source
PRTaVS
.Wolfram Language / PHP , 25 octets
Obtenez le carré d'un nombre dans Wolfram Language et obtenez la racine carrée en PHP;
La première ligne est Wolfram Language. Tout d’abord, c’est à vous de changer n dans la barre de recherche de Wolfram Alpha pour que le code soit aussi l’entrée. Ensuite, vous obtiendrez la réponse en appuyant sur Entrée.
La deuxième ligne est PHP, elle donne la racine carrée du n à saisir dans la barre d’adresse (par exemple, ppcg.php.net?n=213, où 213 est la valeur de n)
la source
PHP 5.6 et PHP 7, 55 octets
PHP 5.6 produit
n^2
, PHP 7 produitsqrt(n)
.la source
macOS Bash et sh, 24 octets
Sur le Mac,
sh
est enbash
cours d' exécution en mode Posix, et dans ce cas par https://www.gnu.org/software/bash/manual/html_node/Bash-POSIX-Mode.html :Ainsi, pour
sh
, la variablep
a la valeur^4
après l':
exécution, mais pour ellebash
, ellep
n'a que cette valeur tant qu'elle:
est exécutée, puis elle est vide.Etant toujours
bash
sous la couverture, certains bashismes tels que<<<
herestrings fonctionnent toujours pour les cas bash et sh.Bash and Dash (et les utilitaires GNU), 27
Sur Ubuntu 16.01,
sh
est un lien symbolique versdash
, qui ne fait pas son<<<
anneau. Nous avons donc ceci à la place:Essayez-le en ligne .
la source
Octave / Cardinal , 28 octets
Ce programme place l’entrée dans Cardinal et obtient la racine carrée dans Octave
Essayez-le en ligne! (Octave)
Essayez-le en ligne! (Cardinal)
Donc,% est un commentaire d'une seule ligne dans Octave, de sorte qu'il est simplement saisi et affiche la racine
Pour que le programme Cardinal ne rencontre pas d’erreur de division par 0 et meure, le programme
a été déplacé avec un espace, qui est ignoré par les deux programmes
Explication du programme Cardinal:
Le programme commence à la%
Il reçoit une entrée et stocke la valeur active:
Il définit l'inactif sur égal à l'actif =
il multiplie l'actif par l'inactif t.
Enfin, il émet la valeur active.
la source
PHP / JavaScript, 43 octets
L'entrée va comme:
Un peu explicite, mais est-ce que cela correspond aux règles? Mon premier code golf tho :-)
la source
alert(<?=$x*$x.')>'.sqrt($x)?
)CGL (CGL Golfing Language) / JS (ES6), 13 octets (non compétitif)
Non compétitif parce que:
CGL n'est pas une langue valide .En raison de+
etⓟ
, CGL est techniquement un langage valide.Code:
JS:
Simple: une fonction flèche anonyme qui retourne son premier argument au carré. Le code de langue sans nom est commenté.
CGL:
L' espace insécable avant la première ligne se comporte comme un commentaire. Les
/
s sont no-ops. La-
deuxième ligne signifie décrémenter le numéro actuel de la pile, qui est 0 par défaut. Il est ensuite mis à -1, où l’entrée est stockée. Le₂
remplace le premier élément de la pile actuelle par sa racine carrée, qui est maintenant l'emplacement où l'entrée est placée. Par défaut, la pile actuelle est sortie, en sortie la racine carrée de l'entrée.la source