Nous entendons tous souvent l'idiome "parcourir le tableau" pour signifier "mapper la fonction sur le tableau suivant". Cependant, j'en ai besoin (maintenant!), Donc je veux que vous parcouriez le tableau.
Comment courir?
Imaginez qu'il y a une meute sauvage de loups derrière vous
Parcourir un tableau revient à en parcourir un, sauf que vous pouvez ignorer les éléments. Oui, c'est parfois salissant, mais cela fonctionne (généralement). "Quels éléments sont ignorés?", Vous pouvez vous demander. Eh bien, cela se fait au hasard. Passons en revue le tableau!
- Soit
e
l'élément courant. - Soit
random
générer un flottant aléatoire dans[0,1)
. Sirandom() < 0.5
, alors vous passez à l'élément suivant, puis à l'étape 1. (Vous pouvez générer un nombre par d'autres moyens, tant que leur est (idéalement) une chance égale de sauter et de rester. Par exemple, vous pouvez utiliser choisir un élément dans un ensemble de deux membres et effectuez l'action en fonction du résultat.) - Dans le cas contraire, vous effectuez la fonction
f
sure
.
Objectif
Étant donné un tableau / liste / chaîne comme l'un A
et l' autre et un nombre K
, parcourez le tableau, en ajoutant K
à chaque membre accédé. Sortez / retournez ce tableau. A
ne contiendra que des entiers non négatifs et K
ne sera jamais qu'un entier non négatif. Ceci est un code-golf , donc le programme le plus court en octets l'emporte.
Cas de test (exemples)
K, A => possible K'
[1, 2, 3, 4], 0 => [1, 2, 3, 4]
[1, 2, 3, 4], 1 => [1, 3, 3, 5]
[0, 0, 0, 0], 2 => [2, 0, 0, 2]
la source
[0,1)
faute de frappe? 2 de plus à parcourir ...x
tel que0 ≤ x < 1
.Réponses:
Pyth, 7
Essayez-le ici
Utilise un choix aléatoire au lieu d'une comparaison à virgule flottante, mais ne doit pas être distingué.
Expansion:
Utilisation de virgule flottante:
Essayez-le ici
la source
Clojure,
4137 octetsSupprimé quelques octets en multipliant par 0 ou 1 et en supprimant le "si". Nous remercions la plupart des autres soumissionnaires!
la source
for
c'est plus court quemap
, voir ma réponse pour référence :) Cela évite également d'avoir une fonction anonyme interne, donc au lieu de démarrer le code,(fn[a k]
vous pouvez l'utiliser#(
.Gelée,
987 octetsDe
8
à7
merci à @FryAmTheEggman .Essayez-le en ligne!
Explication
la source
MATL , 11 octets
Utilise des nombres aléatoires à virgule flottante.
Essayez-le en ligne!
Explication
la source
Japt, 6 octets
Essaye-le
Explication
Entrée implicite de tableau
U
et d'entierV
. Map (®
) sur le tableau et, à chaque élément, ajoutezV
multiplié parMq
, ce qui génère aléatoirement soit0
ou1
. Sortie implicite du tableau résultant.la source
Rubis, 28 octets
la source
Julia,
332927 octetsIl s'agit d'une fonction anonyme qui accepte un tableau avec une fonction anonyme interne qui accepte un entier et renvoie un tableau. Pour l'appeler, affectez-le à une variable et appelez comme
f(x)(k)
.Nous générons un tableau de la même longueur que le tableau d'entrée composé de zéros et de ceux choisis au hasard avec une probabilité égale. Nous multiplions cela par l'entier d'entrée et l'ajoutons au tableau d'entrée.
Essayez-le en ligne!
Enregistré 2 octets grâce à Dennis!
la source
Python 2,
6058 octetsCe programme s'est avéré très simple. Il n'y a pas beaucoup de trucs de golf là-dedans, à part l'évident "
from module import*
", en utilisant un lambda au lieu d'une fonction régulière et le manque général d'espaces. A part ça, c'est en fait assez idiomatique. Si j'écrivais cela pour de vrai, je le ferais probablement de manière très similaire:Ou peut-être quelque chose de plus sophistiqué:
Mais ça suffit de montrer :)
Il s'agit de l'ancienne version de 60 octets lorsque l'utilisation d'un flotteur pour l'aléatoire était requise:
Pour chaque élément de la liste, ajoutez
k*(random()<.5)
. Les booléens Python sont évalués à 0 et 1, ce qui ajoute 0 à tous les éléments pour lesquels la condition n'est pas vraie.Les
random.random()
retours de Python flottent[0, 1)
, donc je n'ai pas eu à m'en soucier.la source
e+choice([0,k])
JavaScript (ES6), 38 octets
la source
PowerShell v2 +, 34 octets
Prend respectivement l'entrée
$a
et$k
le tableau et l'int. Nous parcourons ensuite le tableau et chaque itération de boucle génère l'élément courant plus les$k
temps(random 2)
qui s'exécuterontGet-Random -Maximum 2
(c'est-à-dire, a0
ou a1
). Ceux-ci sont tous laissés sur le pipeline et la sortie sous forme de tableau est implicite.la source
CJam, 10 octets
Attend le tableau et le numéro en haut de la pile dans cet ordre et les remplace par le nouveau tableau.
Testez-le ici.
la source
php 71 octets
la source
k (12 octets)
par exemple
Plus généralement, où
f
peut être passé comme argument pour 16 caractèrespar exemple
la source
Python
315211098 octetsCeci est ma première solution de golf de code, donc je ne connais aucun truc. J'ai testé cela en utilisant une fonction principale avec des cas de test. La taille du fichier est uniquement cette fonction.
Merci à @ Cᴏɴᴏʀ O'Bʀɪᴇɴ pour les conseils sur la suppression des espaces blancs. Félicitations supplémentaires à @undergroundmonorail pour des conseils qui ont permis d'économiser 12 octets.
la source
import *
,a(x, y)
,x[ptr]=z+y
, etc. Vous pouvez également remplacer les 4 espaces avec un seul espacex[ptr]=z+y
sur la même ligne queif random()>0.5
pour économiser 3 octets d'espace. En python 20.5
peut être écrit.5
pour enregistrer un octet, je ne sais pas si c'est vrai en python 3. Si vous renommezptr
pourp
vous économiserez 6 octets en tout. Êtes-vous également sous Windows? Windows stocke les sauts de ligne sur deux octets, mais comme python ne se soucie pas si le saut de ligne est d'un ou deux octets, vous pouvez le compter comme 1, ce qui fait que votre solution actuelle ne compte que 103 octets. Au fait, bienvenue à PPCG :)Clojure, 32 octets
Merci David pour l'
rand-int
idée, définitivement plus courte que l'if(>(rand)0.5)
approche. Icifor
batmap
.la source
Octave, 28 bytes
Sample run on ideone.
la source
05AB1E, 10 bytes
Code:
Try it online!.
la source
Java, 84 bytes
Ungolfed
Notes
return A;
. The return type would need to be changed fromint[]
tovoid
. This however does not save additional bytes since an additional space is needed betweenvoid
andr
.Shorter version (As mentioned in the note), 75 bytes
Output
la source
Mathcad, bytes
No formal byte count as Mathcad counting protocol yet to be decided.
la source
Java
1081078582 bytes14 bytes saved thanks to @TimmyD
la source
main
,String[]
,int[]
, and save another few bytes by changingnextFloat()>0.5
tonext(1)==0
.new java.util.Random().nextFloat()
toMath.random()
, as it is much much shorter.s
, only thei
, the method has return typevoid
but you are trying to returnint[]
. Also theres a semicolon missing afterreturn s
.Perl 5, 30 + 1 (-a) = 31 bytes
Try it online!
la source