Este es un seguimiento de CodeGolf: ignore el ruido n. ° 1, el único problema es que Barry nos ha empeorado las cosas. Vamos a ver que pasó
Actualizar
Agregué código para crear entradas aleatorias y salidas esperadas porque no soy tan bueno para explicar lo que quiero, y supongo que a veces las palabras son más engañosas que el código (¿no es así siempre?)
Descripción
Otro método en la API de Dumb Corp nos da el precio actual que un proveedor nos está dando por un artículo, el precio óptimo con el que estaríamos haciendo ventas máximas y la tendencia de ese precio en comparación con los precios anteriores como una cadena UP
o DOWN
. Necesitamos decidir si debemos eliminar el artículo de la tienda o esperar.
Entrada
80,90,UP
150,100,DOWN
65,65,UP
1618,1618,DOWN
840,1200,DOWN
54,12,UP
30,1,UP
Para una demostración de muestra de gran entrada con salida esperada, coloque el siguiente código (js) en la consola de su navegador y debería generar una entrada aleatoria válida para la prueba.
var output = "";
var result = "";
for(i=10;i--;){
var currentPrice = Math.floor(Math.random() * 10000) + 1;
var optimalPrice = Math.floor(Math.random() * 10000) + 1;
var tendency = Math.round(Math.random())?"UP":"DOWN";
var tresult = "WAIT\n";
if((currentPrice > optimalPrice && tendency == "UP") ||
(currentPrice < optimalPrice && tendency == "DOWN")){
tresult = "STOP\n";
}
output +=currentPrice+","+optimalPrice+","+tendency+"\n";
result +=tresult;
}
console.log(output);
console.log(result);
Como siempre tendremos una variable G
como nuestra entrada, sin embargo, si su idioma le facilita la lectura de la entrada, también está bien. El formato es constante y sigue el formato.int,int,string
Salida deseada
Eres el cerebro de esta operación, Barry debería estar haciendo este cálculo en el servidor, pero no podemos contar con él como debes saber. Debe generar WAIT
si la tendencia es hacia el precio óptimo, o STOP
si la tendencia es hacia la pérdida.
En otras palabras, con la 80,90,UP
entrada como, sabemos que hay un producto con un precio actual de 80 y un precio óptimo de 90 con una tendencia a subir, por lo que deberíamos WAIT
. Por otro lado, 840,1200,DOWN
significa que el precio del producto está bajando y nuestro precio óptimo es más alto, por lo que deberíamos detener las pérdidas produciendo STOP
.
Si los dos precios son idénticos, la producción WAIT
independientemente de la tendencia.
Cada producto en una nueva línea, una sola palabra por línea:
WAIT
WAIT
WAIT
WAIT
STOP
STOP
STOP
Por favor, cuando sea posible, proporcione una forma de verificar que su código esté funcionando, ya que no todos podemos saberlo simplemente mirando la sintaxis. Como siempre, use la menor cantidad de caracteres posible y recuerde que no está compitiendo necesariamente con otros idiomas, compite con idiomas con una sintaxis similar.
Respuestas:
CJam,
312927 caracteresEsta es solo una versión codificada del siguiente código (para hacer uso de la puntuación por caracteres):
Ejecute todos los casos de prueba aquí.
Puede haber una forma de acortar esto mediante la codificación
STOP
yWAIT
, pero estoy bastante contento con el resto.Explicación
El código está rodeado por un bucle que se lee en línea a la vez, lo procesa, luego empuja una nueva línea y lee la siguiente línea ... El bucle termina una vez que
r
devuelve una cadena vacía (es decir, después de que se hayan procesado todas las líneas). Esa es esta parte:En cuanto al procesamiento de cada línea, estoy haciendo uso del hecho de que las letras mayúsculas son variables en CJam, por lo que puedo evaluar algunas de las entradas.
Entonces, el problema es que
UP
invertimos los tamaños relativos de los precios, para que podamos cubrir todos los casos con una desigualdad única al final.fuente
"㫅㍸ꕆ敟鸢Ꝓ約䢫솓儓隆뻨"2G#b128b:c~
Perl, 35
Ponme a prueba .
fuente
Perl,
7773 bytesAsí es como funciona:
while(<>)
analiza cada línea.@p=split","
lo divide por cada coma. Está utilizando el operador Perl predeterminado$_
(que es donde se almacena la línea).print (ternary)
determina qué imprimir.$p[0]<$p[1]and$p[2]=~/D/
pregunta si el precio actual es menor que el precio que queremos y está bajando (marcando una D.)(condition)?(if):(else)
es el operador ternario.STOP
. De lo contrario, saldráWAIT
.Supongo que no hay una nueva línea final en la entrada; una nueva línea final produce un extra
WAIT
.¡Gracias a Alex A. por ayudarme a ahorrar 4 bytes!
fuente
and
? ¿Puedes usar&
o algo?&&
comporta de manera extraña. Intenté usarlo y dijo que había un "incomparable<>
".print
y hacer algo comoprint((condition)?"STOP":"WAIT")."\n"
?C, 85
Ponme a prueba .
fuente
R,
95108R y cadenas, no realmente amigos :)
La entrada es el vector de caracteres y
G
luego cambia cada cadena en unaif
declaración que se evalúa.Editar en mal estado mi interpretación de las reglas. Fix costó unos pocos personajes.
fuente
Ruby - 89 caracteres
RubyFiddle
Con ayuda de a bluetorange!
fuente
=
ahora gracias :)=
lo que sabía que también era una posibilidad ... Hora de arreglarlo!1618,1618,DOWN
?a.split.map{..}
impresiones 3WAIT
oSTOP
para cada línea de entrada. ¿Querías hacer algo? comob,c,d=a.split(?,)
? Además,!b[3][2]
es más corto queb[3]=='UP'
, pero creo que debería serb[2]
? Comparar cadenas con>=
requiere atención, como"9">="77"
es cierto. El separador de línea de entrada predeterminado es\n
, por lo que podría usarlosplit
sin argumentos.?\n
es más corto que'\n'
.Python 3,
898482 bytesExplicación:
fuente
Matlab,
10090 bytesNo es tan pequeño como me gustaría, especialmente la conversión de booleano a cadenas es muy larga. Intenté reducir algunos bytes al cambiar a Octave, pero aparentemente% c aún no es compatible con textcan en Octave.
Personalmente, creo que es bueno que esta solución sea la única hasta ahora que no use división :)
EDITAR: originalmente resolvió la situación de igualdad de manera demasiado compleja.
fuente
a=
bit antes de laxor
llamada a la función. Aunque incluso entonces en realidad no produce la salida correcta.Javascript ECMAScript 6, 112b
Solo en navegadores compatibles con ECMAScript 6
Explicación
Utiliza el hecho de que si preguntamos si 0 es verdadero, devolverá falso, por lo que podemos decir 1 para
UP
, -1 paraDOWN
. Luego lo multiplicamos por la diferencia del precio actual y el precio óptimo para que ambos funcionen por más de 0 partes.Si se cumple la condición, regrese
STOP
, de lo contrario (incluyendo valores iguales) regreseWAIT
Necesita más golf
fuente
Javascript ( ES6 ),
828079 bytesEditar: -2 usando el método de multiplicación @ JuanCortés
Editar: -1 usando un truco para reducir el método de multiplicación
Comentado:
Fragmento de demostración:
Revisión histórica:
fuente
C- 91 bytes
Porque C tiene que estar allí en alguna parte
Ahora se ve muy similar a la versión @nutki, aunque determinar si la salida "STOP" o "WAIT" es diferente.
Sin golfos
Golfizado
El viejo
Continuaré intentando cortarlo
fuente
char c[4]
lugar dechar *c=""
(que también es más corto).char c[5]
(1 espacio para\0
el final)?Python 3 -
10810610297BTrabajo en progreso...
fuente