Escriba un programa o función que, dada una cadena de entrada y una desviación estándar σ
, produzca esa cadena a lo largo de la curva de distribución normal con media 0
y desviación estándar σ
.
Curva de distribución normal
La y
coordenada de cada personaje c
es:
donde σ
se da como entrada, y donde x
es la x
coordenada del eje de c
.
- El carácter en el centro de la cadena tiene
x = 0
. Si la longitud de la cadena es par, cualquiera de los dos caracteres del medio se puede elegir como centro. - Los caracteres están separados por pasos de
0.1
(por ejemplo, el carácter a la izquierda del centro que tienex = -0.1
, el que está a la derecha del centro tienex = 0.1
, etc.).
Imprimir la cadena
- Las líneas, como los caracteres, están separadas por pasos de
0.1
. - Cada carácter se imprime en la línea con el
y
valor que está más cerca de su propioy
valor (si el valor es precisamente entre los valores de dos líneas, elegir el que tenga el mayor valor (al igual que cómoround
lo general regresa1.0
a0.5
)). - Por ejemplo, si la
y
coordenada del valor central (es decir, el valor máximo) es0.78
y lay
coordenada del primer carácter es0.2
, entonces habrá 9 líneas: el carácter central se imprime en línea0
y el primer carácter se imprime en línea8
.
Entradas y salidas
- Puede tomar ambas entradas (la cadena y
σ
) como argumentos del programa, a través deSTDIN
argumentos de función o cualquier cosa similar en su idioma. - La cadena solo contendrá
ASCII
caracteres imprimibles . La cadena puede estar vacía. σ > 0
.- Puede imprimir el resultado
STDOUT
en un archivo o devolverlo desde una función ( siempre que sea una cadena y no diga una lista de cadenas para cada línea). - Una nueva línea final es aceptable.
- Los espacios finales son aceptables siempre que no hagan que la línea exceda la última línea de longitud (por lo que no se acepta espacio final en la última línea).
Casos de prueba
σ String
0.5 Hello, World!
, W
lo or
l l
e d
H !
0.5 This is a perfectly normal sentence
tly
ec n
f o
r r
e m
p a
a l
s se
This i ntence
1.5 Programming Puzzles & Code Golf is a question and answer site for programming puzzle enthusiasts and code golfers.
d answer site for p
uestion an rogramming
Code Golf is a q puzzle enthusia
Programming Puzzles & sts and code golfers.
0.3 .....................
.
. .
. .
. .
. .
. .
. .
. .
... ...
Puntuación
Este es el código de golf ,
nsw
a er
t
s i
e n
t
or by
sh te
so the s wins.
Respuestas:
Python 3 con SciPy ,
239233 bytesUna función que toma datos a través del argumento de desviación estándar
s
y cadenat
, e imprime el resultado en STDOUT.Cómo funciona
Pruébalo en Ideone
fuente
Rubí:
273254bytes¡Muchas gracias a Kevin Lau por guardar 18 bytes!
fuente
->n,s{...
está bien. No necesita corchetes al asignar múltiples variables:o,g,r,l=[],0,{}
funciona bien.$/
se puede usar en lugar de?\n
. El orden de las operaciones significa que no tiene que poner todas sus multiplicaciones en la línea 5 en parens.puts
despliega automáticamente las matrices y las separa con nuevas líneas al imprimir.n.gsub(/./){...
superan.each_char{...
un poco porque puedes sacar el|c|
y poner$&
donde estaba cualquier mención dec
. Haga sus cadenas de valores hash (comience con||=""
not||=[]
) y puede cambiarc[...]*""
ac[...]