Il semble que toute modification simple de deltas utilisant une fonction cohérente puisse presque toujours être effectuée d'une autre manière plus courte , Dennis . Ainsi, la seule solution que je peux imaginer pour rendre cela plus difficile, est d'introduire une sorte de fonction incohérente.
Tri.
Votre tâche consiste à prendre un tableau d'entiers, à trier leurs deltas et à le recompiler pour donner le nouveau tableau d'entiers.
PAR EXEMPLE.
Pour l'entrée:
1 5 -3 2 9
Obtenez les deltas suivants:
4 -8 5 7
Ensuite, triez ces deltas, cédant:
-8 4 5 7
Et réappliquez-les, ce qui donne:
1 -7 -3 2 9
Entrée sortie
Vous recevrez une liste / tableau / table / tuple / pile / etc. des entiers signés en entrée via toute méthode d'entrée standard.
Vous devez à nouveau générer les données modifiées sous toute forme acceptable, en suivant la méthode de tri delta ci-dessus.
Vous recevrez N entrées 0 < N < 10
où chaque numéro se situe dans la plage-1000 < X < 1000
Cas de test
1 5 -3 2 9 -> 1 -7 -3 2 9
-5 -1 -6 5 8 -> -5 -10 -7 -3 8
-8 1 -7 1 1 -> -8 -16 -16 -8 1
8 -9 3 0 -2 -> 8 -9 -12 -14 -2
-5 -2 -5 5 0 -> -5 -10 -13 -10 0
-1 9 -1 -7 9 -> -1 -11 -17 -7 9
Remarques
- Comme indiqué ci-dessus, vous recevrez toujours au moins 1 entrée et pas plus de 9.
- Le premier et le dernier numéro de votre sortie correspondront toujours à celui de l'entrée.
- Seule la sortie d'entrée standard est acceptée
- Des échappatoires standard s'appliquent
- C'est le golf de code , donc le nombre d'octets le plus bas gagne!
- S'amuser!
Réponses:
Gelée , 7 octets
Essayez-le en ligne!
Comment ça fonctionne
la source
MATL , 8 octets
Essayez-le en ligne!
la source
Mathematica, 40 octets
Fonction pure prenant une liste de (anythings) en entrée et renvoyant une liste.
FoldList[Plus
commence par un nombre (dans ce cas,#&@@#
le premier élément de l'entrée) et ajoute à plusieurs reprises des éléments de la liste expliciteSort@Differences@#
. Cela imite le comportement de la fonction intégréeAccumulate
, mais le premier nombre devrait être ajouté à la liste des différences à la main, ce qui augmente le nombre d'octets (pour autant que je sache).la source
05AB1E , 9 octets
-4 merci à Emigna
Essayez-le en ligne!
la source
¬=s¥{vy+=
Python 2, 92 octets
la source
Haskell, 59 octets
Panne:
la source
scanl(+)a$sort...
JavaScript (ES6), 68 octets
En JavaScript, il s'avère être plus efficace pour calculer les deltas inverses d'un tableau . Ceux-ci sont ensuite triés par ordre décroissant et soustraits cumulativement du premier élément.
la source
Python 2 ,
90 octets84 octets
Sauvegardé 6 octets lors de l'utilisation de lambda. Merci aux ovs!
Essayez-le en ligne!
Décomposer le code,
Codage heureux!
la source
lambda x:[sum(sorted(map(int.__sub__,x[1:],x[:-1]))[:i])+x[0]for i in range(len(x))]
JavaScript (ES6), 93 octets
la source
Python 2 , 97 octets
Essayez-le en ligne!
la source
[p[i+1]-p[i]for i in range(len(p)-1)]
Pyth, 11 octets
Cela fait juste la chose évidente décrite dans la déclaration.
Essayez-le en ligne
Suggestions pour plus de bienvenue au golf.
la source
Julia 0,5 , 30 octets
Essayez-le en ligne!
la source
PHP, 89 octets
Courez comme ceci:
Explication
la source
Python 2 avec numpy,
6756 octetsLaissez numpy calculer les deltas, triez-les, ajoutez le premier élément et laissez numpy calculer les sommes cumulées. Assez bon marché?
la source
from numpy import*
etn.cumsum
verscumsum
etn.diff
versdiff
Perl 6 , 31 octets
Essayez-le
Étendu:
la source
Lot, 197 octets
sort
ne trie pas numériquement, donc je polarise toutes les différences de 5000.la source
bash + sort, 102 octets
sh + sort + expr, 106 octets
la source
Clojure, 46 octets
Un jour, je vais créer un langage Cljr qui a des noms de fonction plus courts que Clojure.
la source