Objectif : étant donné un entier positif n
:
- Si
n
est impair, affichez la liste desn
nombres les plus proches de0
dans l'ordre croissant - Si
n
est pair, sortez une valeur Falsey.
Cas de test :
5 -> [-2,-1,0,1,2]
4 -> false (or any Falsey value)
1 -> [0]
Implémentation de référence
function update(){
var num = +document.getElementById("yield").value;
if(num){
var out = document.getElementById("output");
if(num % 2 == 1){
// base is balanced
var baseArr = [];
for(var i=0;i<num;i++){
baseArr.push(i-Math.floor(num/2));
}
out.innerHTML = baseArr.join(" ");
} else {
out.innerHTML = "false";
}
} else {
out.innerHTML = "<i>enter input</i>";
}
}
setInterval(update,1);
* {
font-family: "Constantia", "Consolas", monospace;
}
[type="number"] {
width: 10px;
width: 2em;
}
#output {
font-family: "Consolas", monospace;
}
Input: <input type="number" id="yield" value="3"> is <span id="output"><i>enter input</i></span>
code-golf
math
number
number-theory
Conor O'Brien
la source
la source
Réponses:
Pyth, 10 octets
Essayez-le en ligne.
Comment ça fonctionne
la source
APL,
161513 octetsMerci à @Dennis pour -2 octets!
Il s'agit d'un train monadique qui donne un tableau vide pour une entrée uniforme. Voici le schéma:
Tout d'abord,
⊢×2|⊢
donne aux temps d'entrée son mod 2; c'est-à-dire que les cotes se donneront et les evens donneront 0. Nous utilisons⍳
pour créer une liste de nombres de 1 à celui (⍳0
donne le tableau vide), puis nous soustrayons la moitié de l'entrée et du plancher.la source
Mathematica,
323024 octetsAstuce de code-golf: le dernier argument à
And
ne doit pas nécessairement être un booléen.la source
Floor
.Range[-a,a=...]
semble fonctionner, sauver un autre octet.OddQ@#&&Range@#-(#+1)/2&
PowerShell,
5052 octetsOof. Réponse assez verbeuse. Prend l'entrée
$a
, puis définit une nouvelle variable$b
comme le «plancher» de$a/2
. Génère une nouvelle plage de nombres de(0-$b)
à$b
, puisjoin
s la plage avec des espaces, et l'a comme deuxième élément d'un tableau à deux éléments (le premier élément est0
). Utilise ensuite$a%2
pour indexer dans ce tableau pour la sortie.Version alternative utilisant un flux if / else plus "traditionnel", à 54 octets:
Modifier - Nécessaire pour ajouter une logique pour sortir une valeur de falsey si l'entrée est régulière
la source
(0-$b)
à juste-$b
. De plus, une simple multiplication par*0
produira une chaîne nulle (évaluée à false dans PowerShell). (voir: codegolf.stackexchange.com/a/63005/45925 )Haskell,
373631 octetsUnbalanced est indiqué par la liste vide. Exemple d'utilisation:
g 7
->[-3,-2,-1,0,1,2,3]
.@xnor a trouvé 5 octets. Merci!
la source
g n=[x|x<-[-div n 2..(n+1)/2],odd n]
est tout aussi long.g n=[1|odd n]>>[-div n 2..div n 2]
g n=[1|odd n]>>take n[-div n 2..]
enregistre également un caractère.JavaScript (ES6),
44434241 octetsbarré 44 est toujours régulier 44;
Pour les entrées impaires, renvoie un tableau entier de longueur
x
, centré sur0
; pour even, renvoie 0. Je pense que c'est aussi court que possible. (Sauvegardé quelques octets grâce à @ edc65 et @ ן nɟuɐɯɹɐ ן oɯ!)Alternative ES6: (42 octets, merci à @intrepidcoder)
Suggestions bienvenues!
la source
x%2&&[for(y of...]
enregistre un octet.n=>Array(n&1&&n--).fill().map((x,i)=>i-n/2)
si le retour d'un tableau vide est autoriséx=>x%2&&[for(y of Array(x--).keys())y-x/2]
a 42 ans.Minkolang 0,10 , 18 octets
Explication
la source
J, 12 octets
Il s'agit d'un verbe monadique qui renvoie
0
(fausse) pour les nombres pairs. Essayez en ligne avec J.js .Essai
Comment ça fonctionne
la source
DUP , 31 octets
Try it here.
Lambda anonyme. Usage:
Explication
la source
Python 2,
3432 octetsPour le moment, je ne sais pas si je peux produire ce que je veux s'il n'est pas équilibré, donc cela ne renvoie actuellement qu'une liste vide dans le cas d'une base à déséquilibre. C'est une fonction lambda anonyme, alors donnez-lui un nom pour l'utiliser.
la source
k%2*
, vous pouvez éviter les parens.CJam,
1312 octetsIl s'agit d'une fonction anonyme qui extrait un entier de la pile et envoie en retour un tableau de chiffres (base impaire) ou vide (base même). Essayez-le en ligne dans l' interpréteur CJam .
Comment ça fonctionne
la source
O, 18
Démo en direct.
la source
Vitsy,
2725 octetsJe vais jouer au golf demain, mais je dois vraiment me coucher maintenant.
la source
TeaScript , 16 octets
18Assez simple. Les caractères spéciaux ne sont en fait que des "abréviations" pour des séquences de code plus longues.
Je n'ai toujours pas fait de permaliens, vous devrez donc copier-coller dans l' interpréteur
Explication
Cette réponse n'est pas concurrente
la source
F #, 38 octets
Le résultat de falsey est une liste vide.
la source
𝔼𝕊𝕄𝕚𝕟, 21 caractères / 37 octets
Try it here (Firefox only).
Voici une réponse de 20 caractères / 35 octets (non concurrente, car la réponse utilise les modifications mises en œuvre après la question):
Try it here (Firefox only).
la source
Japt,
2119 octetsJapt est une version abrégée de Ja vaScri pt .
Pour les entrées impaires, renvoie un tableau entier de longueur
x
, centré sur0
; pour pair, renvoie 0. Traduction JS approximative:où
x.range(y)
crée une liste d'entiers dex
ày
. Testez-le en ligne!Dans Japt moderne, cela ne fait que 11 octets:
Essayez-le en ligne!
la source
R, 30 octets
En gros,
x:-x
retourne les entiers dex
à-x
, où je metsx
à(1-n)/2
. J'utilise également le facteur modulo-2n%%2
dans la définition dex
forcerx
à zéro quandn
est pair, auquel cas0:0
retourne0
(falsey).la source
Perl, 36 octets
J'ai le sentiment que cela peut être raccourci:
La plage traite les flottants comme des nombres entiers, par exemple, 5/2 = 2,5 est converti silencieusement en 2.
(Si le formatage n'a pas d'importance, supprimez-le
$,=$";
pour un total de 30 octets).la source
Powershell, 49 octets
Les nombres pairs sont évalués
$false
car ils fournissent une sortie de ligne vide.Les nombres impairs génèrent la chaîne de référence exacte. Vous pouvez enregistrer 4 octets supplémentaires (maintenant
45
) en supprimant le[]
de la chaîne de sortie.Powershell, 36 octets
Cela a le même résultat falsey mais affiche la liste des nombres séparés par des retours à la ligne:
la source
Perl 6, 25 octets
L'expression lambda la plus courte que j'ai pu trouver et qui génère une liste plutôt qu'une plage est:
Essai:
Cela profite du fait que Perl 6 traite le nombre
0
comme une fausse valeur. Si la sortie devait être exacte,False
vous pouvez la remplacer$_%2
par$_!%%2
.la source
05AB1E , 8 octets (non concurrents)
La langue est postérieure au défi et n'est donc pas compétitive. Code:
Essayez-le en ligne!
Explication:
Utilise l' encodage CP-1252 .
la source
PHP, 50 octets
programme, prend l'entrée de STDIN, imprime la
_
liste délimitée ou0
.ou
La fonction prend un argument, retourne un tableau ou
0
.la source
Java, 145 octets
Explication: Désolé, je sais que c'est vraiment long. Je n'ai pas vu de réponse pour Java, j'ai donc décidé d'en mettre une. Faites-moi savoir si j'ai besoin d'écrire la fonction principale (je ne sais pas si c'est la politique ou non). Fondamentalement, il divise le nombre par deux et le multiplie par -1 pour la borne inférieure et pour la borne supérieure, il utilise simplement le nombre divisé par deux. Je suis un peu nouveau sur cette page, donc si je n'ai rien mis en forme correctement, faites le moi savoir. De plus, je sais que les réponses peuvent être raccourcies avec des fonctions lambda mais je ne sais pas comment les utiliser et je ne sais pas si Java les prend en charge.
Voici une version plus lisible et moins golfée:
la source
return
- la valeur de retour est une forme légitime de sortie - plutôt que d'être utiliséeSystem.out
, bien que dans ce cas, pourreturn
travailler, vous auriez besoin de stocker partiellement listes construites dans une chaîne). Java récent prend en charge les lambdas, et ils sortent normalement plus court qu'une définition de fonction "régulière". (Aussi, pourquoi le premier espace blanc?)Rubis, 25 octets
la source
Rubis, 27 octets
Crée une fonction lambda anonyme qui renverra le tableau de
n
nombres le plus proche de 0 si n est impair, et renvoie nil (une valeur de falsey en ruby) sinon.Ruby arrondit sa division entière vers -infinity, mais
0-n/2
est plus court que-n/2+1
(puisque le signe moins est là de toute façon), et parce que n est maintenant considéré comme positif, l'arrondi fonctionne en ma faveur.Ancienne version (28 octets)
la source