Escreva um programa ou função que, dada uma sequência de entrada e um desvio padrão σ
, produza essa sequência ao longo da curva de distribuição normal com média 0
e desvio padrão σ
.
Curva de distribuição normal
A y
coordenada de cada caractere c
é:
onde σ
é dado como entrada e onde x
é a x
coordenada do eixo de c
.
- O caractere no centro da string possui
x = 0
. Se o comprimento da string for par, qualquer um dos dois caracteres do meio poderá ser escolhido como o centro. - Os caracteres são separados por etapas de
0.1
(por exemplo, o caractere à esquerda do centrox = -0.1
, o da direita, o meiox = 0.1
, etc.).
Imprimindo a sequência
- Linhas, como caracteres, são separadas por etapas de
0.1
. - Cada personagem é impresso na linha com o
y
valor que é mais próximo ao seu próprioy
valor (se o valor for precisamente entre os valores das duas linhas, escolha aquele com o maior valor (da mesma forma comoround
normalmente retorna1.0
para0.5
)). - Por exemplo, se a
y
coordenada do valor central (ou seja, o valor máximo) for0.78
e ay
coordenada do primeiro caractere0.2
, haverá 9 linhas: o caractere central sendo impresso na linha0
e o primeiro caractere impresso na linha8
.
Entradas e saídas
- Você pode usar as duas entradas (a string e
σ
) como argumentos do programa, através deSTDIN
argumentos de função ou qualquer coisa semelhante em seu idioma. - A sequência conterá apenas
ASCII
caracteres imprimíveis . A cadeia pode estar vazia. σ > 0
.- Você pode imprimir a saída
STDOUT
em um arquivo ou retorná-la de uma função ( desde que seja uma sequência e não diga uma lista de sequências para cada linha). - Uma nova linha à direita é aceitável.
- Os espaços à direita são aceitáveis desde que a linha não exceda a última linha de comprimento (portanto, nenhum espaço à direita é aceitável na última linha).
Casos de teste
σ 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 .....................
.
. .
. .
. .
. .
. .
. .
. .
... ...
Pontuação
Isso é código-golfe ,
nsw
a er
t
s i
e n
t
or by
sh te
so the s wins.
Respostas:
Python 3 com SciPy ,
239233 bytesUma função que recebe entrada via argumento de desvio padrão
s
e stringt
e imprime o resultado em STDOUT.Como funciona
Experimente no Ideone
fonte
Ruby:
273254 bytesUm enorme obrigado a Kevin Lau por salvar 18 bytes!
fonte
->n,s{...
bem. Você não precisa de colchetes ao atribuir várias variáveis:o,g,r,l=[],0,{}
funciona muito bem.$/
pode ser usado no lugar de?\n
. Ordem das operações significa que você não precisa colocar todas as suas multiplicações na linha 5 em parênteses.puts
desdobra automaticamente matrizes e as separa com novas linhas durante a impressão.n.gsub(/./){...
baten.each_char{...
um pouco porque você pode tirar o|c|
e colocar$&
onde qualquer mençãoc
foi. Faça seus valores de hash cordas (começar com||=""
não||=[]
) e você pode mudarc[...]*""
ac[...]