Wenn Sie eine Zahl runden und die nächste Ziffer ist >= 5
, fügen Sie 1 hinzu. Zum Beispiel:
3.1415926535 rounded to 1dp is 3.1
3.1415926535 rounded to 4dp is 3.1416 <-- Note the 5 changed to 6
3.1415926535 rounded to 5dp is 3.14159
3.1415926535 rounded to 9dp is 3.141592654 <-- Note the 3 changed to 4
Ihre Herausforderung besteht darin, eine Ganzzahl als Eingabe zu erhalten und die Anzahl der Dezimalstellen auszugeben, vor denen Sie die Quadratwurzel der Zahl runden müssten - dh die Anzahl der Dezimalstellen vor einer vorkommenden Ziffer >= 5
.
Die Ganzzahl liegt zwischen 0 und einschließlich 100.000, sodass Sie für den Randfall 59752 17 Dezimalstellen unterstützen müssen (um die 17. zu überprüfen).
Wenn Ihre Programmiersprache die Anzahl der Dezimalstellen nicht ändern kann, können Sie ein "?" Nachricht an den Benutzer.
Beispiel:
Input Root Output
5 -> 2.23 606797749979 -> 2
41 -> 6.40312423 743284 -> 8 (Largest gap under 100)
596 -> 24.4131112314 674 -> 10 (Largest gap under 1000)
59752 -> 244.44222221212112029 -> 16 (Largest gap under 100000)
Mach was du willst auf perfekten Quadraten.
Dies ist Code-Golf, also gewinnt der kürzeste Code.
Für alle Interessierten ist die Zahl 310.617 die größte unter 1.000.000 und hat 18, bevor Sie eine Ziffer erreichen >= 5
.
Antworten:
CJam, 17 Bytes
Probieren Sie es online aus.
quelle
Pyth, 13 Bytes
Testsuite
Beginnen Sie mit
Q
gleich der Eingabe. Bei jedem ZeitschrittQ
mit 100 multiplizieren , berechnet alschr('d')
. Nimm seine Quadratwurzel. Nimm diesen Mod 10. Wenn das Ergebnis größer als ist5
, beende. Drucken Sie die Anzahl der Iterationen, die zum Beenden erforderlich waren, mit einem Index von 0.Im Detail:
quelle
CJam,
292628 BytesProbieren Sie es online aus.
Setzt ein "?" Wenn die Zahl nicht erscheint, kann sie aufgerundet werden (perfektes Quadrat oder zu lang).
quelle
Pyth, 22 Bytes
Erläuterung
Ich bin absolut sicher, dass dies Golf gespielt werden kann. Wenn die Eingabe keine höhere Ziffer als 4 hat, wird -1 ausgegeben. Unterstützt 17dp.
quelle
Javascript, 59 Bytes
Gibt
?
für 59752 zurück, da JavaScript nur doppelte Genauigkeit verwendet.quelle
Linux-Shell, 52 Bytes
Ich habe versucht, eine reine
dc
Lösung zu finden, bin aber gescheitert. Die Präzision ist einstellbar (erste Nummer).Da das OP freundlicherweise festlegt, dass "Sie auf perfekten Quadraten tun können, was Sie wollen", gibt diese Lösung in diesem Fall die Genauigkeit + 1 aus, in diesem Fall 35.
quelle
Mathematica 60 Bytes
Beispiel
quelle
Apply
.Ruby, 46 Bytes
Dies ist möglicherweise nicht gültig, da es nur 16 Stellen passt.
quelle
nil
, da sich in der gesamten Zeichenfolge keine Ziffer nach 4 befindet. Dies kann von der Ruby-Version abhängen.