Le défi
En aussi peu de caractères que possible, recherchez la valeur de i ^ n, étant donné n, un entier positif supérieur à 0. Elle doit être sortie sous forme de chaîne.
Pour ceux qui ne le savent pas, i est défini tel que i ^ 2 = -1. Alors:
- i ^ 1 = i
- i ^ 2 = -1
- i ^ 3 = -i
- i ^ 4 = 1
Cela se répète ensuite ..
Règles
- Si votre langue prend en charge les nombres complexes, n'utilisez aucune fonction ou arithmétique qui pourrait résoudre ce problème.
- Les inexactitudes en virgule flottante conviennent parfaitement aux réponses qui renverraient de toute façon des décimales, mais les entrées entières devraient donner des résultats exacts.
Points bonus
-5 si vous pouvez calculer la valeur où n est également négatif
-15 si vous pouvez calculer la valeur de n'importe quel nombre réel (ce bonus inclut le -5 du bonus ci-dessus)
Bonne chance!
code-golf
math
arithmetic
complex-numbers
Kezz101
la source
la source
Réponses:
Ruby, score -2
(13 octets, -15 en bonus)
Les fonctionnalités incluent: aucune erreur d'arrondi! (si vous passez l'entrée en tant que Rational)
posté par l'auteur, Kezz101
Les scores négatifs font monter mon adrénaline. Ainsi, les règles
abuséessont utilisées pour atteindre ce noble objectif.Crée une fonction anonyme et génère un tableau avec 2 entrées représentant un nombre complexe sous forme polaire (unité angulaire: degrés).
la source
CJam, 12 caractères - 5 = 7
Testez-le ici.
Prend en charge les entrées négatives.
Le résultat est imprimé automatiquement à la fin du programme.
Mathematica,
222019 caractères - 15 = 4Ceci est une fonction anonyme, que vous pouvez utiliser comme
(Ou attribuez-le à
f
dire, puis faitesf[15]
.)Prend en charge les réels et donne des résultats exacts pour l'entrée entière.
Notez que le
i
n'est pas le complexe i de Mathematica (qui l'estI
). C'est juste une variable non définie.De plus, malgré l'ordre de l'expression, Mathematica réorganisera la sortie sous
R+Ci
forme.la source
4%
. Cela peut être fait automatiquement.f@15
au lieu def[15]
.Python 2 - (24-5) = 19
La plupart des crédits appartiennent à @ user2357112, je viens de jouer sa réponse à partir des commentaires sur un peu plus cette réponse .
Explication: commence à l'index
n%4
de la chaîne'1i--'
. Puis itère en arrière par étapes de deux sur chaque lettre de la chaîne. Ainsi, par exemple,n=6
commencerait à l'index 2, le premier-
, puis ignoreraiti
et prendrait le1
, pour revenir-1
.@xnor a souligné une solution de même longueur:
Pyth - (14-5) = 9
Je peux seulement sembler en avoir 14, peu importe comment j'essaye d'inverser / slice / etc. : «(
Ce qui est essentiellement le même que la réponse python ci-dessus, mais en 2 étapes, car pyth ne prend pas en charge les options d'indexation complètes de python. Essayez-le en ligne.
Je vais parler avec isaacg de l'indexation Pyth;)
la source
lambda
n'a- t-il pas besoin d'être affecté à une variable? À tout le moins, pour l'appeler, vous devez l'entourer de parenthèses, en ajoutant deux octets pour qu'il puisse être appelé(lambda...)(n)
.map
etsorted
.TI-BASIC (NSpire) - 5 (20 caractères-15)
Si vous souhaitez recevoir une valeur de retour complexe, remplacez le
i
à la fin par
(complexe i).la source
par un normali
. Si la variablei
n'est pas définie, vous obtiendrez le nombre complexe, juste aveci
au lieu de
. Je calcule simplement les parties réelles et imaginaires séparément.i
quand même. Le complexe i n'est même pas le caractère demandé par la question, et cela vous fera économiser deux octets, donc vous seriez au moins à égalité avec moi;).Marbelous , 43 octets
Pas vraiment gagnant, mais Marbelous est amusant. :)
Il s'agit d'un programme qui lit l'entrée comme un entier unique à partir du premier argument de ligne de commande. Notez que l'entrée est prise modulo 256, mais cela n'affecte pas la validité du résultat pour les entrées supérieures à 255, car 256 est divisible par 4.
Explication
Marbelous est un langage de programmation 2D, qui simule des "billes" (valeurs d'octets) tombant à travers un tas d'appareils. Le plateau est composé de cellules larges de 2 caractères (les appareils), qui peuvent traiter les billes. Tout ce qui tombe du bas d'une planche est imprimé sur STDOUT.
Passons en revue les appareils utilisés:
}0
est l'endroit où va le premier argument de ligne de commande. J'ai utilisé deux instances de cet appareil, donc j'obtiens deux copies de la valeur d'entrée (en même temps).^n
vérifie len
bit e de la bille d'entrée (oùn=0
est le bit le moins significatif), et produit1
ou en0
fonction du bit.=0
vérifie l'égalité avec0
. Si la bille d'entrée est égale, elle tombe juste à travers, sinon elle est poussée vers la droite.\/
est une poubelle, donc elle avale simplement le marbre d'entrée et ne produit jamais rien.2D
est le code ASCII de-
,31
est le code ASCII de1
et69
est le code ASCII dei
.&n
sont des synchroniseurs. Les synchroniseurs bloquent une bille jusqu'à ce que tous les synchroniseurs avec le mêmen
tiennent une bille, à quel point ils laisseront tous leur bille stockée passer.Donc, en fait, ce que je fais, c'est de conserver les trois caractères pertinents dans trois synchroniseurs, et de les libérer en fonction de la façon dont les bits les moins significatifs sont définis dans l'entrée.
Pour plus d'informations, voir le projet de spécification .
la source
JavaScript (ES6) 29-5 = 24
Prend en charge la puissance négative.
ES5:
la source
f=n=>[1,'i',-1,'-i'][n%4]
). Mais c'est moins sexy et il ne supportera pas les pouvoirs négatifs. Cela dépend du bonus je suppose.&
opérateur au niveau du ? Si c'est le cas, vous pouvez le faire&3
pour une véritable opération module-4. Edit: on dirait qu'il fait ce qui&2
est utilisé dans votre réponse ...Python 28 octets - 5 = 23
Prend en charge les entrées -ve.
En supposant que les fonctions lambda sont acceptables (merci FryAmTheEggman!):
sinon 31 octets - 5 = 26
la source
foo=...
, ou vous pouvez fairemap(<your lambda>,range(10))
pour obtenir une liste de valeurs dei^n
from0-9
.lambda n:'--1i'[n%4-2::2]
,.'--1i'
partir de l'indexn%4-2
. Lorsque python obtient un index négatif, il commencera autant de positions restantes à partir de la fin du tableau, puis montera jusqu'à0
. De cette façon,0
et1
ne frappe jamais les-
signes, tout3
et4
faire.lambda n:n%4/2*'-'+'1i'[n%2]
Supprime l'espace et est plus court :)(Emacs) Lisp - 34
Juste pour le plaisir, en (Emacs) Lisp:
Si vous souhaitez l'utiliser, utilisez un
defun
ou utilisezfuncall
:la source
APL (Dyalog) , 8 caractères - 15 bonus = score -7
La fonction intégrée (et donc interdite) est
0J1*⊢
, mais elle utilise la méthode de @ blutorange .L'auteur du défi, Kezz101, a écrit :
Cela renvoie un nombre complexe sous la forme
aJb
qui est la manière normale pour APL d'afficher des nombres complexes.Essayez-le en ligne!
Explication
¯12○
trouver le vecteur unitaire qui a l'angle en radians de.5×
une demi-fois○
l'argument multiplié par 𝜋 (la constante du cercle)la source
Bash pur, 29 octets - 5 = 24
Prend en charge les entrées -ve.
la source
Befunge-98,
41-5 = 3635-5 = 3032-5 = 27Prend en charge les entiers négatifs. Ne va pas gagner de prix avec cette solution, mais peu importe.
Il accepte simplement un nombre en entrée, effectue une ruse sur le module (qui, frustrant, ne fonctionne pas comme le module habituel pour les nombres négatifs dans l'interpréteur que j'ai utilisé pour le tester) pour faire fonctionner les négatifs, puis fait des conditions idiotes pour décidez de ce que devrait être chaque personnage.
Je suis sûr que cela peut être approfondi. Pour l'instant, voici une autre solution qui n'accepte pas les négatifs, mais compense la perte du bonus en étant plus courte:
Befunge-98,
322623Modifier - Profite maintenant du fait que "-" est à 13 (0xd) caractères de "".
Edit 2 - Maintenant, encore une fois, profite du fait que "i" est à 56 (0x38 ou
'8
) caractères de "1".la source
Score Java 8: 72
À Java, le pire langage de golf de tous les temps! Golfé:
Étendu:
Remarque: je ne suis pas habitué à Java 8. Je n'ai pas encore d'exécution pour cela. Veuillez me dire s'il y a des erreurs de syntaxe. C'est aussi mon premier golf.
Modifier: supprimé
import
.Edit: Déclaration de classe supprimée.
Une autre réponse avec score = 87 - 15 = 72
Étendu:
la source
java.util.function
nonjava.util
(ou je me trompe?).java.util.*
le.*
moyen tout à l'importation dans le cadre du paquet. Tout comme vous importez actuellement toutes les classes dufuction
package.import
importe uniquement les classes de ce package. Il n'importe aucune des classes des packages de ce package. Par exemple, la classeFunction
est dans le packagejava.util.function
mais pas dans le packagejava.util
.MATLAB, 33 octets - 5 = 28
Même si c'est quelques octets de plus (37-5 = 32), j'aime mieux cette approche:
la source
i^3
est-i
, plutôt quei
, suppose qu'il ajoute juste 1 caractère. - Sidenote pour les autres lecteurs: sans la première règle du défi, la solution Matlab ne compterait que 3 caractères.C 77
Amélioré grâce à Ruslan
C 74-5 = 69
Oh et bien sûr l'approche la plus évidente
la source
n%2
et les utiliser~
au lieu de!
parce que la négation enn
premier, puis%
ing avec 2 donnera le même résultat, au moins pourn<(1<<32)-1
. Et C ne nécessite pas de définir explicitement le type de retour pour la fonction, vous pouvez donc le supprimerint
au début. Et utilisez également0
au lieu de'\0'
. Ainsi -9 caractères.OCaml 47
Ce n'est pas une solution primée, mais c'est la première fois que je joue au code, donc je ne suis pas exactement sûr de ce que je fais. J'ai essayé d'utiliser la correspondance de motifs, mais cela m'a fait dépasser 58.
la source
Pari / GP , 19 octets - 5 = 14
En anneau,C est isomorphe à R [x] / ( x2+ 1 ) .
L'
i
ici n'est qu'un symbole, pas l'unité imaginaire (qui estI
en Pari / GP).Essayez-le en ligne!
la source
Rubis 32-5 = 27
Fonctionne pour les pouvoirs négatifs!
la source
puts %w[1 i -1 i][gets.to_i % 4]
.Perl, 26 - 5 = 21
fonctionne comme un programme autonome (argument sur la ligne de commande) ou le corps d'une fonction.
la source
Java:
151131-5 = 126Golfé:
Non golfé:
En fonction: 72-5 = 67
Golfé:
Non golfé:
Oui, encore une autre réponse Java - et a joué au golf encore pire que jamais. Mais vous travaillez avec ce que vous pouvez ...
EDIT : version de fonction ajoutée.
EDIT 2 : donc, après un peu d'essais et d'erreurs, voici une version qui essaie de le faire par le livre, sans explorer la faille du cycle. Alors…
Java avec calcul de valeur: 146-15 = 131
Golfé:
Non golfé:
(au moins, je pense que je peux réclamer le meilleur bonus, corrigez-moi sinon)
la source
int n = Integer.parseInt(a[0])
Python - 31
Je n'ai commencé que récemment à apprendre le python. Même si je sais que ce n'est pas bon, c'est le mieux que je puisse faire.
la source
Haskell GHCi, 29 octets - 15 = 14
Usage:
la source
R , 29 - 5 = 24 octets
Essayez-le en ligne!
Identique à la plupart des méthodes ci-dessus, prend un modulo de 4 et l'augmente de 1, car les tableaux de R sont indexés sur 1. Fonctionne également pour les entiers négatifs.
J'étais préoccupé par les sorties mixtes ici, mais Giuseppe a souligné que R contraint les types numériques aux types de chaînes lorsqu'ils sont mixés.
la source
numeric
typescharacter
lorsqu'ils sont mélangés! Le livre de Hadley explique assez bien cela - juste Ctrl + F à "Coercition" et vous le verrez, mais tout le livre vaut la peine d'être lu (principalement à des fins non golfiques, mais parfois vous prenez un tour ou deux, heheh )PowerShell , 28 octets -5 = 23
Essayez-le en ligne!
Port de toute l'indexation cyclique
la source
Haskell, 29 octets - 5 = 24
Fonctionne pour les pouvoirs négatifs.
J'avais une version sans point élaborée, mais il s'avère qu'elle est en fait plus longue.
la source
Clojure (
645431 caractères)modifier
Selon la suggestion de @ SeanAllred, voici une version qui utilise un vecteur littéral au lieu d'une
case
fonction:Modifier 2
En comptant sur le REPL pour imprimer la collection résultante et en codant la fonction à l'aide du
#()
raccourci, nous pouvons la réduire à(Ce qui est en fait beaucoup plus Clojure / Lisp-ish car la fonction retourne désormais le résultat généré, permettant à la fonction d'être utilisée avec
map
, comme dansqui imprime
Partagez et profitez.
la source
Groovy: 27-5 = 22
la source
C 105, was 117
la source
:
in?:
statements in plain C. Also, what's the point of using0==0
when you can use single char1
? And no need in parentheses before?
. Also, the last?:
statement could be shortened toc[j]=i&1?'i':'1';
.0==0
when it's identical to1
? Note that==
has higher precedence than&
, otherwise your (supposed) test of(i&0)==0
would always be true.PARI/GP, 26 - 5 = 21
n->cos(t=Pi*n/2)+I*sin(t)
is one character shorter, but doesn't handle exact answers. Of coursen->I^n
is disallowed, and presumably also PARI'spowIs
.la source
Jelly, 2 - 20 = -18 bytes
Try it online!
It doesn't use an
i ^ x
builtin but it uses builtins for1j
and**
so not sure if allowed.la source
1j
literal is banned either though?*
) is.1j
literals.05AB1E, score 5 (10 bytes - 5 bonus)
Try it online or verify some more test cases.
Explanation:
la source