Étant donné un entier ,, n
où 3 <= n < 2^32
, calculer l'aire d'un n
-gon régulier avec un apothème de 1; dont la formule est n * tan(π / n)
. Pour ceux qui ne savent pas ce qu'est l'apothème:
Affiche la zone du n
-gon sous forme de virgule flottante avec au moins 8 décimales.
Cas de test
3
5.1961524227
6
3.4641016151
10
3.2491969623
20
3.1676888065
99
3.1426476062
1697
3.1415962425
15000
3.1415926995
Remarque: Les cas de test ci-dessus incluent 2 chiffres de plus que ce que vous devez produire.
Area@RegularPolygon
devrait êtreArea@*RegularPolygon
; tel qu'il est maintenant, il ne peut pas être capturé dans une variable. Autrement dit,f = Area@RegularPolygon; f[3]
ne fonctionne pas. Méta-discussion pertinenteJava (OpenJDK 9) , 24 octets
Essayez-le en ligne!
la source
En fait , 5 octets
Essayez-le en ligne!
Comment?
Alternative:
ß╦/T*
. o_O bat réellement Jelly !!!la source
Code machine x87, 11 octets
Les octets de code ci-dessus définissent une fonction qui calcule l'aire d'un n-gon régulier avec un apothème de 1. Il utilise des instructions FPU x87 (l'unité à virgule flottante classique sur les processeurs x86) pour effectuer ce calcul.
Suivant une convention d'appel standard basée sur un registre x86 (dans ce cas,
__fastcall
), l'argument de la fonction est un pointeur vers l'entier, passé dans leECX
registre. Le résultat de la fonction est une valeur à virgule flottante, renvoyée en haut de la pile à virgule flottante x87 (registreST0
).Essayez-le en ligne!
Mnémoniques d'assemblage non golfés:
Comme vous pouvez le voir, il s'agit essentiellement d'un calcul simple de la formule donnée,
résultat = n * tan (π / n)
Seules quelques choses intéressantes méritent d'être signalées:
FLDPI
). Cela était rarement utilisé, même dans la journée (et évidemment beaucoup moins maintenant), mais sa taille est plus courte que l'intégration d'une constante dans votre binaire et son chargement.FPTAN
remplace la valeur du registre d'entrée (le haut de la pile FPU) par le résultat, mais pousse également une constante 1.0 en haut de la pile FPU. Ceci est fait pour une compatibilité ascendante avec le 8087 (je n'ai aucune idée pourquoi cela a été fait sur le 8087; probablement un bug). Cela signifie que nous devons retirer cette valeur inutile de la pile. Le moyen le plus rapide et le plus court de le faire est simpleFSTP st0
, comme nous l’utilisons ici. Nous aurions également pu faire une multiplication-et-pop , car la multiplication par 1.0 ne changera pas le résultat, mais cela représente également 2 octets (donc pas de gain en taille de code), s'exécutera probablement plus lentement et peut introduire une indétermination inutile dans le résultat.Bien qu'un programmeur ou un compilateur moderne utilise le jeu d'instructions SSE (et versions ultérieures), plutôt que le x87 vieillissant, cela nécessiterait plus de code à implémenter, car il n'y a pas d'instruction unique pour calculer une tangente dans ces ISA plus récents.
la source
Gelée , 6 octets
Essayez-le en ligne!
Le π intégré de Jelly a> 8 décimales.
la source
Brachylog , 9 octets
Essayez-le en ligne!
la source
Sakura , 4 octets
Ceci est étendu à
*ij/π⓪⓪
, qui estla source
R , 25 octets
Entrée depuis stdin, sortie vers stdout.
Essayez-le en ligne!
la source
cat()
. 5 octets de moins.MATL , 7 octets
Essayez-le en ligne!
la source
Japt , 7 octets
Essaye-le
Explication
Implémente simplement le forumla, où
Mt
est tan,MP
est pi etU
est l'entrée.la source
Ohm v2 , 7 octets
Essayez-le en ligne!
Comment?
la source
var'aq , 51 octets
Explication
la source
Lisp commun, 29 octets
Essayez-le en ligne!
la source
JavaScript (ES6), 24 octets
Essayez-le
la source
Python 2 , 45 octets
Essayez-le en ligne!
la source
Pyth , 9 octets
Suite de tests.
Comment?
la source
Gaia , 5 octets
Essayez-le en ligne!
Comment?
la source
Swift , 35 octets
Avec les avertissements du compilateur:
Essayez-le ici!
Sans avertissements du compilateur, 40 octets :
la source
Excel, 16 octets
la source
Perl, 14 + 16 = 30
14 octets pour le programme proprement dit et 16 pour les commutateurs de ligne de commande
la source
Prolog (SWI) , 25 octets
Essayez-le en ligne!
Ceci est ma première soumission à codegolf, j'espère que je vais bien. Écrit en fonction.
la source
Langage de formule IBM / Lotus Notes, 13 octets
Entrée prise via un champ nommé a sur le même formulaire que le champ contenant la formule. Aucun TIO disponible, donc capture d'écran de tous les cas de test ci-dessous:
la source
PowerShell , 38 octets
Essayez-le en ligne!
Fait exactement ce qu'il dit sur l'étain, prend juste un peu plus de temps en raison des longs
[math]::
appels .NET.la source
Rubis , 27 octets
Essayez-le en ligne!
la source
Pari / GP , 14 octets
Essayez-le en ligne!
la source
C # (compilateur mono C #) , 24 octets
Essayez-le en ligne!
la source
n=>
au début pour en faire une fonction de flèche (prenez cela avec une pincée de sel, je ne sais pas C #) qui est valide.System.Func<T, T>
, qui prendrait unefloat
entrée et une autre en sortie. La déclaration ressemblerait à ceciSystem.Func<float, float> f = n=>n*Math.Tan(Math.PI/n);
:, où le décompte commenceraitn=>
. Dans mon exemple, j'ai omis deux de vos crochets pour économiser 2 octets;)RPNGolf 0,6 / 0,7 , 12 octets
Mon premier post en utilisant RPNGolf, mon nouveau langage basé sur la pile!
Il s'agit d'un programme complet qui lit un entier à partir de l'entrée standard et imprime la sortie sur la sortie standard (sans retour à la ligne).
Explication:
la source