Ley de equilibrio
Visión general
Dada una entrada de 3 enteros positivos de un solo dígito que representan un conjunto de pesos, genera una representación ASCII de un balancín con los pesos colocados sobre él para que esté en equilibrio alrededor de un pivote central, teniendo en cuenta los efectos de palanca.
Cada número tiene un peso igual a su valor. El torque de cada número es el peso multiplicado por la distancia desde el centro en caracteres. Para el sube y baja para estar en equilibrio, el par suma de los pesos de la parte izquierda el sube y baja debe ser igual a la de los de la derecha, como este .
Entrada
3 enteros en el rango de 1-9. Puede ingresar los enteros, sin embargo, es conveniente, por ejemplo, una tupla, 3 valores separados por comas, etc. Sin embargo, su programa debe ser capaz de manejar la entrada de números en cualquier orden (es decir, sin suponer que los valores se ordenarán). Se pueden ingresar números duplicados (por ejemplo, 2,3,2).
Las entradas siempre permitirán matemáticamente una salida válida, de lo contrario la entrada no es válida.
Salida
La salida debe ser una representación ASCII de 2 líneas del balancín con los pesos colocados en él. En la primera línea están los dígitos, espaciados para equilibrarlos en el balancín.
Los números no se pueden colocar en el centro de la escala, donde la distancia y, por lo tanto, el par, serían cero. Las distancias válidas desde el centro varían de 1 a 10 caracteres, incluidos a la izquierda o derecha del pivote.
En los espacios desocupados por los números hay 18 caracteres de subrayado (un subrayado central y 10 en cada lado, menos las 3 posiciones ocupadas por los números). En la última línea hay un solo carácter de intercalación alineado con el centro de la escala, que representa el pivote.
Ejemplos
Entrada:
4,7,2
Salida:
________7___42_______
^
7 * 2 = 4 * 2 + 2 * 3
Los números se pueden generar en cualquier lado, por ejemplo, esto también sería válido:
_______24___7________
^
2 * 3 + 4 * 2 = 7 * 2
Los números se pueden colocar en cualquier lugar de la escala siempre que se equilibren, por ejemplo:
Entrada:
3,1,5
Salida:
_____5________1__3___
^
5 * 5 = 1 * 4 + 3 * 7
o
____5________1_____3_
^
5 * 6 = 1 * 3 + 3 * 9
o
____5___________1_3__
^
5 * 6 = 1 * 6 + 3 * 8
etc.
Su programa solo tiene que generar una de las salidas válidas. No tiene que generar un error si la entrada no es válida.
Notas
- Este es el código de golf, por lo que gana el programa más corto en bytes
- El programa puede ser independiente o una función que acepta los números como entrada y devuelve una cadena.
- La nueva línea final y el espacio en blanco en la última línea es opcional
- Si no sabe lo que es un balancín , también se lo conoce como un balancín o un teeboard.
Respuestas:
CJam,
403938 bytesPruébalo en línea.
Cómo funciona
fuente
CJam,
4644 bytesPruébalo aquí.
Explicación
Primero, una observación: nunca necesitamos poner dos dígitos en los extremos del balancín. Siempre que sea una solución válida, hay al menos otra solución válida (de acuerdo con el pastebin en el comentario sobre el desafío).
fuente
Java,
519414321 bytesMi primer intento de jugar al golf.
Puedes llamarlo con
f(a,b,c)
. Pruébalo aquíEDITAR: método de verificación izlin usado
(a*i+b*j+c*k)==0
EDITAR: Gracias, J Atkin por las sugerencias de golf.
fuente
p
aObject a
y usarlo en lugar de los otros 2System.out.print(ln)
s.a
se usa solo una vez, puede incluirlo en línea.Pyth
67585349 bytesEsto se siente un poco enorme para Pyth, pero no estoy lo suficientemente familiarizado con el lenguaje para poder ser mucho más pequeño.Sub 50 bytes, ¡finalmente estoy feliz con esto!La entrada se espera como una matriz de enteros, por ejemplo
[1,2,3]
. Pruébalo aquíExplicación:
Y finalmente, algunos ejemplos de entradas y salidas:
fuente
C -
237228 bytesPuedes llamarlo con
f(a,b,c)
.Probarlo aquí .
Salidas de ejemplo:
fuente
Python 2.7
235226219 bytesProbándolo con algunos ejemplos básicos
(1,1,1),(1,2,1),(3,1,5),(4,7,2)
: resultados en:Salidas para todas las entradas posibles pegadas aquí
fuente
"".join(l) -> 'l'[2::5]
es un byte más corto (reemplace las comillas con comillas invertidas).repr
. :)PHP, 278 bytes
Una solución de fuerza bruta que utiliza un montón de bucles anidados y un par de pruebas.
Como siempre, póngalo en un archivo (nombremoslo
seesaw.php
), una las líneas (dividido aquí para facilitar la lectura), coloque el marcador PHP (<?php
) al comienzo del archivo (técnicamente, no es parte del programa) y usted ' re bueno para ir.Un ejemplo de ejecución:
Genera y muestra todas las soluciones (sin reflejos), pero no elimina los duplicados (cuando los valores de entrada contienen duplicados).
fuente
Julia, 154 bytes
Ungolfed + explicación:
fuente
C, 252 (214) bytes
Llame con a, b, c como argumentos en la línea de comando.
Si se puede omitir main, el recuento de bytes cae a 214 para una función.
Ambos usan la misma estrategia de colocar el primer peso a la izquierda, luego escanear a lo largo de las posibles posiciones del segundo peso y calcular el tercer peso. Esto permite la eliminación de un bucle interno.
fuente