Schreiben Sie ein Programm oder eine Funktion, die bei gegebener Eingabezeichenfolge und Standardabweichung σ
diese Zeichenfolge entlang der Normalverteilungskurve mit Mittelwert 0
und Standardabweichung ausgibt σ
.
Normalverteilungskurve
Die y
Koordinate jedes Zeichens c
ist:
wo σ
wird als Eingabe angegeben und wo x
ist die x
Achsenkoordinate von c
.
- Das Zeichen in der Mitte der Zeichenfolge hat
x = 0
. Wenn die Länge der Zeichenfolge gerade ist, kann eines der beiden mittleren Zeichen als Mittelpunkt gewählt werden. - Zeichen werden durch Schritte von getrennt
0.1
(z. B. das Zeichen links von der Mittex = -0.1
, das rechts von der Mittex = 0.1
usw.).
String drucken
- Zeilen werden wie Zeichen durch die Schritte von getrennt
0.1
. - Jedes Zeichen wird in der Zeile mit dem
y
Wert gedruckt, der seinem eigeneny
Wert am nächsten kommt (wenn der Wert genau zwischen den Werten von zwei Zeilen liegt, wählen Sie den Wert mit dem größten Wert aus (so wie esround
normalerweise1.0
für gilt0.5
)). - Wenn beispielsweise die
y
Koordinate des Mittenwerts (dh der Maximalwert)0.78
und diey
Koordinate des ersten Zeichens ist0.2
, werden 9 Zeilen angezeigt: das Mittenzeichen wird in der Zeile gedruckt0
und das erste Zeichen wird in der Zeile gedruckt8
.
Eingänge und Ausgänge
- Sie können beide Eingaben (die Zeichenfolge und
σ
) als Programmargumente, DurchgangsargumenteSTDIN
, Funktionsargumente oder ähnliches in Ihrer Sprache verwenden. - Die Zeichenfolge enthält nur druckbare
ASCII
Zeichen. Die Zeichenfolge kann leer sein. σ > 0
.- Sie können die Ausgabe
STDOUT
in eine Datei drucken oder von einer Funktion zurückgeben ( sofern es sich um eine Zeichenfolge handelt und nicht um eine Liste von Zeichenfolgen für jede Zeile). - Eine abschließende neue Zeile ist akzeptabel.
- Abschließende Leerzeichen sind zulässig, solange die Zeile nicht länger als die letzte Zeile ist (daher ist in der letzten Zeile kein abschließendes Leerzeichen zulässig).
Testfälle
σ 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 .....................
.
. .
. .
. .
. .
. .
. .
. .
... ...
Wertung
Das ist Code-Golf ,
nsw
a er
t
s i
e n
t
or by
sh te
so the s wins.
Antworten:
Python 3 mit SciPy ,
239233 BytesEine Funktion, die Eingaben über Argumente für Standardabweichung
s
und Zeichenfolget
akzeptiert und das Ergebnis an STDOUT ausgibt.Wie es funktioniert
Probieren Sie es auf Ideone
quelle
Ruby:
273254 BytesEin großes Dankeschön an Kevin Lau für die Einsparung von 18 Bytes!
quelle
->n,s{...
ist in Ordnung. Sie brauchen keine Klammern, wenn Sie mehrere Variablen zuweisen:o,g,r,l=[],0,{}
funktioniert einwandfrei.$/
kann anstelle von verwendet werden?\n
. Die Reihenfolge der Operationen bedeutet, dass Sie nicht alle Multiplikationen in Zeile 5 in parens eintragen müssen.puts
Faltet Arrays automatisch auseinander und trennt sie beim Drucken mit Zeilenumbrüchen.n.gsub(/./){...
schlägtn.each_char{...
ein bisschen aus, weil man das rausnehmen kann|c|
und$&
dort ablegen kann, wo es erwähntc
wurde. Machen Sie Ihre Hash-Werte-Zeichenketten (beginnen Sie mit||=""
nicht||=[]
) und Sie könnenc[...]*""
zuc[...]