Encuentra el número más grande que está adyacente a un cero


38

Reto:

Tome un vector / lista de enteros como entrada y genere el número más grande adyacente a un cero.

Presupuesto:

  • Como siempre, formato opcional de entrada y salida
  • Puede suponer que habrá al menos un cero y al menos un elemento distinto de cero.

Casos de prueba:

1 4 3 6 0 3 7 0
7

9 4 9 0 9 0 9 15 -2
9

-4 -6 -2 0 -9
-2

-11 0 0 0 0 0 -12 10
0

0 20 
20

¡Buena suerte y feliz golf!


Debe agregar un caso de prueba como el 4to, pero donde el resultado es negativo (hay números positivos en la lista).
mbomb007

Iba a intentar esto en Retina, pero luego noté que hay aspectos negativos. La retina odia los negativos.
mbomb007

2
No dejes que la retina dicte lo que puedes y no puedes hacer. ¡Hazte cargo, tú eres el jefe!
Stewie Griffin

Respuestas:



19

MATL , 10 bytes

t~5BZ+g)X>

Pruébalo en línea! O verificar todos los casos de prueba .

Explicación

Tomemos la entrada [-4 -6 -2 0 -9]como un ejemplo.

t     % Input array. Duplicate
      %   STACK: [-4 -6 -2 0 -9],  [-4 -6 -2 0 -9]
~     % Logical negate. Replaces zeros by logical 1, and nonzeros by logical 0
      %   STACK: [-4 -6 -2 0 -9],  [0 0 0 1 0]
5B    % Push logical array [1 0 1] (5 in binary)
      %   STACK: [-4 -6 -2 0 -9], [0 0 0 1 0], [1 0 1]
Z+    % Convolution, maintaining size. Gives nonzero (1 or 2) for neighbours of
      % zeros in the original array, and zero for the rest
      %   STACK: [-4 -6 -2 0 -9], [0 0 1 0 1]
g     % Convert to logical
      %   STACK: [-4 -6 -2 0 -9], [0 0 1 0 1]
)     % Use as index into original array
      %   STACK: [-2 -9]
X>    % Maximum of array.
      %   STACK: -2
      % Implicitly display

x(~~(dec2bin(5)-48)). ¿Quién fue la idea de implementar eso? ¡Muy inteligente y útil para arreglos lógicos! :) ¡Buena respuesta!
Stewie Griffin

1
@WeeingIfFirst ¡Gracias! Lo había usado dec2bin()-'0'cientos de veces en MATLAB, así que sabía que había que estar en MATL :-)
Luis Mendo

55
Por cierto, el hecho de que haya incluido el contenido de la pila después de cada operación vale solo un voto positivo. Hace que sea mucho más fácil de entender (y posiblemente aprender) MATL =)
Stewie Griffin

2
Rocas de convolución. +1
Suever

10

05AB1E , 9 bytes

ü‚D€P_ÏOZ

Explicación

ü‚         # pair up elements
  D        # duplicate
   €P      # product of each pair (0 if the pair contains a 0)
     _     # logical negate, turns 0 into 1 and everything else to 0
      Ï    # keep only the pairs containing at least 1 zero
       O   # sum the pairs
        Z  # take max

No funciona en el intérprete en línea, pero funciona sin conexión.


Esto es asombroso jaja! Justo a tiempo: p.
Adnan

1
Acabo de implementar uno de estos operadores o? :)
Stewie Griffin

1
@WeeingIfFirst: üfue agregado ayer mismo :)
Emigna

2
¿No volverá esto 0si la respuesta real fuera negativa? Tienes que tirar los ceros, creo.
Lynn

1
@ Lynn ¡Buena captura! Esto se puede solucionar fácilmente reemplazando ˜con O(suma).
Adnan

9

Haskell, 63 43 bytes

f x=maximum[a+b|(a,b)<-tail>>=zip$x,a*b==0]

¡Gracias a @MartinEnder por 4 bytes!


Creo que puedes usar en a*b==0lugar de ||.
Martin Ender

Tienes que volver a la versión anterior con zip. Aquí a y be ya no son adyacentes
Damien

No necesitas lambdabot aquí. Esto es "regular" Haskell
Damien

8

Pyth, 12 11 10 bytes

eSsM/#0,Vt

