Noté que el odómetro de mi auto estaba en 101101 cuando hoy me puse a trabajar. Lo cual es un número genial porque es binario (y un palíndromo, pero eso no es importante). Ahora, quiero saber cuándo la próxima vez tendré una lectura binaria del odómetro. No puedo leer el cuentakilómetros mientras conduzco, porque eso sería peligroso, por lo que tendrá que ser binario cuando llegue al trabajo o llegue a casa.
Hay muy mal tráfico en el camino hacia y desde mi oficina, así que tengo que tomar una ruta diferente cada día.
Para los propósitos de este desafío, un día es un viaje de ida y vuelta y comienza con mi viaje al trabajo.
Tendrá que tomar la lectura inicial del odómetro y una secuencia de 10 elementos que represente la cantidad de millas en cada sentido. Esta secuencia debe repetirse hasta llegar a una lectura binaria del odómetro. Luego, debe mostrar la cantidad de días que lleva hasta que lleguemos a una lectura binaria.
Tanto el kilometraje de la ruta como la lectura del odómetro serán enteros positivos. El recuento de días será x
o x.5
, por lo que su salida del recuento de días debe admitir coma flotante durante medio día. Si el recuento de días es un número entero, no necesita generar el .0
. El odómetro siempre alcanzará un estado binario.
Cualquier forma de entrada / salida es aceptable y las lagunas estándar no están permitidas.
Casos de prueba:
101101, [27, 27, 27, 27, 27, 27, 27, 27, 27, 27] == 165.0
1, [13, 25, 3, 4, 10, 8, 92, 3, 3, 100] == 22.5
2, [2, 3, 1, 2, 7, 6, 10, 92, 3, 7] == 2.0
Respuestas:
Jalea,
221716 bytesPruébalo en línea!
Cómo funciona
fuente
Javascript,
6863616052 bytes5 bytes de descuento gracias a @ETHproductions .
2311 !! bytes desactivados gracias @NotthatCharles .Prueba aquí.
fuente
(i+=a[++m%10])
?r
o enm
absoluto (deberían ser nulos, es decir, 0)m=0
el inicializador e incrementando después del módulo (m++%10
) ... en ese punto, puede soltarlo porr
completo. Todo el método está en los bajos 50MATL ,
292625 bytesEl formato de entrada es
EDITAR (10 de junio de 2016): el siguiente enlace reemplaza
v
por&v
( 26 bytes ) para adaptarse a los cambios en el idiomaPruébalo en línea!
fuente
Lua, 108 bytes
Primera vez que utilizo la repetición ... hasta el bucle en un codegolf!
Sin golf
Después del primer bucle,
o
tendré una parte decimal debido atonumber
que tuve que eliminarlo ... Y para agregarlo en el primer caso, es por eso que lo concateno con a"."
.fuente
Java, 112
millasbytesfuente
05AB1E , 31 bytes
Código:
De alguna manera, el código no deja de ejecutarse (y no puedo entender por qué). Aparentemente olvidé que hay tres bucles en lugar de 2. Así que todavía entraría en un bucle infinito ...Pruébalo en línea!
fuente
PowerShell,
8473675957 bytesToma información
$a
y$b
espera$b
ser un conjunto explícito de kilometraje (por ejemplo,.\binary-car.ps1 1 @(13,25,3,4,10,8,92,3,3,100)
). Luego ingresamos ado
/until
loop. Cada iteración, incrementamos$a
con el kilometraje en la$b
posición$i++ % 10
para que recorramos continuamente la matriz. Esto comenzará en cero ya que para el primer bucle$i
no se inicializa, por lo que se evalúa en$null
, lo que equivale a0
en este contexto, y es solo después de esa evaluación++
ocurre.Luego, el
until
enunciado verifica si nuestro número es solo0
y,1
al principio-replace
,1
no contiene nada, lo devuelve como un entero con+
, y luego toma el Booleano-no con!
. Si se evalúa verdadero, terminaremos el ciclo, salida$i / 2
y terminaremos el programa.Explicación del bucle condicional: en PowerShell, cualquier número entero distinto de cero es
$true
, y cualquier cadena no vacía también lo es$true
. Por ejemplo,231145
(un entero) cambiará a"2345"
(una cadena) después de-replace
, que se convertirá en entero como2345
(un entero), el!
cual es$false
. Sin embargo,101101
(un entero) cambiará a"00"
(una cadena) que se convertirá como0
(un entero), el!
cual es$true
. Si no tuviéramos+
la"00"
voluntad!
que$false
ya que es una cadena no vacía.Edición: guardó 11 bytes intercambiando igualdad en longitud por estrictamente cero
Edición 2: guardó otros 6 bytes al darse cuenta de que
$b.count
siempre será10
...Edición 3: guardó otros 8 bytes utilizando do / hasta en lugar de
Editar 4 - Si el objeto que
-replace
es d es un valor entero, no necesita comillas, guardando otros 2 bytesfuente
Rubí, 58
Nada especial. Solo un ciclo ...
fuente
->s,a,i=0{a.cycle{|e|i+=0.5;break i if/[2-9]/!~'%d'%s+=e}}[1, [13, 25, 3, 4, 10, 8, 92, 3, 3, 100]]
o ...f=->s,a,i=0{a.cycle{|e|i+=0.5;break i if/[2-9]/!~'%d'%s+=e}}; f[1, [13, 25, 3, 4, 10, 8, 92, 3, 3, 100]]
Mathematica, 92 bytes
Sí. La entrada es el odómetro y una lista de veces. La salida es el recuento de días.
fuente
PHP,
10298Versión sin golf
Los avisos PHP se pueden eliminar con un costo adicional de 4 caracteres
$d = 0;
en la versión de golf.Ejemplo
fuente
if
, quitar el 00.5
y quitar|
entre el 1 y el 0 en su expresión regular le ahorra 4 bytes.function f($i,$s){while(1)foreach($s as$v){$d+=.5;$i+=$v;if(preg_match('/^[01]+$/',$i))return$d;}}
Pyth,
363230 bytesPruébalo aquí!
Explicación
fuente
C Sharp, 180.
Estimado señor C # es largo.
fuente