Todos a menudo escuchamos el modismo "caminar a través de la matriz" que significa "asignar la función sobre la siguiente matriz". Sin embargo, lo necesito hecho (¡ahora!), Así que quiero que ejecutes la matriz.
¿Cómo corro?
Imagina que hay una jauría salvaje de lobos detrás de ti
Correr a través de una matriz es como caminar a través de una, excepto que puede saltear elementos. Sí, a veces es desordenado, pero (en general) funciona. "¿Qué elementos se omiten?", Puede preguntar. Bueno, esto se hace al azar. ¡Caminemos corriendo por la matriz!
- Dejar
eser el elemento actual. - Deje
randomgenerar un flotador aleatorio[0,1). Sirandom() < 0.5, entonces va al siguiente elemento y luego al paso 1. (Puede generar un número por otros medios, siempre que sea (idealmente) la misma posibilidad de saltar y permanecer. Por ejemplo, puede usar elegir un elemento de un conjunto de dos miembros y realizar la acción en función del resultado). - De lo contrario, realiza la función
fene.
Objetivo
Dada una matriz / lista / cadena como cualquiera Ay un número K, ejecute la matriz, agregando Ka cada miembro accedido. Salida / retorno de esta matriz. Asolo contendrá enteros no negativos, y Ksolo serán enteros no negativos. Este es un código de golf , por lo que gana el programa más corto en bytes.
Casos de prueba (ejemplos)
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]
fuente

[0,1)¿error de tipografía? 2 más para ir ...xtal que0 ≤ x < 1.Respuestas:
Pyth, 7
Pruébalo aquí
Utiliza una elección aleatoria en lugar de una comparación de punto flotante, pero no debe distinguirse.
Expansión:
Usando coma flotante:
Pruébalo aquí
fuente
Clojure,
4137 bytesEliminó un par de bytes multiplicando por 0 o 1 y soltando el "si". ¡Crédito a la mayoría de todos los otros remitentes!
fuente
fores más corto quemap, vea mi respuesta como referencia :) También evita tener una función anónima interna, por lo que en lugar de iniciar el código(fn[a k]puede usarlo#(.Jalea,
987 bytesDe
8a7gracias a @FryAmTheEggman .Pruébalo en línea!
Explicación
fuente
MATL , 11 bytes
Utiliza números aleatorios de coma flotante.
Pruébalo en línea!
Explicación
fuente
Japt, 6 bytes
Pruébalo
Explicación
Entrada implícita de matriz
Uy enteroV. Map (®) sobre la matriz y, a cada elemento, sumaVmultiplicado porMq, que genera aleatoriamente uno0o1. Salida implícita de la matriz resultante.fuente
Rubí, 28 bytes.
fuente
Julia,
332927 bytesEsta es una función anónima que acepta una matriz con una función anónima interna que acepta un entero y devuelve una matriz. Para llamarlo, asígnelo a una variable y llame como
f(x)(k).Generamos una matriz con la misma longitud que la matriz de entrada que consta de ceros y unos elegidos al azar con igual probabilidad. Multiplicamos esto por el entero de entrada y lo agregamos a la matriz de entrada.
Pruébalo en línea!
¡Ahorré 2 bytes gracias a Dennis!
fuente
Python 2,
6058 bytesEste programa resultó realmente simple. No hay muchos trucos de golf allí, aparte del obvio "
from module import*", usando una lambda en lugar de una función regular y la falta general de espacios en blanco. Aparte de eso, en realidad es bastante idiomático. Si estuviera escribiendo esto de verdad, probablemente lo haría de una manera muy similar:O tal vez algo más elegante:
Pero eso es suficiente para presumir :)
Esta es la versión anterior de 60 bytes de cuando se requería usar un flotante para aleatoriedad:
Para cada elemento de la lista, agregue
k*(random()<.5). Los booleanos de Python evalúan a 0 y 1, por lo que esto agrega 0 a cualquier elemento para el que la condición no sea verdadera.El
random.random()regreso de Python flota[0, 1), así que no tuve que preocuparme por eso.fuente
e+choice([0,k])JavaScript (ES6), 38 bytes
fuente
PowerShell v2 +, 34 bytes
Toma entrada
$ay$k, la matriz y el int respectivamente. Luego recorremos la matriz y cada iteración del ciclo genera el elemento actual más las$kveces(random 2)que se ejecutaráGet-Random -Maximum 2(es decir, a0o a1). Todos estos quedan en la tubería y la salida como una matriz está implícita.fuente
CJam, 10 bytes
Espera la matriz y el número en la parte superior de la pila en ese orden y los reemplaza con la nueva matriz.
Pruébalo aquí.
fuente
php 71 bytes
fuente
k (12 bytes)
p.ej
De manera más general, ¿dónde
fse puede pasar como argumento para 16 caracteres?p.ej
fuente
Python 3
15211098 bytesEsta es mi primera solución de código de golf, así que no conozco ningún truco. Probé esto usando una función principal con casos de prueba. El tamaño del archivo es solo esta función.
Gracias a @ Cᴏɴᴏʀ O'Bʀɪᴇɴ por los consejos para eliminar espacios en blanco. Elogios adicionales a @undergroundmonorail por consejos que ahorraron 12 bytes.
fuente
import *,a(x, y),x[ptr]=z+y, etc También puede reemplazar los 4 espacios con un solo espaciox[ptr]=z+yen la misma líneaif random()>0.5para ahorrar 3 bytes de espacio en blanco. En Python 20.5se puede escribir.5para guardar un byte, aunque no sé si eso es cierto en Python 3. Si cambia el nombreptralpque se ahorrará 6 bytes en total. Además, ¿estás en Windows? Windows almacena nuevas líneas como dos bytes, pero dado que a python no le importa si la nueva línea es de un byte o dos, puede contarla como 1, lo que hace que su solución actual sea de solo 103 bytes. Por cierto, bienvenido a PPCG :)Clojure, 32 bytes
Gracias David por la
rand-intidea, definitivamente más corta que elif(>(rand)0.5)enfoque. Aquíforlatemap.fuente
Octava, 28 bytes
Ejecución de muestra en ideone .
fuente
05AB1E , 10 bytes
Código:
Pruébalo en línea! .
fuente
Java, 84 bytes
Sin golf
Notas
return A;. El tipo de retorno necesitaría ser cambiado deint[]avoid. Sin embargo, esto no ahorra bytes adicionales ya que se necesita un espacio adicional entrevoidyr.Versión más corta (como se menciona en la nota), 75 bytes
Salida
fuente
Mathcad, bytes
Aún no se ha decidido el recuento de bytes formal como protocolo de recuento de Mathcad
fuente
Java
1081078582 bytes14 bytes guardados gracias a @TimmyD
fuente
main,String[],int[], y salvar a otro pocos bytes cambiandonextFloat()>0.5anext(1)==0.new java.util.Random().nextFloat()aMath.random(), ya que es mucho más corto.s, solo elimétodo tiene el tipo de retorno,voidpero está tratando de regresarint[]. También hay un punto y coma que falta despuésreturn s.Perl 5 , 30 + 1 (-a) = 31 bytes
Pruébalo en línea!
fuente