In dieser Frage konzentrieren wir uns nur auf das Abnehmen durch Bewegung, obwohl es noch viele Möglichkeiten gibt, Gewicht zu verlieren.
Verschiedene Sportarten verbrauchen unterschiedliche Mengen an Kalorien.
Wenn Sie beispielsweise eine Stunde lang Billard spielen, können 102 Kalorien [1] verbraucht werden , während beim 15-minütigen Spielen von Basketball bereits 119 Kalorien [1] verbraucht werden , was den Gewichtsverlust durch das Spielen von Basketball zumindest aus bestimmten Perspektiven erleichtert.
Die genaue Methode zum Abwägen der Leichtigkeit besteht darin, die Menge der verbrauchten Kalorien durch die benötigte Zeit zu dividieren. Dies ergibt den Leichtigkeitsindex (EI).
Zum Beispiel kann das Fechten für 15 Minuten 85 Kalorien verbrennen, was einen EI von 85/15 ergibt.
Sie erhalten eine Liste in diesem Format:
[["fencing",15,85],["billiards",60,102],["basketball",15,119]]
oder ein anderes Format, das Sie möchten.
Anschließend geben Sie die Sportarten mit dem höchsten EI aus.
TL; DR
Bei einer Liste von Tupeln [name,value1,value2]
Ausgabe der , name
wo value2/value1
die höchsten ist.
Einschränkungen
- Sie dürfen dabei keine reelle Zahl erzeugen, die keine ganze Zahl ist.
- Sie können nicht jede Fraktion Einbau-verwenden.
Spezifikationen (Specs)
- Wenn es mehr als einen Namen gibt, der das Ergebnis erfüllt, können Sie eine beliebige nicht leere Teilmenge oder ein beliebiges Element davon ausgeben.
- Der Name stimmt mit dem regulären Ausdruck überein
/^[a-z]+$/
, was bedeutet, dass er nur aus lateinischem Standard-Kleinbuchstaben besteht. - Die Liste wird nicht leer sein.
Testfall
Eingang:
[["fencing",15,85],["billiards",60,102],["basketball",15,119]]
Ausgabe:
basketball
Verweise
quelle
Antworten:
Python 2, 51 Bytes
Ist die offensichtliche Sache, den Eintrag mit dem größten Verhältnis zu finden, umgeht aber das Verbot von Floaten, indem zuerst der Zähler mit einer riesigen eingabeabhängigen Potenz von 10 multipliziert wird, bevor die Unterteilung erfolgt.
Ich werde beweisen, dass dieser Koeffizient groß genug ist, damit die Bodenteilung den gleichen Unterschied macht wie die Nicht-Bodenteilung.
Behauptung: Wenn a 1 / b 1 > a 2 / b 2 , dann Boden (Na 1 / b 1 )> Boden (Na 2 / b 2 ) für ein beliebiges N≥b 1 b 2 .
Beweis: Beachten Sie, dass a 1 / b 1 - a 2 / b 2 ein Vielfaches von 1 / b 1 b 2 ist , also impliziert a 1 / b 1 - a 2 / b 2 > 0 dies
Dann multiplizieren beide Seiten mit N,
Da sich Na 1 / b 1 und Na 2 / b 2 also um mindestens 1 unterscheiden, sind ihre jeweiligen Böden unterschiedlich. ∎
Beachten Sie nun, dass das Produkt b 1 b 2 höchstens die gesamte Ziffernlänge hat, die kleiner als die Zeichenfolgenlänge der Eingabe ist. Da sich die Eingabe in der Basis 10 befindet, ist es ausreichend, 10 hoch genug zu setzen
N=10**len(`l`)
, um eine Zahl mit mehr Stellen als der angegebenen zu erzeugen, um die Bedingung zu gewährleisten.quelle
9
könnte zB funktionieren anstatt10
?[('y', 10**296+1, 1), ('x', 10**296, 1)]
.JavaScript (ES6), 43 Byte
Oder alternativ
Sortieren ist natürlich übertrieben,
reduce
würde aber 46 Bytes dauern:quelle
MATL , 8 Bytes
Alle berechneten Zahlen sind ganzzahlige Werte. Zuerst wird das Produkt der Nenner berechnet (dies ist eine ganze Zahl). Dieses Produkt wird durch jeden Nenner geteilt (was auch eine ganze Zahl ergibt). Jedes Ergebnis wird dann mit dem entsprechenden Zähler multipliziert. Dies ergibt einen ganzzahligen Wert proportional zum ursprünglichen Bruch.
Das Eingabeformat ist: numerisches Array mit Nennern, numerisches Array mit Zählern, Zellenarray von Zeichenfolgen mit Sportnamen:
Bei mehreren Minimierern wird der erste ausgegeben.
Probieren Sie es online!
quelle
Dyalog APL , 18 Bytes
Fordert nach Zeiten, dann nach Kalorien und dann nach Aktivitätsnamen auf.
⎕
prompt (für Zeiten)(∧/÷⊢)
LCM∧/
der Zeit geteilt durch÷
die Zeit⊢
(also keine Flöße)⎕×
prompt (für Kalorien) und mit ihnen multiplizieren(⊢⍳⌈/)
dadurch⊢
erhalten die Position⍳
des Maximalwerts⌈/
⎕⊃⍨
Eingabeaufforderung (für Aktivitäten), und wählen Sie dann die n ten .Beispiellauf:
quelle
Brachylog , 42 Bytes
Probieren Sie es online!
/
oben ist die Ganzzahldivision, weil beideJ*D
undI
ganze Zahlen sind (D
ist ein Vielfaches vonI
tatsächlich).Erläuterung
Hauptprädikat:
Input = [["string":mins:cals]:...]
Prädikat 1:
quelle
Retina ,
6462 BytesDie Anzahl der Bytes setzt die Kodierung nach ISO 8859-1 voraus.
Die Eingabe ist eine Sportart pro Zeile mit dem Format
value1 value2 name
. Die Ausgabe ist eines der maximalen Ergebnisse (wenn es einen Gleichstand gibt, gibt es den mit dem größtenvalue1
und wenn diese gleich sind, gibt es den lexikografisch größerenname
).Beachten Sie, dass dies Super langsam (für die genauen gleichen Gründen wie Stack - Exchange - Ausfall von gestern ). Damit es in angemessener Zeit ausgeführt wird, können Sie ein
\b
vor dem hinzufügen(0+)
(was sich nicht auf die Art und Weise auswirkt, in der es die Eingabe verarbeitet, aber das Zurückverfolgen dieses regulären Ausdrucks stark einschränkt). Ich habe das im Testlink unten gemacht.Probieren Sie es online!
quelle
Python 2,
5554 BytesVielen Dank an @xnor für das Golfen ab 1 Byte!
Teste es auf Ideone .
quelle
sorted
eine Komparatorfunktion mit zwei Eingängen verwendet werden kann. Ich wollte das zusammen hacken.lambda(a,b,c),(d,e,f):b*f-c*e
.Haskell
7270 BytesVerwendung :
quelle
Mathematica, 46 Bytes
Die Reihenfolge der Tupel sollte sein
{value1,value2,name}
. Gibt den vollständigen Satz aller maximalen Ergebnisse zurück.Ich arbeite um die Verwendung von Brüchen herum, indem ich den Zähler
value1
vor der Division mit dem LCM aller s multipliziere .quelle
R,
42 -40 BytesNimmt Eingaben in Form eines Datenrahmens mit den Spaltentypen String (funktioniert auch mit Faktoren), numerisch und numerisch vor.
%/%
ist eine Ganzzahldivision.Dies ist meine erste Einreichung, lass es mich wissen, wenn es innerhalb der Regeln ist.
Bearbeiten: Es stellt sich heraus, dass Sie keine geschweiften Klammern benötigen, um eine einzeilige Funktion zu definieren.
quelle
C ++ 14, 89 Bytes
Lambda-Funktion:
Ungolfed:
Verwendung:
quelle
Haskell, 46 Bytes
BEARBEITEN: Diese Lösung funktioniert nicht, wie von Damien hervorgehoben, dies löst das Problem nicht. Ich suche eine nette Lösung.
quelle
s(_,(x,y))=divMod y x
ist kürzers(n,(x,y))=(divMod y x,n)
g=snd.maximum.map s
Auch ..divMod a b < divMod c d
es nicht gleichwertig ista/b < c/d
.divMod 19 4 < divMod 55 12
aber19/4 > 55/12
VBA Excel, 109 Bytes
Rufen Sie in der Tabellenzelle eine Tabelle mit Aktivitäten und Parametern auf:
quelle
05AB1E ,
67 Bytes+1 Byte, um meinen divmod-Ansatz zu verbessern ( siehe diesen Kommentar zu einer anderen Antwort ), indem die MATL - Antwort von @LuisMendo portiert wird also sicher, dass Sie ihn unterstützen!
Die Eingabe ist ähnlich wie bei seiner Antwort: Drei getrennte Listen, wobei es sich um eine ganzzahlige Liste von Nennern handelt. eine ganzzahlige Liste von Nominatoren; und eine String-Liste von Namen.
Probieren Sie es online aus oder überprüfen Sie einige weitere Testfälle .
Erläuterung:
quelle
Java 8, 128 Bytes
quelle
Ruby, 72 Bytes
Ich dachte wirklich, das wäre kürzer ...
Die Eingabe erfolgt von STDIN im Format von
name time calories
Na ja, jede Hilfe, um es zu verkürzen, wird geschätzt.
quelle
Clojure, 63 Bytes
quelle
PHP , 98 Bytes
Verwendete ein einfacheres Eingabeformat als das folgende Beispiel:
Fechten, 15,85, Billard, 60,102, Basketball, 15,119
Probieren Sie es online!
quelle