Wer liebt nicht den pythagoreischen Satz a² + b² = c²? Schreiben Sie die kürzeste Methode, die Sie in einer Sprache verwenden können, die die Werte a und b berücksichtigt und "Die Hypotenuse dieses rechtwinkligen Dreiecks ist" + c ausgibt. Behalten Sie c nur drei Dezimalstellen bei.
14
code-golf
Tag sagt ausdrücklich: "Code-Golf ist ein Wettbewerb, um ein bestimmtes Problem in den wenigsten Bytes des Quellcodes zu lösen ." Siehe Scoring Code Golf (Bytes vs. Zeichen) .Antworten:
APL (54)
Prüfung:
Erläuterung:
⎕*2
: Erhöhen Sie die Werte im Eingang auf die zweite Potenz+/
: nimm die Summe.5*⍨
: Erhöhen Sie das Ergebnis auf die 0,5-ste Potenz3⍕
: auf 3 Dezimalstellen rundenquelle
TI-BASIC,
76555352 BytesNein, schließende Klammern sind nicht erforderlich. Auch weniger Bytes als diese APL-Antwort :)
quelle
R▶Pr(A,B
.Fix 3:R►Pr(X,Y
Input
fragenX
undY
ist eine Art urkomisch. Wenn wir das zulassen, sollten wir dann auchPolarGC
vorher zulassenInput
, dass die Länge der Hypotenuse durch das Ein-Byte gegeben istR
? Zwar werdenPolarGC
die Werte vonX
undY
nicht mehr angezeigt, wenn wir den Cursor bewegen, sie werden jedoch weiterhin in den entsprechenden Variablen gespeichert . (Was wir dann nie verwenden würden, aber es ist der Gedanke, der zählt.)Python 2.7 - 76 Zeichen
Erläuterung
| a + ib | = √ (a 2 + b 2 ) = c
==> a 2 + b 2 = c 2
PJ auf Hypotenuse
quelle
Sclipting , 46 Zeichen
Erwartet die Eingabe als zwei durch ein Leerzeichen getrennte Zahlen (können Brüche sein!).
Dies ist kürzer als APL, obwohl Sie einige unbequeme Tricks anwenden müssen.
Erläuterung
quelle
dc 54
Tangenten die Punktzahl der APL-Antwort!
Prüfung:
quelle
dc -e '2^r2^+3kv[The hypotenuse of this right triangle is ]Pp'
wartet nicht auf Eingaben, druckt"dc: stack empty"
dreimal und dann "Die Hypotenuse dieses rechtwinkligen Dreiecks ist 2.000".dc -e '3 4 2^r2^+3kv[...
dort 3 und 4 die Parameter.C 77 oder 99
77 Zeichen, wenn die Eingabe nur die Funktionsargumente sein kann:
99 wenn die Eingabe von stdin gelesen werden muss:
Ein großes Dankeschön an @Yimin Rong!
quelle
Power Shell
Nur um zu sehen, ob ich könnte ...
quelle
Read-Host
.Rubin,
949082 ZeichenUpdate (danke für die Kommentare):
quelle
a**0.5
statt langwierig verwendenMath.sqrt(a)
. Und der Raum danachp
kann auch entfernt werden.%(Math...)
.MATLAB
7974quelle
Python 2.7 - 80 Zeichen
quelle
C ++ - 90
quelle
pow(a,2)
wenn Sie tun könnena*a
? Ich bin mir auch nicht sicher, ob ich den Zweck des Floors und des +.5 sowie das Multiplizieren und Dividieren durch 1000 verstehePerl 6 (
6874 Bytes){}
deklariert eine Lambda-Funktion.[+]
sum Operator ist,X**
ist Kreuzleistungs Operator (beispielsweise1, 2 X+ 10, 20
gibt11, 21, 12, 22
). In diesem Fall verwendet der Cross-Power-Operator ein Argument, sodass das Ergebnis dieselbe Länge wie hat@_
.@_
enthält alle Funktionsargumente.Wenn es nicht erlaubt ist Funktion zu haben , die falsche Anzahl von Argumenten (unsicher) nehmen kann, ist es möglich , zu ersetzen ,
[+] @_ X**2
mit$^a**2+$^b**2
, wo$^a
und$^b
sind Platzhalter Argumente.quelle
Javascript (97)
quelle
C, 100 Zeichen (schlägt die andere C-Lösung um 1!)
Ein lächerlich ineffizienter Algorithmus.
quelle
DELPHI / PASCAL
Mit Einzug (157)
quelle
integer
aufint16
Sie müssen nicht die ersten 2 Linien für die Antwort enthalten, und Sie Leerzeichen entfernen können. Wenn Sie das alles tun, haben Sie 106 Zeichen.EcmaScript 6,
8279Verwendung:
Update: Wechseln Sie zu
Math.hypot()
quelle
Golfscript (
69 67 6665)Dies wäre viel einfacher, wenn Floating Point tatsächlich unterstützt würde, ohne auf Problemumgehungen zurückzugreifen ... :)
Ein Link zum Testen .
quelle
2.!~
wann2-1
ist kürzerthe difference between
2- 1` und2-1
falsch, war also wohl vorübergehend verwirrt :) Behoben, danke.Python 2 (79)
quelle
math
auf einige Einsparungen.(a*a+b*b)**.5
def
Speichern einer neuen Zeile und eines Einzugs.AWK -
8478 ZeichenVielen Dank an Wasi, der den Operator ^ vorgeschlagen und () entfernt hat!
z.B
quelle
{printf"The hypotenuse of this right triangle is %.3f\n",($1^2+$2^2)^.5}
PowerShell: 111
Golf Code
Komplettlösung
1..2|%{sv $_ (read-host)};
Ruft zwei Eingaben interaktiv vom Benutzer ab und speichert sie in $ 1 und $ 2. Könnte in der Lage sein, durch die Verwendung von Argumenten oder Pipeline-Eingaben einiges an Länge zu sparen."The hypotenuse of this right triangle is
Erforderlicher Text in der Ausgabe gemäß den Herausforderungsspezifikationen.$(
...)"
Eingekapselter Codeblock wird als Skript verarbeitet, bevor er in die Ausgabe einbezogen wird."{0:N3}"-f
Formatiert die Ausgabe des nächsten Codebits als Zahl mit genau drei Nachkommastellen.[math]::sqrt(
...)
Ermittelt die Quadratwurzel des eingekapselten Wertes.$1/1*$1+$2/1*$2
Dient als unser "a ^ 2 + b ^ 2". Das Multiplizieren einer Zahl mit sich selbst ist der kürzeste Weg, um sie in PowerShell zu quadrieren. Die Variablen müssen jedoch zuerst durch 1 geteilt werden, um sie zu Ganzzahlen zu zwingen. Andernfalls werden sie als Text behandelt und 3 * 3 + 4 * 4 wäre 3334444 anstelle von 25.quelle
JavaScript: 83
Derzeit kürzeste JS-Implementierung mit
stdin
: DFunktioniert nur unter Firefox 27.0+ (EcmaScript 6)
JavaScript: 78
Wenn wir nur zwei Variablen verwenden können (wie es viele Skripte hier tun):
quelle
dc, 55
quelle
Java, 112
(Gibt auch den Fehler "Keine solche Methode" aus, obwohl ich nicht sicher bin, ob dies gegen die Regeln verstößt.)
Java, 149
(Kein Fehler)
quelle
C #
Nur Methode (114)
Gesamtes Programm (171)
Vollständiges Programm (ohne Methode - 141)
quelle
JavaScript
11810693Im Gegensatz zu @ michas Lösung nimmt mine zwei Variablen per Funktion auf und sendet den Alert des Ergebnisses.
function(a,b){m=Math;c=d=>d*d,e=1e3;alert("The hypotenuse of this right triangle is "+m.round(m.sqrt(c(a)+c(b))*e)/e)}
function(a,b){e=1e3;alert("The hypotenuse of this right triangle is "+Math.round(Math.sqrt(a*a+b*b)*e)/e)}
Fettpfeil dient zur Rettung!
h=(a,b,e=1e3)=>"The hypotenuse of this right triangle is "+Math.round(Math.sqrt(a*a+b*b)*e)/e
quelle
c()
. Durch Aliasing werdenMath
in Ihrem Fall keine Bytes gespeichert .c64 basic v2,
6066 bytesBildschirmfoto:
Wie man es probiert.
quelle
R
6176 Bytescat
zeigt seinen Inhalt STDOUT an.Die
scan()
Funktion nimmt Benutzereingaben von der Tastatur entgegen. Diese Eingabe existiert als ein Vektor, auf den^2
angewendet wird (^
Funktion wird vektorisiert) und dersum()
die Elemente des Vektors summiert.sqrt
gibt die Quadratwurzel aus, die durch auf 3 Dezimalstellen gerundet wirdround(,3)
Vielen Dank an @caird coinheringaahing für das Bemerken, dass die vorherige Antwort nicht rund war.
quelle
ARBLE , 73 Bytes
Probieren Sie es online!
quelle
sqrt(a^2+b^2)
, hat dies eine Menge unnötiger Boilerplate.OML , 57 Bytes
Probieren Sie es online!
Teil 1
Dies gibt einfach den String aus
Teil 2
quelle
Gelee , 32 Zeichen
Probieren Sie es online!
Es gibt wahrscheinlich eine bessere Komprimierung für Zeichenfolgen, die es mir ermöglicht, herumzukommen und mich mit Leerzeichen zu verbinden, aber ich hatte Probleme, sie zu finden.
Erläuterung:
quelle
only three decimal places
heißtless than or equal to three decimal places
, sieht die Ausgabe gut aus.