Bien, ayer fue el segundo día de Navidad y mis (abuelos) padres y yo tuvimos un juego de "sjoelen", como se llama en los Países Bajos. El programador interno apareció en mí, pero justo cuando tuve la respuesta, la perdí. Quiero que lo vuelvas a hacer.
Las normas:
Tienes una tabla de madera, un sjoelbak , con 4 cajas, cada una con su propio número. Cuando un schijf (un objeto parecido a un disco) entra en una de las casillas, obtienes los puntos sobre esa casilla.
Cuando hay un schijf en las 4 casillas, no obtienes 10 pero obtienes 20 puntos.
Ejemplo:
De izquierda a derecha: 3 5 4 3
Cada cuadro tiene al menos 3 schijven (Plural de schijf ), por lo que es 20 * 3 = 60 puntos.
Valores resultantes: 0 2 1 0
0 * 2 + 2 * 3 + 1 * 4 + 0 * 1 = 10 puntos.
Lo que hace un total de 60 + 10 = 70 puntos.
La entrada:
la cantidad de schijven de izquierda a derecha, es decir, "4 5 4 5", [4,5,4,5], "4 \ n5 \ n4 \ n5", lo que quieras.
La salida:
la cantidad de puntos, es decir, 84, como salida, variable, retorno o en la parte superior de la pila, lo que quieras.
Como en todos y cada uno de los códigos de golf, no puede usar secuencias de comandos externas y el código con la menor cantidad de bytes gana.
PD: Como ya habrás notado, soy holandés. Siéntase libre de editar posibles errores gramaticales.
fuente
Respuestas:
CJam,
23 2120 bytesPodría ser capaz de jugar un par de bytes de esto.
La entrada es como
La salida es el puntaje
Cómo funciona
Algoritmo
[1 2 3 4]
.1 + 2 + 3 + 4 = 10
, simplemente agrego el mínimo común schijven a cada uno para obtener el efecto de la10
puntuación de bonificación .1
cada uno, luego multiplico el segundo con2
y lo agrego al primero. En la siguiente iteración, obtengo la suma actual y el puntaje3
schijven. Y así.Pruébalo en línea aquí
fuente
Piet, 240 codeles (30 * 8), 138 que contienen código real
Codel tamaño 10, para una mejor visibilidad.
Ejemplos de prueba:
Pantalla de flujo:
Usando mi propia taquigrafía para un manejo más fácil y una pantalla compacta. Muestra el flujo general del programa, no las ubicaciones exactas de los códeles.
Explicación completa:
Guarde la imagen y pruébela en este intérprete en línea de Piet:
PietDev en línea Intérprete de Piet
fuente
APL (Dyalog Classic) ,
161312 bytes-3 gracias a @ Adám
Pruébalo en línea!
⌽+⌊/
inversa (arg) + min (arg)1⌽
rotar 1 a la izquierda+\
sumas parciales+/
sumafuente
Mathematica,
38322320 bytes(Con ayuda de swish )
Use al agregar la entrada al final:
Alternativo (36 bytes):
fuente
Tr[(# + Min@#) {2, 3, 4, 1}] &
20*Min@#
, puede deshacerse de él reemplazando menos con más, porque convenientemente2+3+4+1==10
.R,
4140 caracteresUso:
En el último ejemplo,
a
es vector3 5 4 3
,a-b
es0 2 1 0
, que multiplicamos con vector2 3 4 1
, dando0 6 4 0
lo que agregamos con5*b
dar15 21 19 15
(5*b
siendo reciclado para cada miembro del vector agregado, por lo tanto, agregando efectivamente4*5*b
), que finalmente sumamos, dando así70
.fuente
b=min(a<-scan());sum(5*b+(a-b)*c(2:4,1))
JavaScript (ES6),
9347 bytesUso:
s(1, 2, 3, 4)
Cómo funciona: la función busca el número más pequeño en los argumentos, y lo multiplica por
10
(no con20
) y agrega el resto de la puntuación. No es necesario multiplicar20
y restar partes de la puntuación para continuar el cálculo.¡Gracias a edc65 por compartir mejoras!
Sin golf:
fuente
S=(a,b,c,d)=>10*Math.min(a,b,c,d)+a*2+b*3+c*4+d
Pyth , 15
La entrada se debe dar separada por comas en STDIN, p. Ej.
Esto usa el mismo truco que muchas otras soluciones han usado, de agregar el mínimo a cada elemento para dar cuenta de la bonificación. El mínimo está
hSQ
en el código anterior. Para tener en cuenta la multiplicación por 2, 3, 4 y 1, mapeo d sobre la lista [0,1,2,3], y multiplico el elemento (dl) th de la entrada por d + 1. Por lo tanto, el elemento -1 se multiplica por 1, el cero por 2, el primero por 3 y el segundo por 4. Luego sumo.fuente
J,
2322 caracteresEjemplo:
Pruébalo aquí.
(23 larga definición de función explícita:
v=:3 :'+/+/\.3|.y+<./y'
)fuente
+/2 3 4 1*(+<./)
?2 3 4 1+/ .×]+<./
?Avestruz v0.1.0 ,
4841 caracteres (demasiado largo)Esto es simplemente lo mismo que la versión anterior a continuación, excepto que en lugar de usar
@
para rotar toda la pila,)\+
se usa en su lugar (descomprimir a la derecha).Versión antigua:
De hecho, he descubierto dos errores en mi lenguaje recientemente implementado, anotado en la descripción a continuación. (Actualmente, el lenguaje es muy, muy similar a Golfscript, por lo que si conoce Golfscript debería ser bastante fácil de leer.
Espera la entrada como una matriz en STDIN, porque soy un pomo y olvidé implementar E / S en v0.1.0.
Resolver un problema real en Avestruz es bueno, porque me muestra exactamente cuántas cosas más necesito agregar al idioma: D
fuente
Python 2, 43 bytes
Inspirado por la respuesta de @ user2487951.
fuente
Jagl Alpha 1.2 - 20 bytes
La entrada está en formato estándar
(3 4 5 6)
, la salida se deja en la pila:Esperando una respuesta del póster original sobre el formato de salida. Como la entrada se especifica como "lo que quieras" , voy a suponer que mi entrada puede ser una matriz en la parte superior de la pila.Ahora toma entrada en stdin.Explicación:
fuente
Haskell, 40
en lugar de eliminar el número mínimo del resto y agregar más
20
s , esto agrega más10
para el número mínimo.fuente
..4*c+d..
Matlab, 27
Me llevó un tiempo entender que es un juego para un jugador. Con la ayuda de la función anónima
que se invoca con el vector fila
fuente
f=
2 bytes menos. La función se almacena en laans
variable en su lugar.[2:4,1]
eliminará 2 bytes si la entrada es un vector de columna.Java, 84 bytes
Tengo la idea de que esto se puede jugar más, pero esto es todo por ahora.
Llamar con
A(new int[]{3,5,4,3})
, la salida se devuelve como int (porqueSystem.out.println()
duplicaría los bytes)Sin golf
fuente
GolfScript, 22 bytes
Lee la entrada de stdin, en el formato
[3 5 4 3]
. Escribe la salida en stdout. (Si se permite tomar la entrada como una matriz en la pila,~
se puede omitir el inicio para un total de 21 bytes).Esto utiliza una estrategia algo diferente a las soluciones de CJam / Pyth / etc.: primero construyo una matriz con 2 copias del primer valor de entrada, 3 del segundo, 4 del tercero y uno del cuarto. Luego clasifico esta matriz, extraigo el elemento más pequeño, lo multiplico por 11 y lo sumo con los otros elementos.
fuente
Pitón 2, 51
Sin inspiración, pero corto:
Más pitónico:
fuente
Julia
4835 caracteresfunction p(m);sum([2 3 4 1].*m)+10minimum(m);end
en forma de asignación compacta:
Ejemplo:
fuente
Javascript, 97 bytes
fuente
Javascript, ES6, 57
Quería ver cómo resultaría la recursión, y aunque definitivamente no es la respuesta más corta, sentí que resultó bien.
a*b*c*d
: Toma los valores de entrada y encuentra el producto de todos ellos, y los evalúa como una expresión booleana para una instrucción if en línea. Esto devolverá falso si uno o más de los valores son 0, y verdadero para cualquier otro valor.20+f(--a,--b,--c,--d)
: Si devuelve verdadero, la función devuelve 20 (para el conjunto schijven ) más la llamada recursiva de la función para todos los valores menos uno (Para eliminar ese conjunto schijven ). De esta manera, recorrerá recursivamente hasta que al menos uno de los cuadros esté vacío.a*2+b*3+c*4+d
Después de que al menos un cuadro esté vacío, la otra parte de la instrucción if inline se ejecutará. Simplemente devuelve los puntos para el schijven restante en las cajas.Así, al final, todos los conjuntos de schijven de 20 puntos , y los puntos restantes se resumen y devuelven de la función, produciendo la respuesta.
fuente
Haskell 42 caracteres
fuente
f l@[a,b,c,d]=10*minimum l+2*a+3*b+4*c+d
- ahorra 2 caracteresHPPPL (lenguaje de programación HP Prime),
5857 bytesEl * entre 10 y min no es necesario, así que lo eliminé.
HPPPL es el lenguaje de programación para la calculadora gráfica de color HP Prime / CAS.
Ejecuciones de ejemplo:
Si no tiene que ser un programa, entonces es realizable en un
4039 bytes de una línea:fuente
Staq, 72 caracteres
Ejemplo de ejecución:
Staq tiene dos pilas, una activa y otra pasiva. El
|
comando cambia la pila activa a pasiva y viceversa.Todo entre llaves se define una función, la primera letra después de la llave de apertura es el nombre de la función, el resto hasta la llave de cierre es la función misma. Las funciones de anulación, recursión y funciones anidadas son posibles.
{aii}
definiría una función a que incrementaría la parte superior de la pila dos veces. Cada siguiente instancia dea
en el código será reemplazada porii
.Comentarios dentro de los programas de Staq:
&
agrega un cero en la parte superior de la pila,[
indica al puntero que salte al correspondiente]
si la parte superior de la pila es cero,x
elimina el valor más alto en la pila. Por lo tanto, los comentarios se pueden escribir en el código en forma de&[here is a comment]x
Explicación (también ejecutable):
https://esolangs.org/wiki/Staq
El programa usa una pila (inicialmente activa) para calcular 2a + 3b + 4c + d, y la segunda pila (inicialmente pasiva) para calcular 10 veces el mínimo de los valores de entrada. Luego, ambos resultados se resumen y se muestran.
fuente
PowerShell para Windows ,
4847 bytes-1 byte gracias a mazzy
Pruébalo en línea!
fuente
Powershell for Windows
cuándo usamos elsort
alias? ver meta