Beschreibung
Sie erhalten die Ergebnisse einer Bereichsfunktion, bei der jedes Element auf die nächste ganze Zahl abgerundet wurde. Ihr Ziel ist es, die ursprüngliche Liste wiederherzustellen.
Die folgende Funktion (in Python3) erzeugt beispielsweise eine Eingabe für Ihr Programm:
from numpy import arange, floor
def floored_range(A, B, C):
return list(floor(arange(A, B, C)))
Die Ausgabe Ihres Programms sollte eine gültige Schätzung der Originaldaten sein. Eine gültige Vermutung bedeutet hier, dass sie genau mit der Eingabe im Boden übereinstimmen muss und eine mögliche Ausgabe einer Bereichsfunktion sein muss (dh, wenn sie grafisch dargestellt wird, muss sie eine perfekt gerade Linie bilden).
Beispiele
Input: [1,2,3,4]
Output: [1,2,3,4]
Input: [1,2,3,4]
Output: [1.9,2.7,3.5,4.3]
Input: [1,2,3,4,5,5]
Output: [1.9,2.7,3.5,4.3,5.1,5.9]
Input: [1,1,2,2,3,3,4,4]
Output: [1,1.5,2,2.5,3,3.5,4,4.5]
Input: [1,1,2,3,3,4]
Output: [1,1.7,2.4,3.1,3.8,4.5]
Input: [56, 54, 52, 50, 48, 45, 43, 41, 39, 37, 35, 32, 30, 28, 26, 24, 22, 19, 17, 15, 13, 11]
Output: [56.7 , 54.541, 52.382, 50.223, 48.064, 45.905, 43.746, 41.587,
39.428, 37.269, 35.11 , 32.951, 30.792, 28.633, 26.474, 24.315,
22.156, 19.997, 17.838, 15.679, 13.52 , 11.361]
A, B, C
können drei beliebige Floats sein. Der Eingangsbereich kann beispielsweise bei beginnen, bei56.7
enden10.2
und eine Schrittgröße von haben-2.159
. Das einzige, was zählt, ist, dass die Punkte, die Sie ausgeben, wenn sie auf dem Boden liegen, genau mit der Eingabe übereinstimmen. Ich habe ein Beispiel hinzugefügt, das das zeigt.Antworten:
Oktave , 82 Bytes
Die Laufzeit ist nicht deterministisch, aber der Code endet mit der Wahrscheinlichkeit 1 in endlicher Zeit.
Probieren Sie es online aus!
Erläuterung
Der Code definiert eine
function
vonx
daß Ausgängeny
. Die Funktion besteht aus einerwhile
Schleife.In jeder Iteration wird die richtige Menge (
numel(x)
) von linear beabstandeten Werten generiert (linspace
), beginnend beix(1)+rand
und endend beix(end)+rand
. Diese beiden Aufrufe derrand
Funktion ergeben zufällige Offsets zwischen0
und1
, die auf die Anfangs- und Endwerte von angewendet werdenx
.Die Schleife wird so lange wiederholt, wie sich
any
diefloor
Ergebnisse-
von dem entsprechenden Eintrag in unterscheidenx
.quelle
a!=b
anstelle vonany(a-b)
Python 3 , 189 Bytes
Probieren Sie es online aus!
Kubische Zeit.
Hat einige numerische Probleme.
quelle
R , 86 Bytes
Probieren Sie es online aus!
Bericht über die Antwort von Luis Mendo ; Es wird zwar eine Reihe von Warnungen
any
ausgegeben,logical
diese werden jedoch ignoriert.quelle
Python 3 , 168 Bytes
Probieren Sie es online aus! Erläuterung:
g
Berechnet die Grenzwerte dafürC
, die knapp außerhalb des Bereichs fürA
und liegen liegenB
. Der Durchschnitt wird dann genommen, um einen verwendbaren Wert für zu gebenC
, und dann wird der niedrigstmögliche Bereich erzeugt.quelle
Gelee , 31 Bytes
Probieren Sie es online aus!
Warnung : Gleitkomma-Ungenauigkeiten.
quelle
[1,2,3,4,5,5]
bei TIO nicht innerhalb von 30 Sekunden beendet . Eine Erklärung bitte?JavaScript (Node.js) , 94 Byte, unter der Annahme einer Eingabelänge> 1
Probieren Sie es online aus!
97 Bytes
quelle
[1]
.Python 2 , 212 Bytes
Probieren Sie es online aus!
quelle