Forma pares, filtra por miembro cero, ordena por suma, devuelve el más grande.


,Vt(implícito QQ) devuelve los mismos pares que .:Q2, pero con los pares invertidos. Sin embargo, debería funcionar.
PurkkaKoodari

f}0Tes/#0
isaacg

7

JavaScript (ES6), 59 57 56 bytes

let f =
    
l=>l.map((n,i)=>m=l[i-1]==0|l[i+1]==0&&n>m?n:m,m=-1/0)|m

console.log(f([1, 4, 3, 6, 0, 3, 7, 0]));       // 7
console.log(f([9, 4, 9, 0, 9, 0, 9, 15, -2]));  // 9
console.log(f([-4, -6, -2, 0, -9]));            // -2
console.log(f([-11, 0, 0, 0, 0, 0, -12, 10]));  // 0
console.log(f([3, 0, 5]));                      // 5
console.log(f([28, 0, 14, 0]));                 // 28

Edición: guardado 2 bytes gracias a Huntro
Edición: guardado 1 byte gracias a ETHproductions


1
Puede guardar dos bytes utilizando en ==lugar de===
Huntro

1
I puede guardar algunos bytes en varios lugares:l=>l.map((n,i)=>m=l[i-1]*l[i+1]==0&n>m?n:m,m=-1/0)|m
ETHproductions

Error: {"mensaje": "Error de sintaxis", "nombre de archivo": " stacksnippets.net/js ", "lineno": 15, "colno": 3}
RosLuP

@RosLuP: esto requiere ES6 con soporte de función de flecha y no funcionará en todos los navegadores (incluidos, entre otros: todas las versiones de IE anteriores a Edge, todas las versiones de Safari por debajo de v10, etc.)
Arnauld

6

JavaScript (ES6), 53 bytes

a=>(m=-1/0,a.reduce((l,r)=>(m=l*r||l+r<m?m:l+r,r)),m)

Porque me gusta usar reduce. Solución alternativa, también 53 bytes:

a=>Math.max(...a.map((e,i)=>e*a[++i]==0?e+a[i]:-1/0))

5

Python, 49 bytes

lambda a:max(sum(x)for x in zip(a,a[1:])if 0in x)

Las pruebas están en ideone

Comprime los pares, suma los que contienen cero y devuelve el máximo.


4

Ruby, 51 bytes

->a{a.each_cons(2).map{|a,b|a*b!=0?-1.0/0:a+b}.max}

uso

f=->a{a.each_cons(2).map{|a,b|a*b!=0?-1.0/0:a+b}.max}
p f[gets.split.map(&:to_i)]

No creo que necesites los paréntesis a+b.
Martin Ender

Se produce un error de sintaxis de @Martin Ender ... ideone.com/F6Ed4B
cia_rana

Funciona en Ruby 2.3. (disponible aquí, por ejemplo: repl.it/languages/ruby )
Martin Ender

@ Martin Ender Cuando uso "! =" En lugar de "==", funciona. ¡Gracias por su consejo! ideone.com/F6Ed4B
cia_rana

