Ecrivez un programme ou une fonction qui prend en entrée un tableau d’entiers non négatifs et sort un ensemble de vecteurs / tableaux avec les éléments du tableau en entrée dans l’ordre, séparez-les de manière à ce que chaque vecteur soit égal à 15. Si la somme du premier N éléments ne "frappent pas 15", alors le nombre qui a fait passer 15 doit être coupé, et le reste sera le premier élément du vecteur suivant. Cela se poursuit jusqu'à la fin du tableau d'entrée. Si la somme du vecteur final est inférieure à 15, il faut ajouter un nombre à la fin pour que la somme augmente.
Je pense que les règles sont plus faciles à comprendre en regardant les exemples:
Input: 3 7 5 10
Output:
3 7 5 <- Sum is 15
10 5 <- 5 is added to make the sum 15
Input: 2 4 5 9 2 3 5 0 2 4 5 0 3
Output:
2 4 5 4 <- Sum 15. 9 is split in two.
5 2 3 5 <- The first 5 is the remainder of 9
0 2 4 5 0 3 1 <- The last number is added to make the sum 15
Input: 1 1 1
Output:
1 1 1 12 <- The number 12 is added to make the sum 15
Input: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
Output:
1 2 3 4 5
6 7 2 <- 2 is the first part of 8
6 9 <- 6 is the remainder of 8
10 5 <- 5 is first part of 11
6 9 <- 6 is remainder of 11. 9 is first part of 12
3 12 <- 3 is remainder of 12. 12 is first part of 13
1 14 <- 1 is remainder of 13. 14 is 14
15
15 <- 15 is first part of 16
1 14 <- 1 is remainder of 16. 14 is first part of 17
3 12 <- 3 is remainder of 17. 12 is added to make the sum 15
Input: 20 20
Output:
15
5 10 <- 5 is remainder from the first 20
10 5 <- 10 is remainder from second 20. 5 is added to make the sum = 15.
Le format d’entrée et le format de sortie sont optionnels. Quel que soit le meilleur dans votre langue.
Le code le plus court en octets gagne.
Classement
L'extrait de pile au bas de cet article génère le catalogue à partir des réponses a) sous forme de liste des solutions les plus courtes par langue et b) sous forme de classement global.
Pour vous assurer que votre réponse apparaît, commencez votre réponse par un titre, en utilisant le modèle Markdown suivant:
## Language Name, N bytes
où N
est la taille de votre soumission. Si vous améliorez votre score, vous pouvez conserver les anciens scores en les effaçant. Par exemple:
## Ruby, <s>104</s> <s>101</s> 96 bytes
Si vous souhaitez inclure plusieurs numéros dans votre en-tête (par exemple, parce que votre score est la somme de deux fichiers ou si vous souhaitez répertorier séparément les pénalités d'indicateur d'interprétation), assurez-vous que le score réel est le dernier numéro de l'en-tête:
## Perl, 43 + 2 (-p flag) = 45 bytes
Vous pouvez également faire du nom de langue un lien qui apparaîtra ensuite dans l'extrait de code:
## [><>](http://esolangs.org/wiki/Fish), 121 bytes
la source
[[3, 7, 5], [10, 5]]
serait une sortie valide pour le premier cas de test?Input: 100 Output: 15; 15; 15; 15; 15; 15; 10 5
Réponses:
Pyth, 37 octets
A expliqué
C'était mon premier pyth, alors n'hésitez pas à suggérer des améliorations.
Exemple:
Contribution
Sortie
Remarque: Merci beaucoup à Isaacg pour plusieurs octets de conseils de réduction de taille et pour la création de pyth! S'il vous plaît upvote ses commentaires ci-dessous :)
la source
.?
place deE
, mais j'ai oublié de mettre à jour la documentation. Désolé pour ça.=Z+ZN
et=+ZN
sont les mêmes. C'est un peu comme Python+=
. Likewiese,=Z-ZK
->=-ZK
. De plus, vous n’avez pas besoin)
de la fin, elle est remplie automatiquement. Enfin,FNQ
etVQ
sont les mêmes.I>Z0
parIZ
-Z
ne peut pas être négatif, vous ne vérifiez donc que si la valeurZ
est différente de zéro et que la valeur 0 est falsifiée, alors que tous les autres nombres sont véridiques.Java -
229200192181172170 170octetsAvait déjà commencé, pas pour la victoire mais pour le plaisir :)
Toute suggestion est la bienvenue.
Sauvegardé 8 octets grâce à @ThomasKwa
Sauvegardé 20 octets grâce à @corsiKa
Sauvegardé 2 octets grâce à @Ypnypn
Sauvegardé 2 octets grâce à @ user902383
170 octets
172 octets
181 octets
192 octets
200 octets
229 octets
la source
Python 3 - 1̶7̶7̶ 1̶3̶8̶ 1̶66̶ 1̶3̶3̶ 113
Edit 5 Vraiment joué grâce à @poke * lignes supprimées, etc.
Éditer 4 Alias, et remplacé a = par un - = pour sauvegarder un octet. Merci à @poke et @elzell. Déplacement également eval d'entrée dans la boucle for pour économiser 2 octets de l'attribution
Éditer 3 Économies trouvées dans différents OO en une seconde si
Edit 2 Bug corrigé
Modifier 1 L'entrée a été modifiée pour se présenter sous la forme '[1,2,3,4,5 ...]' et les deux premiers commentaires ont été implémentés, grâce à @Morgan Thrapp
Première affiche ici. L'entrée est une ligne de commande avec des entrées séparées par des espaces, la sortie est une entrée par ligne, avec une nouvelle ligne entre les groupes.
la source
print
souvent, vous devez l' enregistrer comme une variable:p=print
. Vous permet d'économiser 14 autres caractères.if s>i:s-=i;p(e-s);p();e=s
pour la seconde. Cela vous évite les sauts de ligne et les caractères d'indentation.Haskell,
126107102100 octetsExemple d'utilisation:
(#[]).(++[14]) $ [1..17]
->[[1,2,3,4,5],[6,7,2],[6,9],[10,5],[6,9],[3,12],[1,14],[15],[15],[1,14],[3,12]]
Edit: @ Steinie Griffin m'a aidé à économiser 19 octets. Merci!
la source
CJam, 39 octets
Testez-le ici.
Cela semble très sous-optimal, mais jusqu’à présent, toutes mes tentatives pour trouver une solution plus courte ont été déjouées par la présence de zéros dans l’entrée.
la source
Python2 alimenté par RegEx :
158155 octetsFabriqué en python avec amour et presque pas de maths.
Ou Regex Math si vous voulez, mathématiques unaires.
Les mathématiques «réelles» utilisées uniquement pour «corriger» la dernière exigence:
Codegolfé:
Cela fonctionne en convertissant chaque nombre N en une chaîne de longueur N ( x choisi comme caractère pour remplir la chaîne) et en les joignant dans un espace séparé
string
. La chaîne résultante est divisée via RegEx BLACK MAGIC en quelque chose comme:pour une entrée du type:
f([1, 2, 3, 4, 5, 6, 7, 8, 10])
Ceci est ensuite divisé à nouveau, et la longueur de
x
es consécutives est utilisée pour créer à nouveau les nombres, le tout étant bien présenté dans une liste de compréhension.Ungolfed:
Sortie:
Note: il n'y avait pas assez de magie pour les 0 alors cette entrée est disqualifiée
la source
Sérieusement, 88 octets
Essayez-le en ligne
C'est mon premier répondre sérieusement! Maintenant, je connais très bien toutes les lacunes de la langue!
Décharge Hex:
Explication:
la source
Javascript,
138128 octetsAvec des espaces:
Exemple:
Attribuer la fonction à une variable
Alors évaluez comme ceci:
Historique des révisions:
03/12/2015 00:02 - Merci à user81655 (+1 lui dans les commentaires) pour l'amélioration de 10 octets
12/2/2015 21:44 - Passage à utiliser un style fonctionnel afin de réduire la taille.
la source
f=
n'est pas nécessaire selon les règles du site, supprimez les parenthèses(i)
, surround avec deeval
sorte que vous n'avez pas besoinreturn
ou les crochets et remplacerif
par un ternaire de sorte queo
est retourné et le changement'\n'
à`\n`
, fusiont+=...
avect>=m
d'enlever pour crochets de fixation. Voici votre solution en 127 octets avec toutes ces améliorations:i=>eval("for(o=z=n='',m=15,t=q=0;q<i.length;q++)(t+=c=+i[q])>=m?(t-=m,z+=c-t,o+=z+`\n`,z=t>0?t+' ':n):z+=c+' ';t<m?o+z+(m-t):o")
o+
à la fin de la ligne. Supprimezo+=z
et écrivez à nouveau et cela fonctionnera. : P\n
fait une différence`\n`
? Cela ne fonctionnera pas sans elle car le code est à l'intérieur à"..."
cause de laeval
.Python 3: 139 octets
Approche légèrement différente de l’autre réponse. Produit le résultat réel de la question parce que j'avais initialement supposé que c'était une exigence.
Exemple d'utilisation:
la source
Perl, 86 octets
En comptant le shebang comme trois, l'entrée est prise de stdin, séparé par espace.
Exemple d'utilisation
la source
R, 155 octets
Avec des retraits et des sauts de ligne:
Usage:
la source
Python 2, 117 octets
Prend l'entrée sous forme de liste:
la source
Perl, 76 octets
Inclut +3 pour
-p
(normalement +1, mais +3 pour jouer loyalement avec l'autre solution Perl)Exécuter avec l'entrée sur STDIN (la nouvelle ligne finale sur l'entrée est facultative, mais DOIT être absente pour l'entrée vide)
sum15.pl
:Regardez ma, aucun calcul que ce soit ...
la source
0
s sont plutôt délicats dans cette solution (représentée par des espaces supplémentaires) et je dois faire très attention à bien gérer les espaces pour que le nombre de0
s reste correct. En particulier, considérons les entrées où une somme partielle est exactement 15, comme1 14 2 13
. Essayez-les sans le `?` Et voyez ce qui se passeJava -
158155 octetsVersion lambda de https://codegolf.stackexchange.com/a/65590/46866 par yassin-hajaj , Vous ne savez pas si une soumission valide, mais vous n'avez pas assez de rep pour ajouter un commentaire sur la réponse liée. Compté à l'aide de http://meta.codegolf.stackexchange.com/questions/4944/byte-counter-snippet
158 octets
Ungolfed
peut être utilisé comme
la source