Santa necesita ayuda para determinar cuántos elfos necesitará para ayudarlo a entregar regalos a cada casa.
El carbón es considerablemente más pesado que los regalos, por lo que santa necesitará tres duendes por cada persona traviesa en la casa. Solo se necesitan dos duendes para ayudar a santa a llevar regalos.
En el mapa de santa, una casa está representada por a *
, y cada casa está dividida por a +
.
Habrá un número a cada lado de la casa: el de la izquierda que representa el número de personas traviesas en la casa y el de la derecha que representa el número de personas agradables en la casa. Si no hay un número en un lado, se interpreta como un 0.
Papá Noel no visita a aquellos que no están en el espíritu navideño (ni siquiera merecen carbón), por lo que a veces, una casa puede no tener un número a cada lado. En este caso, santa no necesita ayuda de ningún elfo
Por ejemplo, uno de los mapas de santa puede verse así
1*3+2*2+1*+*2
En la primera casa hay 1 travieso y 3 lindos, santa necesitará nueve elfos. En el segundo, hay 2 traviesos y 2 simpáticos, santa necesitará diez duendes. En la tercera casa hay 1 travieso y 0 simpático, santa necesitará tres duendes, y en la última casa hay 0 travieso y 2 simpáticos, santa necesitará cuatro duendes.
Sin embargo, esta es una versión demasiado simplificada de uno de los mapas de santa. Normalmente, los mapas de Papá Noel tienen varias líneas y tienen una forma cuadrada para ajustarse mejor a su lista. Un mapa normal podría verse más o menos así ( \n
a al final de cada línea)
1*2+*+*4+1*
2*4+3*+1*6+*
*+*+4*2+1*1
*4+*3+1*+2*3
3*10+2*+*5+*
En este mapa, santa necesita ((1 + 0 + 0 + 1 + 2 + 3 + 1 + 0 + 0 + 0 + 4 + 1 + 0 + 0 + 1 + 2 + 3 + 2 + 0 + 0) * 3) + ((2 + 0 + 4 + 0 + 4 + 0 + 6 + 0 + 0 + 0 + 2 + 1 + 4 + 3 + 0 + 3 + 10 + 0 + 5 + 0) * 2)
= 151 elfos
Reto
¡Ayuda a santa a determinar cuántos elfos necesita para entregar bienes a cada casa!
Casas
- Una casa está representada por un
*
- Las casas están divididas por
+
- El número a la izquierda de la casa simboliza el número de personas traviesas (ningún número significa 0)
- El número a la derecha simboliza el número de personas agradables (ningún número significa 0)
- Puede haber nuevas líneas (
\n
) en la entrada, que también se deben manejar como una división
Duendes
- Santa necesita ayuda de tres duendes para personas traviesas (el carbón es mucho más pesado que los regalos)
- Santa necesita ayuda de dos duendes para gente agradable
- Si no hay un número a cada lado, santa no visitará esa casa y, por lo tanto, no necesita ningún elfo
Qué hacer
Imprime el número de duendes que santa necesita para ayudarlo a entregar regalos a las casas. Debido a que todo lo que Santa necesita saber es cuántos elfos traer, solo necesita imprimir la cantidad adicional de elfos que necesita para la lista de casas
Casos de prueba
1*1 => 5
1*2 => 7
2*1 => 8
1* => 3
*1 => 2
* => 0
1*1+1*1 => 10
1*2+2*1 => 15
1*+*1 => 5
1*1+*+1*1 => 10
*+*+*+* => 0
Reglas
- La entrada puede tomarse como argumento en una función, o desde STDIN o equivalente
- La salida puede ser el valor de retorno de una función o imprimirse en STDOUT o equivalente
- La entrada sólo contendrá los números,
+
,*
, y saltos de línea\n
- La salida debería ser solo el número total de elfos de los que Santa necesita ayuda para entregar en Navidad
- Se aplican lagunas estándar
Tanteo
El trineo de Papá Noel está lleno de regalos que le dan menos espacio para ejecutar el código, por lo que necesita el código más corto que pueda obtener (no se preocupe si esto no tiene sentido. Si cuestiona la lógica de Papá Noel, terminará en la lista traviesa ) Debido al razonamiento CORRECTO de Santa , ¡el envío más corto en bytes gana!
Tabla de clasificación
Este es un fragmento de pila que genera una tabla de clasificación y una descripción general de los ganadores por idioma.
Para asegurarse de que su respuesta se muestre, comience con un título usando la siguiente plantilla de Markdown
## Language Name, N bytes
Donde N es el tamaño, en bytes, de su envío
Si desea incluir varios números en su encabezado (por ejemplo, tachar los puntajes antiguos o incluir marcas en el recuento de bytes), solo asegúrese de que el puntaje real sea el último número en su encabezado
## Language Name, <s>K</s> X + 2 = N bytes
max(naughty) + max(nice)
elfos para toda la ruta? Pensé que tenía un montón de elfos volando con él, pero tal vez tengas información privilegiada sobre eso y necesito mirar más de cerca este año. :)hello-world.c
. Los elfos trabajadores se asignan ansiosamente a los objetivos como dijo Jojodmo (estoy seguro de que conozco a Jojodmo, debe ser nuestro sistema) y luego usan una devolución de llamada para notificar cuándo es el momento de reinsertarse en la piscina de trineos o cuando un niño los vio.Respuestas:
Pyth, 21 bytes
Ejemplo de líneas múltiples
Conjunto de pruebas de una línea
fuente
JavaScript (ES6), 52 bytes
Explicación
Convierte la entrada en una declaración de JavaScript válida. Reemplaza todos
*
con.0*3+
y todos los demás símbolos (sin dígitos) con.0*2+
. Por ejemplo se8*9+*10
convierte8.0*3+9.0*2+.0*3+10
. Finalmente se agrega.0*2
al final para el último buen recuento. Esto funciona porquen.0
=n
y.0
=0
.Prueba
Mostrar fragmento de código
fuente
.0
idea.Flex + C,
11290 bytesEl primer personaje es un espacio. Compilar con:
Lee desde STDIN, escribe en STDOUT. La entrada es terminada por EOF (Ctrl + D en la consola).
fuente
Mathematica, 70 bytes
Usos
StringExtract
para extraer los números individuales.fuente
CJam, 23 bytes
Pruébalo aquí.
Explicación
fuente
En serio,
3830 bytesHex Dump:
Esta nueva versión rompe el intérprete en línea, pero funciona bien localmente. Aquí hay un ejemplo de ejecución:
Explicación:
Versión antigua:
Hex Dump:
Pruébalo en línea
Explicación:
Esto podría ser más corto si simplemente convirtiera cada línea por separado y las sumara todas al final. Lo investigaré más tarde.
fuente
PowerShell, 52 bytes
El uso de variación de user81655 's
.0
trucoVersión sin golf
Ejemplo de uso
fuente
Swift 2,
283211 BytesEsto se puede probar en SwiftStub, aquí
Sin golf
fuente
Python 3,
141114112 bytesToma entradas de varias líneas como esta
c("1*2+*+*4+1*\n2*4+3*+1*6+*\n*+*+4*2+1*1\n*4+*3+1*+2*3\n3*10+2*+*5+*")
Sin golf:
fuente
Llego muy tarde, pero de todos modos quería intentarlo.
Ruby ,
8455 bytesEncontré esta pregunta nuevamente después de tantos años y estaba pensando en una nueva respuesta antes de darme cuenta de que ya había respondido esto antes. Whoops! De todos modos, aquí hay una respuesta mejorada drásticamente.
Pruébalo en línea!
Antigua respuesta de 84 bytes de cuando respondí esto por primera vez hace 2 años:
Pruébalo en línea!
fuente
Python 3 , 96 bytes
Pruébalo en línea!
101 bytes sin expresiones regulares
Pruébalo en línea!
fuente