Hay un insecto allí :(. -3 -2 0Retornos 0Creo que la sustitución. ...?0:...Con ...?-1.0/0:...deberían solucionarlo, la adición de 5 bytes.
m-Chrzan

4

PHP, 77 68 71 bytes

-3 bytes de anónimo, -4 y -2 de MartinEnder

preg_match_all("#(?<=\b0 )\S+|\S+(?= 0)#",$argv[1],$m);echo max($m[0]);

corre con php -r '<code>' '<space separated values>'


2
usar \Kpara descartar el partido hasta el momento es más corto que usar un mirar hacia atrás.
user59178

2
También puede usar la separación de espacios para la entrada y luego usar \S+para hacer coincidir un entero con signo. Probablemente tendrá que usar \b0,para no tener que anteponer el ,.
Martin Ender

1
¿Funciona esto como entrada 4 0 0 5?
Ton Hospel

@TonHospel No. ¿ \KNo funciona con alternativas? Por una razón desconocida, la segunda alternativa regresa 0 0, por lo que no hay más 0que igualar antes de 5. Fijo, gracias.
Tito

Eche un vistazo a la otra solución PHP con register_globals
Jörg Hülsermann

4

Java 7, 118 105 106 bytes

int d(int[]a){int i=0,m=1<<31,c;for(;++i<a.length;m=a[i]*a[i-1]==0&(c=a[i]+a[i-‌​1])>m?c:m);return m;}

13 bytes guardados gracias a @cliffroot mediante el uso de un enfoque aritmético en su lugar. 1 byte adicional gracias a @mrco después de descubrir un error (el caso de prueba agregado 2, 1, 0volvería en 2lugar de1 ).

Ungolfed y código de prueba:

Pruébalo aquí

class M{
  static int c(int[] a){
    int i,
        m = a[i=0],
        c;
    for(; ++i < a.length; m = a[i] * a[i-1] == 0 & (c = a[i] + a[i - 1]) > m)
                           ? c
                           : m);
    return m;
  }

  public static void main(String[] a){
    System.out.println(c(new int[]{ 1, 4, 3, 6, 0, 3, 7, 0 }));
    System.out.println(c(new int[]{ 9, 4, 9, 0, 9, 0, 9, 15, -2 }));
    System.out.println(c(new int[]{ -4, -6, -2, 0, -9 }));
    System.out.println(c(new int[]{ -11, 0, 0, 0, 0, 0, -12, 10 }));
    System.out.println(c(new int[]{ 0, 20 }));
    System.out.println(c(new int[]{ 2, 1, 0 }));
  }
}

Salida:

7
9
-2
0
20
1

1
ligeramente diferentes de aproximación utilizando la aritmética, parece estar funcionandoint d(int[]a){int i,m=a[i=0],c;for(;++i<a.length;m=a[i]*a[i-1]==0&(c=a[i]+a[i-1])>m?c:m);return m;}
cliffroot

3
La salida es incorrecta cuando el primer número no es adyacente a 0, pero es mayor que cualquier número adyacente a 0. Reproducible por el caso de prueba {2, 1, 0}. Puede solucionar esto inicializando i con 0 directamente ym con 1 << 31 (+1 en general).
mrco

3

CJam , 16 bytes

q~2ew{0&},::+:e>

Pruébalo en línea!(Como un conjunto de pruebas).

Explicación

q~    e# Read and eval input.
2ew   e# Get all (overlapping) pairs of adjacent values.
{0&}, e# Keep only those that contain a 0.
::+   e# Sum each pair to get the other (usually non-zero) value.
:e>   e# Find the maximum.

3

MATLAB con Image Processing Toolbox, 32 bytes

@(x)max(x(imdilate(~x,[1 0 1])))

Esta es una función anónima. Ejemplo de uso para los casos de prueba:

>> f = @(x)max(x(imdilate(~x,[1 0 1])))
f =
  function_handle with value:
    @(x)max(x(imdilate(~x,[1,0,1])))

>> f([1 4 3 6 0 3 7 0])
ans =
     7

>> f([9 4 9 0 9 0 9 15 -2])
ans =
     9

>> f([-4 -6 -2 0 -9])
ans =
    -2

>> f([-11 0 0 0 0 0 -12 10])
ans =
     0

>> f([0 20])
ans =
    20

3

Dyalog APL , 14 bytes

⌈/∊2(+↑⍨0∊,)/⎕

⌈/ el más grande de

el aplanado (" e nlisted"

2(... en )/parejas

+ suma (cero más algo es algo)

↑⍨ tomado si

0 cero

es miembro de

, el par (literalmente, la concatenación del número de la izquierda y el número de la derecha)

TryAPL en línea!


3

R, 48 47 bytes

EDITAR: se corrigió un error gracias a @Vlo y se modificó para leer la entrada de stdins, se guardó un byte al asignar wy omitir paréntesis.

function(v)sort(v[c(w<-which(v==0)-1,w+1)],T)[1]

v=scan();w=which(v==0);sort(v[c(w-1,w+1)],T)[1]

Explicación no probada

  1. Encuentre índices para los cuales el vector vtoma los valores 0:w <- which(v == 0)
  2. Cree un nuevo vector que contenga los índices +-1: w-1yw+1
  3. Extraer elementos que coincidan con los índices w-1yw+1
  4. Ordenar en orden descendente y extraer el elemento puño

Tenga en cuenta que si el último o primer elemento de ves un cero, w+-1buscará efectivamente un índice fuera de la longitud del vector, lo que implica que v[length(v)+1]retorna NA. Esto generalmente no es un problema, pero las max()funciones devuelven inconvenientemente NAsi hay alguna ocurrencia en el vector a menos que se especifique la opción na.rm=T. Por lo tanto, es 2 bytes más corto para ordenar y extraer el primer elemento que para usar max(), por ejemplo:

max(x,na.rm=T)
sort(x,T)[1]

1
Necesita un paréntesis adicional; de lo contrario, fallará en todos los casos de prueba en los que el máximo esté a la derecha de 0, como c(1, 4, 3, 6, 0, 10, 7, 0) c((w<-which(v==0))-1,w+1)También un poco más corto con el escaneosort((v<-scan())[c(w<-which(v==0)-1,w+1)],T)[1]
Vlo

@Vlo Gracias por señalar ese error obvio, +1. Sin ()embargo, en su solución sugerida también olvidó la ;). Actualicé el código y asigné vla manipulación previa ahora.
Billywob

