Écrivez un programme ou une fonction qui, étant donné une chaîne d'entrée et un écart-type σ
, sort cette chaîne le long de la courbe de distribution normale avec la moyenne 0
et l'écart-type σ
.
Courbe de distribution normale
Les y
coordonnées de chaque caractère c
sont:
où σ
est donné en entrée et où x
est la x
coordonnée de l' axe de c
.
- Le caractère au centre de la chaîne a
x = 0
. Si la longueur de la chaîne est paire, l'un des deux caractères du milieu peut être choisi comme centre. - Les caractères sont séparés par des pas de
0.1
(par exemple, le caractère à gauche du centre que l'on ax = -0.1
, celui à droite du milieu ax = 0.1
, etc.).
Impression de la chaîne
- Les lignes, comme les caractères, sont séparées par des pas de
0.1
. - Chaque caractère est imprimé sur la ligne avec la
y
valeur qui se rapproche le plus de sa proprey
valeur (si la valeur se situe précisément entre les valeurs de deux lignes, choisissez celle qui a la plus grande valeur (tout comme leround
retourne habituellement1.0
pour0.5
)). - Par exemple, si la
y
coordonnée de la valeur centrale (c'est-à-dire la valeur maximale) est0.78
et lay
coordonnée du premier caractère est0.2
, alors il y aura 9 lignes: le caractère central étant imprimé en ligne0
et le premier caractère étant imprimé en ligne8
.
Entrées et sorties
- Vous pouvez prendre les deux entrées (la chaîne et
σ
) comme arguments de programme, viaSTDIN
, arguments de fonction ou tout autre élément similaire dans votre langue. - La chaîne ne contiendra que des caractères imprimables
ASCII
. La chaîne peut être vide. σ > 0
.- Vous pouvez imprimer la sortie
STDOUT
dans un fichier ou la renvoyer à partir d'une fonction ( tant qu'il s'agit d'une chaîne et non pas d'une liste de chaînes pour chaque ligne). - Une nouvelle ligne de fin est acceptable.
- Les espaces de fin sont acceptables tant qu'ils ne font pas dépasser la ligne de la dernière ligne (donc aucun espace de fin n'est acceptable sur la dernière ligne).
Cas de test
σ 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 .....................
.
. .
. .
. .
. .
. .
. .
. .
... ...
Notation
C'est du golf de code ,
nsw
a er
t
s i
e n
t
or by
sh te
so the s wins.
Réponses:
Python 3 avec SciPy ,
239233 octetsUne fonction qui prend l'entrée via l'argument de l'écart-type
s
et de la chaînet
et imprime le résultat dans STDOUT.Comment ça fonctionne
Essayez-le sur Ideone
la source
Rubis:
273254 octetsUn grand merci à Kevin Lau pour avoir économisé 18 octets!
la source
->n,s{...
va. Vous n'avez pas besoin de crochets lors de l'attribution de plusieurs variables:o,g,r,l=[],0,{}
fonctionne très bien.$/
peut être utilisé à la place de?\n
. L'ordre des opérations signifie que vous n'avez pas à mettre toutes vos multiplies sur la ligne 5 en parens.puts
déplie automatiquement les tableaux et les sépare des retours à la ligne lors de l'impression.n.gsub(/./){...
batn.each_char{...
un peu parce que vous pouvez retirer le|c|
et mettre$&
où toute mentionc
était. Faites vos chaînes de valeurs de hachage (commencez par||=""
non||=[]
) et vous pouvez passerc[...]*""
àc[...]