Código de JavaScript - Calcular el cambio en la venta de entradas de un cine

Imágen de perfil
Val: 2.288
Plata
Ha mantenido su posición en JavaScript (en relación al último mes)
Gráfica de JavaScript

Calcular el cambio en la venta de entradas de un cinegráfica de visualizaciones


JavaScript

Publicado el 21 de Noviembre del 2019 por Katas (200 códigos)
836 visualizaciones desde el 21 de Noviembre del 2019
En la entrada de un cine, donde cada entrada vale 25, y los clientes pueden pagar con un billete de 25, 50 o 100.
Hay que desarrollar un código que nos indique si tendremos cambio para todos los clientes que vayan pagando su entrada, sabiendo que empezamos a vender entradas sin disponer de cambio,

1
2
3
4
5
6
tickets([25, 25, 50]); // => YES
tickets([25, 100]); // => NO
tickets([25, 25, 50, 50, 100]); // => NO
tickets([25, 25, 50, 50, 25, 100]); // => YES
tickets([50, 25, 25]); // => NO
tickets([100, 25, 25]); // => NO

1
estrellaestrellaestrellaestrellaestrella(1)

Publicado el 21 de Noviembre del 2019gráfica de visualizaciones de la versión: 1
837 visualizaciones desde el 21 de Noviembre del 2019
estrellaestrellaestrellaestrellaestrella
estrellaestrellaestrellaestrella
estrellaestrellaestrella
estrellaestrella
estrella

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
/**
 * Función que recibe un array con los billetes que trae cada cliente
 *
 * Devuelve "YES" o "NO"
 */
function tickets(peopleInLine) {
    let dollars = {
        25:0,
        50:0,
        100:0
    }
 
    for (let i=0; i<peopleInLine.length; i++) {
        if (rest(peopleInLine[i]-25, dollars)==false) {
            return "NO";
        }
        dollars[peopleInLine[i]]++;
    }
    return "YES";
}
 
/**
 * Función recursiva que recibe la cantidad a devolver de cambio y los billetes
 * que tenemos.
 *
 * Devuelve true si ha podido obtener el cambio
 */
function rest(amount, dollars) {
    if (amount>0) {
        const k=Object.keys(dollars).reverse();
        for (const i of k) {
            if (dollars[i]>0 && i<=amount) {
                dollars[i]-=1;
                amount-=i;
                return rest(amount, dollars);
            }
        }
    }
    return amount==0;
}



Comentarios sobre la versión: 1 (1)

Imágen de perfil
22 de Noviembre del 2019
estrellaestrellaestrellaestrellaestrella
No ha dejado ningún comentario
Responder

Comentar la versión: 1

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad

http://lwp-l.com/s5674