3

Mathematica, 46 43 bytes

Guardado 3 bytes debido a @MartinEnder .

Max[Tr/@Partition[#,2,1]~Select~MemberQ@0]&

Función anónima. Toma una lista de enteros como entrada y devuelve un entero como salida. Basado en la solución Ruby.


2

Perl, 42 bytes

Incluye +1 para -p

Dé los números en línea en STDIN

largest0.pl <<< "8 4 0 0 5 1 2 6 9 0 6"

largest0.pl:

#!/usr/bin/perl -p
($_)=sort{$b-$a}/(?<=\b0 )\S+|\S+(?= 0)/g

2

Julia, 56 55 bytes

f(l)=max(map(sum,filter(t->0 in t,zip(l,l[2:end])))...)

Cree tuplas para valores vecinos, tome esas tuplas que contienen 0, sume valores de tuplas y encuentre el máximo


1

Python 2, 74 bytes

def f(x):x=[9]+x;print max(x[i]for i in range(len(x)) if 0in x[i-1:i+2:2])

Ciclo a través de cada elemento, si hay uno 0en la posición de la izquierda o la derecha del elemento actual, inclúyalo en el generador y luego ejecútelo max. Necesitamos rellenar la lista con algunos no 0números. Nunca se incluirá porque el segmento [-1:2:2]no incluirá nada.


1

T-SQL, 182 bytes

Golfizado:

DECLARE @x varchar(max)='1 5 4 3 6 1 3 17 1 -8 0 -7'

DECLARE @a INT, @b INT, @ INT WHILE @x>''SELECT @a=@b,@b=LEFT(@x,z),@x=STUFF(@x,1,z,''),@=IIF(@a=0,IIF(@b<@,@,@b),IIF(@b<>0 or @>@a,@,@a))FROM(SELECT charindex(' ',@x+' ')z)z PRINT @

Sin golf:

DECLARE @x varchar(max)='1 5 4 3 6 1 3 17 1 -8 0 -7'

DECLARE @a INT, @b INT, @ INT
WHILE @x>''
  SELECT 
   @a=@b,
   @b=LEFT(@x,z),
   @x=STUFF(@x,1,z,''),
   @=IIF(@a=0,IIF(@b<@,@,@b),IIF(@b<>0 or @>@a,@,@a))
  FROM(SELECT charindex(' ',@x+' ')z)z 
PRINT @

Violín


1

PowerShell v3 +, 62 bytes

param($n)($n[(0..$n.count|?{0-in$n[$_-1],$n[$_+1]})]|sort)[-1]

Un poco más largo que las otras respuestas, pero un enfoque ingenioso.

Toma entrada $n. Luego recorre los índices 0..$n.count, usa Where-Object( |?{...}) para extraer esos índices donde se encuentra el elemento anterior o siguiente en la matriz 0, y los vuelve a introducir en la división de la matriz $n[...]. Entonces |sortesos elementos, y tomamos el más grande[-1] .

Ejemplos

PS C:\Tools\Scripts\golfing> @(1,4,3,6,0,3,7,0),@(9,4,9,0,9,0,9,15,-2),@(-4,-6,-2,0,-9),@(-11,0,0,0,0,0,-12,10)|%{""+$_+" --> "+(.\largest-number-beside-a-zero.ps1 $_)}
1 4 3 6 0 3 7 0 --> 7
9 4 9 0 9 0 9 15 -2 --> 9
-4 -6 -2 0 -9 --> -2
-11 0 0 0 0 0 -12 10 --> 0

PS C:\Tools\Scripts\golfing> @(0,20),@(20,0),@(0,7,20),@(7,0,20),@(7,0,6,20),@(20,0,6)|%{""+$_+" --> "+(.\largest-number-beside-a-zero.ps1 $_)}
0 20 --> 20
20 0 --> 20
0 7 20 --> 7
7 0 20 --> 20
7 0 6 20 --> 7
20 0 6 --> 20

1

q, 38 bytes

{max x where 0 in'x,'(next x),'prev x}

Esto no parece funcionar cuando el máximo viene después de un 0 . Además, no soy un experto en q, pero creo que tendría que rodear su código con{} para que funcione.
Dennis

1

J, 18 bytes

[:>./2(0&e.\#+/\)]

Explicación

[:>./2(0&e.\#+/\)]  Input: array A
                 ]  Identity. Get A
     2              The constant 2
      (         )   Operate on 2 (LHS) and A (RHS)
               \    Get each subarray of size 2 from A and
             +/       Reduce it using addition
           \        Get each subarray of size 2 from A and
       0&e.           Test if 0 is a member of it
            #       Filter for the sums where 0 is contained
[:>./               Reduce using max and return

1

Perl 6 , 53 bytes

{max map ->$/ {$1 if !$0|!$2},(1,|@_,1).rotor(3=>-2)}

Expandido:

# bare block lambda with implicit signature of (*@_)
{
  max

    map

      -> $/ {           # pointy lambda with parameter 「$/」
                        # ( 「$0」 is the same as 「$/[0]」 )
        $1 if !$0 | !$2 # return the middle value if either of the others is false
      },

      ( 1, |@_, 1 )     # list of inputs, with added non-zero terminals
      .rotor( 3 => -2 ) # grab 3, back-up 2, repeat until less than 3 remain
}

1

PHP, 66 bytes

foreach($a=$argv as$k=>$v)$v||$m=max($m,$a[$k-1],$a[$k+1]);echo$m;

Muy claro. Itera sobre la entrada, y cuando un número es 0, se establece $men el número más alto de los 2 números adyacentes y cualquier valor anterior de $m.

Ejecutar así ( -dagregado solo por estética):

php -d error_reporting=30709 -r 'foreach($a=$argv as$k=>$v)$v||$m=max($m,$a[$k-1],$a[$k+1]);echo$m;' -- -4 -6 -2 0 -9;echo

1

C # 76 74 bytes

using System.Linq;i=>i.Zip(i.Skip(1),(a,b)=>a*b==0?1<<31:a+b).Max(‌​);

Explicación:

Use zip para unir la matriz consigo mismo, pero omita el primer valor en la segunda referencia para que el elemento cero se una al elemento uno. Multiplique a por b, si el resultado es cero, uno de ellos debe ser cero y generar a + b. De lo contrario, genere el mínimo entero posible en el idioma. Dado el supuesto de que siempre tendremos un cero y un no cero, este valor mínimo nunca saldrá como máximo.

Uso:

[TestMethod]
public void LargestFriend()
{
    Assert.AreEqual(7, F(new int[] { 1, 4, 3, 6, 0, 3, 7, 0 }));
    Assert.AreEqual(9, F(new int[] { 9, 4, 9, 0, 9, 0, 9, 15, -2 }));
    Assert.AreEqual(-2, F(new int[] { -4, -6, -2, 0, -9 }));
    Assert.AreEqual(0, F(new int[] { -11, 0, 0, 0, 0, 0, -12, 10 }));
    Assert.AreEqual(20, F(new int[] { 0, 20 }));
}

Hola. puedes quitar el espacio en int[]i) {. Además, cuento 75 bytes en su código actual (74 si elimina el espacio).
Kevin Cruijssen

Creo que puedes ahorrar 4 bytes invirtiendo los ternaries: a?b?i.Min()).Max():a:b
Tito

Además using System.Linq;, no?
pinkfloydx33

Es cierto, pero esta pregunta solo solicitó un método, no un programa completo y el uso System.Linq;es parte de la nueva plantilla de clase predeterminada.
Grax32

@Grax De cualquier manera, debe incluir la usingdeclaración en su recuento de bytes
TheLethalCoder el

1

R 48 54 bytes

s=scan()

w=which;max(s[c(w(s==0)+1,w(s==0)-1)],na.rm=T)

Lee el vector desde la entrada de la consola, luego toma el máximo sobre todos los valores adyacentes a 0.

Editar: Captura NAs producidas en el límite, ¡gracias rturnbull!


¿Lo estoy haciendo mal? pastebin.com/0AA11xcw
manatwork

Esto falla para casos como 20 0, porque s[w(s==0)+1]devuelve NA, y maxel tratamiento predeterminado de NAes devolverlo. Puede solucionarlo agregando el argumento na.rm=To volver a trabajar el código para usar sort(consulte la otra respuesta R publicada anteriormente).
rturnbull

¿Puedes condensar todo en una línea? No sé cómo codificar en R, pero supongo que sí.
clismique

@ Qwerp-Derp: No que yo sepa. scan () espera a que la entrada de la consola se lea en el vector, el flujo de entrada se cierra al ingresar una línea vacía. Si tuviera que ejecutar las dos líneas como una, la segunda parte se reconocería al menos parcialmente como entrada para el vector s.
Headcrash

0

Raqueta 183 bytes

(λ(k)(let*((lr(λ(l i)(list-ref l i)))(l(append(list 1)k(list 1)))(m(for/list((i(range 1(sub1(length l))))
#:when(or(= 0(lr l(sub1 i)))(= 0(lr l(add1 i)))))(lr l i))))(apply max m)))

Versión detallada:

(define f
 (λ(k)
    (let* ((lr (λ(l i)(list-ref l i)))
           (l (append (list 1) k (list 1)))
           (m (for/list ((i (range 1 (sub1(length l))))
                         #:when (or (= 0 (lr l (sub1 i)))
                                    (= 0 (lr l (add1 i))) ))
                (lr l i) )))
      (apply max m) )))

Pruebas:

(f (list 1 4 3 6 0 3 7 0))
(f (list 9 4 9 0 9 0 9 15 -2))
(f (list -4 -6 -2 0 -9))
(f (list -11 0 0 0 0 0 -12 10))
(f (list 0 20 ))

Salida:

7
9
-2
0
20

0

C 132 bytes

Salidas utilizando el código de retorno de main:

int main(int a,char**_){int i,m=0;_[0]=_[a]="1";for(i=1;i<a;++i){m=(*_[i-1]-48||*_[i+1]-48?m>atoi(_[i])?m:atoi(_[i]):m);}return m;}

Siento que debería poder guardar algunos bytes al guardar una de las llamadas atoi, pero no pude encontrar una manera eficiente. ( ,tmás t=más ,mást dos veces es demasiado largo). También esto técnicamente utiliza un comportamiento indefinido (estableciendo _ [a] en "1"), pero todos los compiladores que conozco lo permiten por defecto.

Estrategia: rellena el inicio y el final de la matriz con 1, luego recorre la sección interna y comprueba cada vecino.


0

PHP 69 64 bytes

Algunos bytes de Jörg Hülsermann y Titus. =(-5)

Requiere register_globals habilitado. Uso:http://localhost/notnull.php?i[]=9&i[]=-5i[]=...

$x=$_GET['i'];
$y=0;
foreach($x as $j){
if($y<abs($j)){
$y=$j;
}
}
echo $y;

Golfizado:

$x=$_GET['i'];$y=0;foreach($x as $j)if($y<abs($j))$y=$j;echo $y;

¿Por qué no utilizar directamente la entrada como matriz? No pude ver el motivo de json_encode.
Jörg Hülsermann

Para configuraciones no predeterminadas, debe agregar la longitud total del cambio de configuración a su recuento de bytes. (consulte meta.codegolf.stackexchange.com/q/4778#4778 ) En este caso +21 bytes para -d register_globals=1(o especifique una versión en la que register_globals esté habilitado de forma predeterminada)
Titus

Pero json_decodees una buena idea.
Tito

@Titus Lo que quiero decir es ?id[]=1&id[]=2&id[]=3 y luego $_GET["id"]devuelve una matriz. Por esta razón, json_decode no tiene sentido para mí
Jörg Hülsermann

@ JörgHülsermann Cuesta bytes, pero sigue siendo una buena idea.
Tito
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.