Il s'agit d'un problème du NCPC 2005 . Roy a un appartement avec une seule prise électrique, mais il a un tas de multiprises. Calculez le nombre maximum de prises qu'il peut avoir en utilisant les multiprises dont il dispose. Le nombre de prises par multiprise est donné en entrée.
Il s'avère que si le nombre de sorties des bandes respectivement est
alors le nombre de sorties est ,
ou
.
L'entrée du programme ou de la fonction est une série non vide d'entiers positifs.
Exemples
2 3 4
> 7
2 4 6
> 10
1 1 1 1 1 1 1 1
> 1
100 1000 10000
> 11098
code-golf
number
arithmetic
Pål GD
la source
la source
Réponses:
Gelée, 3 octets
Décrémenter (tout), somme, incrément. Essayez-le ici.
la source
Rétine , 3 octets
Le saut de ligne arrière est important.
L'entrée est une liste de nombres unaires séparés par des espaces .
Essayez-le en ligne!
Explication
Le code supprime simplement tous les espaces ainsi que
1
les suivants de la chaîne. Voici pourquoi cela fonctionne:L'ajout dans unaire est simple: il suffit de concaténer les nombres, ce qui revient à supprimer les délimiteurs. La décrémentation de 1 est également simple: il suffit de supprimer un
1
de chaque nombre. Nous voulons cependant 1 de plus que la somme des entrées décrémentées, donc nous ne supprimons que les1
s que nous trouvons après les espaces, décrémentant ainsi toutes les entrées sauf la première.la source
Hexagonie ,
1814 octetsDéplié:
Essayez-le en ligne!
Je ne pense pas que la longueur du côté 2 soit possible, mais il
doity avoir une solution plus efficace du côté 3 que cela.C'est l'approche habituelle "décrémenter tout, somme, incrémenter", mais je devrai ajouter des diagrammes plus tard pour montrer comment cela fonctionne exactement dans Hexagony.
la source
Python, 24 octets
Essayez-le en ligne
la source
Mathematica, 9 octets
la source
Haskell,
1715 octetsExemple d'utilisation:
( foldl1$(+).pred ) [2,4,6]
->10
.Ancienne version, approche différente, 17 octets:
succ.sum.map pred
.la source
J, 6 octets
Somme plus une longueur moins. Entre parenthèses et appliquez-le, comme ceci:
la source
Labyrinthe , 9 octets
Essayez-le en ligne!
Le primaire habituel:
Ici, nous commençons en haut à gauche
"
, un no-op, se dirigeant vers la droite. Ensuite?
, qui lit un entier dans STDIN (jetant les caractères qu'il ne peut pas analyser comme un entier, par exemple des espaces). Maintenant, nous avons deux cas:Si l'entrée est positive, nous tournons à droite en effectuant:
Si l'entrée est nulle (ce qui se produit à EOF), nous allons tout droit en effectuant:
la source
Pyth, 5 octets
incrément (somme (mappage (décrémentation, entrée)))
la source
ES6, 25 octets
la source
l=>l.reduce((a,b)=>a+b-1)
.(,b)
c'est cher, mais j'aime aussi cette version.MATL, 3 octets
Essayez-le en ligne.
Explication
la source
05AB1E , 4 octets
Code:
Explication:
Prend l'entrée comme un tableau (par exemple
[3, 4, 5]
).la source
Étoilé ,
2624 octetsAttend des entiers séparés par des sauts de ligne. Essayez-le en ligne!
Merci à @ MartinBüttner pour -2 octets.
La boucle est déroulée afin que le premier nombre ne soit pas décrémenté, ce qui annule la nécessité d'incrémenter. Pousser les chiffres coûte cher dans Starry ...
la source
Bash + GNU utilities, 16
If there are
N
power strips, then there should beN-1
separators in the comma-separated input list. All we need to do is replace the separators with- 1 +
and arithmetically evaluate:Or using the same trick:
Pure Bash (no external utilities), 19
la source
APL (NARS 2000),
1310 bytes{1+(+/⍵)-⍴∊⍵}
Edit: Down to 10 with Lynn's (better) approach.
{1++/1-⍨⍵}
la source
gs2, 5 bytes
(CP437-encoded.)
That’s
read-nums dec m1 sum inc
.la source
CJam, 7 bytes
Test it here.
Same approach as Lynn's (decrement all, sum, increment). This also works for 8 bytes (and is maybe a bit more interesting):
Cela replie "décrémenter, ajouter" sur la liste. En faisant cela, la décrémentation n'est appliquée qu'à tous les éléments à l'exception du premier, de sorte que nous n'avons pas besoin de prendre soin de l'incrément séparément.
la source
C,
605955 octetsla source
Perl 6, 14 octets
usage
la source
{.sum-$_+1}
Sérieusement, 7 octets
Essayez-le en ligne!
Explication:
la source
Perl 6 , 20 octets
(Vous pouvez utiliser
<<
au lieu de«
)Usage:
la source
@arraya »+« @arrayb
++«@array
@array».method
@array»++
« a 'space separated' list of words »
Plusieurs d'entre eux sont ce que l'on appelle les opérateurs Meta, car ils se combinent avec d'autres opérateurs. (Perl 5 n'a pas ces opérateurs actuellement.)Perl 5 23 + 2 = 25 ou 19 + 2 = 21
Nécessite des
-ap
drapeaux:Enregistré dans un fichier et exécuté en tant que
EDIT: Une autre réponse, plus petite (19 + 2) mais essentiellement copiée à partir de la réponse dev-null:
la source
F #, 25 octets
Il s'agit d'une fonction qui prend dans un tableau / liste / séquence d'entiers et renvoie le résultat requis.
Comment ça marche:
Seq.fold
vous permet d'appliquer une fonction à chaque élément d'une séquence tout en portant un état tout en le faisant. Le résultat de la fonction appliquée au premier élément donnera l'état qui sera mis dans la fonction du deuxième élément, et ainsi de suite. Par exemple, pour résumer la liste[1; 3; 4; 10]
, vous l'écririez comme ceci:Ce qui serait appliqué ainsi:
Le dernier état étant la valeur de retour de
Seq.fold
.la source
𝔼𝕊𝕄𝕚𝕟, 5 caractères / 7 octets
Try it here (Firefox only).
Utilise un encodage personnalisé avec des caractères 10 bits (thx @Dennis!). Exécutez
encode('ï⒭+‡_')
dans la console JS pour obtenir un formulaire encodé, etdecode(/*ENCODED TEXT HERE*/)
pour décoder le formulaire codé.Explication
Se traduit en Javascript ES6 comme:
la source
Mornington Crescent ,
1909 18731839 octetsEssayez-le en ligne!
la source
Python 3, 79 bytes
la source
Ruby, 30 bytes
Simple enough - starting from 1, add up the supplied numbers, each -1 (command line args are in
$*
). Shameinject
is such a long word.la source
PowerShell, 19 bytes
Note that
1 + p1-1 + p2-1 + ... + pn-1
is equivalent top1-1 + p2-1 + ... + pn
.Takes input as separate command-line arguments with
$args
. We-join
those together with a-1+
delimiter to create a string, such as2-1+3-1+4
. The string is then piped toInvoke-Expression
(similar toeval
), and outputs the result.la source
Perl, 21 + 2 = 23 bytes
Requires
-a
and-E
:la source
-a
flag to get@F
variable with already split elements, and replace -n with -p so you dont'needsay
, reducing it to 21+2:$a+=$_-1for@F;$_=++$a
-p
instead ofsay
is the same because I need to use$_=
anyway.-a
is a good idea!Brainfuck, 15 bytes
Assumption: The , operator returns 0 once all input has been exhausted, and there are no extension cords with 0 plugs. Also, the IO needs to be in byte values instead of ASCII character codes.
Explanation: This uses 2 registers. A "Value" accumulator register, representing the number of devices that can be plugged in, and a "current cord" register that keeps track of the value of the current cord. It starts off by incrementing the value by 1, for the existing outlet. Then, for each extension cord, it subtracts one from the value since a plug is being taken up, then increments the value by the number of plugs.
Most online interpreters don't operate in raw byte input mode. To test it online, use this code:
la source