a, b, c
Sagen Sie anhand der Länge der drei Seiten eines Dreiecks, ob das Dreieck rechtwinklig ist (dh einen Winkel von 90 Grad hat) oder nicht.
Eingang
Drei positive ganzzahlige Werte in beliebiger Reihenfolge
Ausgabe
Entweder ein spezifischer wahrer Ausgang ( true
, 1
, yes
, ...) oder ein bestimmte falscher Ausgang ( false
, 0
, no
, ...)
Beispiel
5, 3, 4 --> yes
3, 5, 4 --> yes
12, 37, 35 --> yes
21, 38, 50 --> no
210, 308, 250 --> no
Regeln
- Die Ein- und Ausgabe kann in jedem beliebigen Format erfolgen .
- Bitte geben Sie in Ihrer Eingabe den wahren und den falschen Wert an.
- Es ist nicht erforderlich, negative Werte oder ungültige Flankentripel zu verarbeiten
- Es ist entweder ein vollständiges Programm oder eine Funktion zulässig. Bei einer Funktion können Sie die Ausgabe zurückgeben, anstatt sie zu drucken.
- Fügen Sie nach Möglichkeit einen Link zu einer Online-Testumgebung hinzu, damit andere Benutzer Ihren Code ausprobieren können!
- Standardlücken sind verboten.
- Dies ist Codegolf, daher gelten alle üblichen Golfregeln, und der kürzeste Code (in Byte) gewinnt.
code-golf
math
decision-problem
geometry
mdahmoune
quelle
quelle
21, 38, 5
, da 21 + 5 <38 . Ist dies ein vorsätzlicher pathologischer Fall, mit dem wir uns befassen müssen?Antworten:
Gelee , 5 Bytes
Probieren Sie es online!
Technischer Hinweis: Bytes werden in der Jelly-Codepage gezählt.
Erläuterung:
Das Problem ist gleichbedeutend damit, dass man drei Zahlen erhält
a, b, c
und fragt, ob es eine solche Permutation gibta² + b² = c²
. Dies ist gleichbedeutend damit, ob(a² + b² + c²) ÷ 2
es sich um eines vona², b² or c²
beiden handelt. Das Programm überprüft dies also nur.quelle
²
undµ
kosten jeweils zwei Bytes in UTF-8, also hat Ihr Code tatsächlich 7 Bytes, nicht 5Python 2 , 37 Bytes
Probieren Sie es online!
-2 dank FlipTack .
-1 danke an Craig Gidney .
Ausgabe über Exit-Code (
0
= false,1
= true).quelle
exec(code)
hmmm, warumexec (code)
stattexec code
? : D ;-pJava 8, 44 Bytes
Erläuterung:
Probieren Sie es hier aus.
quelle
(c*=c)
? Das*=
könnte Vorrang vor dem haben==
und Sie können zwei Bytes sparen.==
hat Vorrang vor*=
.=
,+=
,*=
, Und ähnliche Aufgaben haben tatsächlich die niedrigste Priorität in Java Operatoren .a
(zum Beispiel) den Maximalwert haben , ohne Erfolg. Nun, ich könnte es schaffen, aber ungefähr 65 Charaktere ...JavaScript (ES6),
434140 Byte1 Byte gespeichert und dank @Neil einen Fehler behoben
Nimmt die Eingabe als Array von 3 ganzen Zahlen. Rückgabe
true
für rechtwinklig undfalse
sonst.Code-Snippet anzeigen
Originalversion, 44 Bytes
Nimmt die Eingabe als 3 Ganzzahlen. Rückgabe
1
für rechtwinklig und0
sonst.Testfälle
Code-Snippet anzeigen
quelle
=>
und->
Unterschied zwischen JavaScript und Java 8). ;) Also offensichtlich +1 von mir.>>1
ist unsicher, dies ergibt true für[1, 1, 1]
.Math.hypot(...a,...a)==n*2
?~=
Operator für "rougly gleich" geben;)Python 3 , 37 Bytes
Probieren Sie es online!
Möglicherweise treten bei großen Eingaben Probleme mit der Float-Genauigkeit auf.
quelle
Dreieckig , 57 Bytes
Ich habe noch keine in dieser Sprache gesehen und es schien angebracht zu versuchen, eine zu machen. Es hat ein bisschen gedauert ... als ich mich zuerst darum kümmern musste und ich glaube, das könnte noch ein bisschen mehr golfen werden.
Probieren Sie es online!
Dies erweitert sich zu dem folgenden Dreieck.
Der Weg ist ziemlich verworren, aber ich werde versuchen zu erklären, was ich getan habe. Ich werde die Richtungszeiger überspringen. Der größte Teil des Codes ist Stapelmanipulation.
$:*
Quadrieren Sie die erste Eingabe.$:*
Quadrieren Sie die zweite Eingabe.S":Ug!
Prüfen Sie, ob der zweite Wert größer als der erste ist.p"
Tausche mit dem ersten.p
Nichts tun.$:*
Quadrieren Sie die dritte Eingabe.P":USg!
Prüfen Sie, ob der dritte Wert größer ist als der größte des vorherigen.p+U-
summiert den aktuellen Stack und nimmt den gespeicherten dritten Wert wegp"U+-
Summe die geringste und gespeicherte dritte und vom größten subtrahieren0=%
Testen Sie die Gleichheit auf Null und geben Sie das Ergebnis aus.quelle
Haskell (
333231 Bytes)Originalfassung:
Anonyme Funktion. Nimmt eine Liste in der Form [a, b, c]. Gibt True oder False aus.
Die erste Version prüfte, ob die Summe der Quadrate doppelt so groß war wie das Quadrat des Maximums.
Zweitens prüft eine etwas bessere Version, ob die Hälfte der Quadratsumme ein Element in der Liste der Quadrate ist.
Edit: Habe versehentlich einen Zeilenumbruch gezählt, danke H.PWiz
quelle
sum
weggeworfen werden. schöne lösung!Perl 6 , 24 Bytes
Probieren Sie es online!
*²+*²==*²
ist eine anonyme Funktion, die true zurückgibt, wenn die Summe der Quadrate der ersten beiden Argumente dem Quadrat des dritten Arguments entspricht. Wir übergeben die sortierte Eingabeliste an diese Funktion und glätten sie mit in die Argumentliste|
.quelle
R 31
2630BytesIch mag dieses nicht so sehr, aber es ist kürzer. Summiert die Quadrate und dividiert durch das größte Quadrat. Wahrheit wenn 2.
Vorherige Version (modifiziert mit cat und mit @ Guiseppes Tipp)
Machen Sie eine Summe der sortierten Eingaben mit dem zuletzt negierten Element und geben Sie das
!
nicht zurück.Probieren Sie es online!
quelle
!sort(scan())^2%*%c(1,1,-1)
es 27 Bytes. aber ich denke du brauchst noch einecat
.Brain-Flak , 68 Bytes
Probieren Sie es online!
Verwendet die Beobachtung in der Antwort von user202729.
quelle
C (gcc) , 49 Bytes
Probieren Sie es online!
Verbessert Kevin Cruijssens Technik
Gibt 0 für ein gültiges Dreieck und andernfalls einen Wert ungleich Null zurück
quelle
MATL , 7 Bytes
Probieren Sie es online!
Erläuterung
Betrachten Sie die Eingabe
[12, 37, 35]
.quelle
Python 2 , 43 Bytes
Probieren Sie es online!
Python 2 ,
79706862 BytesProbieren Sie es online!
quelle
A*A
ist kürzer ...-
stattdessen verwenden==
.C
6854 BytesVerwenden der Lösung von user202729 .
Vielen Dank an @Christoph fürs Golfen mit 14 Bytes!
Probieren Sie es online!
C 85 Bytes
Probieren Sie es online!
quelle
1
für Parameter, von1, 1, 1
denen falsch ist ...f(a,b,c){a=!((a*=a)+(b*=b)-(c*=c)&&a-b+c&&a-b-c);}
Japt , 8 Bytes
Übernimmt die Eingabe als Array.
Versuch es
quelle
J, 10 Bytes
-6 Bytes dank FrownyFrog
ursprüngliche Antwort
/:
Sortiere die Quadrate*:
und überprüfe dann, ob die Summe der ersten beiden+/@}:
gleich der letzten ist{:
Probieren Sie es online!
quelle
Dreieckigkeit ,
4931 BytesProbieren Sie es online!
Erläuterung
Jedes Triangularity-Programm muss eine dreieckige Polsterung haben (entschuldigen Sie das Wortspiel). Das heißt, die i- te Zeile, die vom Ende des Programms an gezählt wird, muss auf jeder Seite mit i-1 Punkten (
.
) aufgefüllt werden . Um die Punktdreiecke symmetrisch und ästhetisch ansprechend zu halten, muss jede Zeile aus 2L - 1 Zeichen bestehen, wobei L die Anzahl der Zeilen im Programm ist. Gehen Sie wie folgt vor, um die Zeichen zu entfernen, aus denen das erforderliche Auffüllen besteht:Überprüfung, ob ein Dreieck in der Dreiecksform rechtwinklig ist ...
quelle
PowerShell , 39 Byte
Probieren Sie es online!
Sortiert die Eingabe und speichert diese in
$a,$b,$c
Variablen. Verwendet dann den Satz von Pythagoras, um zu prüfen, oba*a + b*b = c*c
. Die Ausgabe ist entweder BooleanTrue
oderFalse
.quelle
JavaScript 34 Bytes (ohne D =)
quelle
a=>a.sort()[0]**2+a[1]**2==a[2]**2
in ES6. Also Requisiten an dich @DanielIndiesort()
Verwendet leider die lexikografische Reihenfolge, wenn kein Rückruf bereitgestellt wird, wodurch dieser Code beispielsweise für fehlschlägt[10,6,8]
.RProgN 2 , 10 Bytes
Erklärt
Probieren Sie es online!
quelle
Schläger ,
6460 BytesProbieren Sie es online!
Wie es funktioniert
Prüft , ob
a^2 + b^2 + c^2
gleich zweimal den größtena^2
,b^2
undc^2
.Gibt
#t
für rechtwinklige Dreiecke und#f
für alle anderen Eingaben zurück.expt
.quelle
(define fun
muss ein Teil des Codes sein ...(define fun ...)
on TIO dient nur der Bequemlichkeit: Wir könnten diese Funktion genauso gut verwenden wie die Funktion(... 3 4 5)
where...
is the function. (Also könnten wir einen Kopf-(print (
und einen Fußbereich von haben,3 4 5))
wenn Sie es vorziehen.)#lang racket
im Code enthalten, andere nicht.)(max a b c)
als einelet
Bindung zu machen, oder? Ich nehme nicht an, dass es kürzer wäre, als Argument an einλ
? Zu binden . Oder ist keine Potenzierung eingebaut?(*(expt(max a b c)2)2)
?05AB1E , 6 Bytes
Probieren Sie es online!
quelle
n{RÆ_
, um ein Byte zu speichern.Ruby, 31 Bytes
Nimmt die Eingabe als Liste mit 3 ganzen Zahlen. Verwendet einige Ideen aus anderen Lösungen.
quelle
Julia 0,6 , 16 Bytes
Probieren Sie es online!
Wie es funktioniert
Sei x = [a, b, c] .
x⋅x
ist das Skalarprodukt von x und sich selbst, also ergibt es a² + b² + c² .2x.*x
ist das elementweise Produkt von 2x und x , es ergibt sich also [2a², 2b², 2c²] .Schließlich wird geprüft,
∈
ob die ganze Zahl a² + b² + c² zum Vektor [2a², 2b², 2c²] gehört , was zutrifft, wenna² + b² + c² = 2a² oder a² + b² + c² = 2b² oder a² + b² + c² = 2c² Dies gilt für
b² + c² = a² oder a² + c² = b² oder a² + b² = c² .
quelle
Java (OpenJDK 8) , 68 Byte
Probieren Sie es online!
quelle
sort
braucht man ein Array.TI-Basic,
131110 BytesFunktioniert jetzt für Eingaben in beliebiger Reihenfolge und ist auch kürzer. Noch ein -1 dank @MishaLavrov
quelle
A=5
,B=4
,C=3
wäre nicht richtig behandelt werden.)
,max(Ans=R►Pr(min(Ans),median(Ans
gilt dies auch (obwohl die Berechnung hier anders ist) und ist ein Byte kürzer.CJam, 9
Probieren Sie es online aus
Erläuterung:
quelle
Pari / GP ,
2924 BytesProbieren Sie es online!
Fünf Bytes gespart durch eine offensichtliche Änderung von
norml2(v)
nachv*v~
.Inspiriert von anderen Antworten.
Hier
v
muss ein Zeilenvektoroder ein Spaltenvektormit drei Koordinaten sein.Anwendungsbeispiel:
f([3,4,5])
Natürlich bekommen Sie zum Beispiel rationale Seitenlängen gratis dazu
f([29/6, 10/3, 7/2])
.Wenn ich den
f(v)=
Teil nicht zähle , sind das 19 Bytes. Der erste Teil kann auch geschrieben werdenv->
(insgesamt 22 Bytes).Erläuterung: Wenn die drei Koordinaten
v
sindx
,y
undz
dann das Produktv
und seine transponierenv~
gibt einen Skalarx^2+y^2+^z^2
, und wir müssen prüfen , ob das zweimal gleich dem Quadrat des Maximums der Koordinaten istx
,y
,z
.Extra: Dieselben
f
Tests für ein pythagoreisches Quadruple, wenn Ihr Eingabevektor vier Koordinaten hat, und so weiter.quelle
tio.run
Link benutzen . Es ist jedoch viel angenehmer, PARI / GP nur lokal zu installieren .MS Excel, 49 Bytes
Anonyme Arbeitsblattfunktion, die Eingaben aus dem Bereich [A1: C1] entgegennimmt und an die aufrufende Zelle ausgibt.
quelle
Ohm v2 ,
86 BytesProbieren Sie es online!
quelle