Eine übliche visuelle Erklärung des Satzes von Pythagoras ist:
Die Quadrate sollen das Quadrat der Seitenlänge darstellen und die Flächen von a + b = c
, genau wie der Satz von Pythagoras sagt.
Dieser Teil ist das, was Sie zeigen müssen.
Deine Aufgabe
- Sie erhalten zwei Ganzzahlen als Eingabe, die Seiten
a
undb
ein rechtwinkliges Dreieck darstellen sollen (z.3, 4
). - Sie werden dann Quadrate machen aus den Längen
a
,b
undc
aus dem#
Charakter. Zum Beispiel ist hier 3:
###
###
###
- Anschließend formatieren Sie diese in eine mathematische Gleichung, die das jeweilige pythagoreische Triplett erklärt:
#####
#### #####
### #### #####
### #### #####
### + #### = #####
- Beachten Sie, wie die
=
und+
Zeichen haben Räume auf beiden Seiten und wie alles ist auf der Unterseite. - Sie erhalten nie Werte für
a
undb
die machenc
nicht ganzzahlig. - Das ist Code-Golf, also gewinnt der kürzeste Code in Bytes !
Testfälle
(Weitere kommen, sobald ich Zeit habe, diese sind wirklich schwer von Hand zu machen)
3, 4
#####
#### #####
### #### #####
### #### #####
### + #### = #####
6, 8
##########
##########
######## ##########
######## ##########
###### ######## ##########
###### ######## ##########
###### ######## ##########
###### ######## ##########
###### ######## ##########
###### + ######## = ##########
4, 3
#####
#### #####
#### ### #####
#### ### #####
#### + ### = #####
5, 12
#############
############ #############
############ #############
############ #############
############ #############
############ #############
############ #############
############ #############
##### ############ #############
##### ############ #############
##### ############ #############
##### ############ #############
##### + ############ = #############
a+b=c
a
, sind die Beispiele falsch.b
c
Antworten:
Pyth,
35323130 BytesProbieren Sie es online aus.
quelle
.i
die Leerzeilen hinzufügen:j_.ts.i.imm*d\#d+Qs.aQ"+="mk4d
CJam, 49 Bytes
Probieren Sie es online im CJam-Interpreter aus .
Wie es funktioniert
quelle
Python 2,
134100 BytesProbieren Sie es online aus.
Das Programm nimmt Eingaben als durch Kommas getrennte Ganzzahlen entgegen, berechnet die Hypotenuse mit den in Python integrierten komplexen Zahlen und geht dann von diesem Wert aus, wobei jede Zeile berechnet und gedruckt wird. Der wichtigste Trick beim Golfen ist die Verwendung der String-Indizierung anstelle der zu wählenden Bedingungen
#
/+
/=
vs Raum.Bearbeiten: Die erste Version war ein Opfer von schwerwiegenden Überentwicklungen - diese ist sowohl einfacher als auch viel kürzer.
quelle
"# "[i>a]*a
anstatt es für jede Variable zu tun.Julia,
121114112 BytesUngolfed:
Problem behoben und 2 Bytes dank Glen O gespeichert.
quelle
JavaScript ES6,
155134140129 BytesIch habe das mit umgeschrieben
for
. Es wird noch viel golfen ...Wenn etwas nicht funktioniert, lass es mich wissen. Ich werde es morgen früh reparieren.
Auf Safari Nightly getestet
Ungolfed:
Erläuterung:
(Nicht aktualisiert) aber immer noch genau genug.
DEMO
ES5-Version Bei der Eingabe muss es sich um gültige Zahlenmengen handeln :
quelle
a
undb
die machenc
nicht-integral."(z<b?'#':' ')
->' #'[z<b|0]
Pyth,
5149 BytesErwartet Eingaben in das Formular
[3,4]
.Probieren Sie es hier aus
AQ
- weist Eingang zuG, H
Js.a,GH
- berechnet die Hypotenuse alsJ
Lj*b]*b\#;
- definierty(b)
als ein Quadrat der Größeb
(an anderer Stelle im Codeb
bedeutet Zeilenumbruch)j_MCm_.[d\ Jcj[yJb\=byHb\+byG))b
- Erstellt die Quadrate, Pads mit Leerzeichen und transponiertZwei Bytes dank Maltysen gespart.
quelle
.i
nterlace anstelle all dieser Listen profitieren kann .J
in einem Lambda liegt, das ausgewertet wird, nachdemJ
es zum ersten Mal benutzt wird.*]
kann ersetzt werden durchm
Ruby, 134
einfache Linie für Linie Annäherung.
Unten im Testprogramm, wobei das Symbol in @ geändert wurde, um Verwechslungen mit der Syntax
#{....}
("String-Interpolation") zu vermeiden, die zum Einfügen von Ausdrücken in einen String verwendet wird. Jede Eingabe sollte in einer anderen Zeile erfolgen.quelle
a*a+b*b
sollten zwei Bytes aus der Berechnung von gekürzt werdenc
.C 176 Bytes
C wird das nicht gewinnen, aber der Spaß ist es wert.
Schön gedruckt:
Mit gcc können wir den dritten Parameter an main übergeben (ein Array von Umgebungsvariablen), damit wir ihn für unseren Zweck nutzen können.
Das
wäre äquivalent zu
weil
scanf
gibt die Anzahl der erfolgreich durchsuchten Parameter zurück.quelle
PHP,
178170168 BytesEingabe ist GET Parameter
x
undy
. Leider kann ich diese sich wiederholenden Saiten nicht spielen.$i>0
mit$i
@echo
Ich bin nicht sicher, warum PHP nicht mag, also musste ich 1 Byte mit opfern@print
.Falls SE die Codierung vermasselt, soll dies in Windows-1252 (nicht UTF8) codiert werden.
quelle
echo
vsprint
. Siehe: stackoverflow.com/questions/7094118/…APL (Dyalog Extended) ,
3329 Byte SBCS-3 aufgrund meiner Erweiterungen von Dyalog APL.
Anonymes Präfix Lambda:
Probieren Sie es online!
{
...}
"dfn";⍵
ist das Argument (Seitenlängen)⍵*2
Platz+/
Summe√
Quadratwurzel⍵,
Argument voranstellen{
…}¨
Wenden Sie jeweils das folgende anonyme Lambda an#
Root-Namespace⍕
Format als Text⍵ ⍵⍴
Verwenden Sie das Argument zweimal, um eine Matrix mit diesen Dimensionen zu erstellen.⍪
in Spalte machen' ++=',
Stellen Sie diese drei Zeichen vor die drei Zeilen,
ravel (Zeilen in Liste zusammenfassen)⍕
Format als Text⊖
umdrehenquelle
CJam, 78 Bytes
Zuerst wird die Hypotenuse (H) berechnet, dann wird für jede Seite (S) ein Array von S-Linien erstellt, bestehend aus:
H-S
Leerzeichen +S
Bindestrichen. Schließlich wird die Matrix transponiert.Demo
quelle
Lua5.2,
257241227222 Bytesio
Funktionen von einer anderen Antwort inspiriertquelle
Kohle , 24 Bytes
Probieren Sie es online! Link ist eine ausführliche Version des Codes. Übernimmt die Eingabe als Array von zwei Elementen. Erläuterung:
Hängen Sie die Hypotenuse an die Eingaben an.
Bewegen Sie sich in umgekehrter Reihenfolge über die Zeichen, die rechts von jedem Quadrat angezeigt werden.
Drucken Sie dieses Zeichen mit Abstand nach links.
Füge die letzte Zahl aus dem Array ein und drucke ein Quadrat
#
dieser Größe.quelle
PowerShell ,
139137135 Byte-2 dank nur ASCII
-2 dank Mazzy
Probieren Sie es online!
Das Berechnen von $ c tut weh und es gibt wahrscheinlich eine bessere Möglichkeit, bedingt zwischen
#
und zu wechseln. Erstellt eine Liste von Blöcken, fügt sie zusammen und fügt die Zeichen unter bestimmten Bedingungen hinzu.
quelle
$m=(" ","#")
: Probieren Sie es online!Japt, 28 Bytes
Nimmt die Eingabe als Array von Ganzzahlen.
Versuch es
quelle
05AB1E , 38 Bytes
Nimmt die Eingabe als Liste mit zwei Zahlen (d. H
[3,4]
).Probieren Sie es online aus oder überprüfen Sie alle Testfälle .
Erläuterung:
quelle
DnOt©)˜ε'#×y.Dðy×®y-.D)R}ø»
war mein versuch bis mir das+
und aufgefallen ist=
.+
und=
sind in der Tat für den größten Teil des Codes verantwortlich. Btw, können Sie Golf 2 Bytes durch Ersetzen in Ihrem AnsatzDnOt©)˜
mitnOt©ª
, wie ich in meiner aktuellen Antwort tat. :) Ich mag deine Verwendung.D
aber.Perl 6 , 99 Bytes
Probieren Sie es online!
Anonymer Codeblock, der zwei Zahlen akzeptiert und die vollständige Zeichenfolge mit einer führenden neuen Zeile und drei führenden Leerzeichen sowie einem abschließenden Zeichen in jeder Zeile zurückgibt.
Wenn wir andere Zeichen anstelle von verwenden können
#
, dann kann ich ein Byte speichert durch Ersetzen'#'
mit\*
.quelle
C # (.NET Core) ,
221, 194 BytesDas fühlt sich viel zu lang an. Diese Version führt nur eine Schleife durch, um die Zeichenfolge zu erstellen.
EDIT: Ascii-Only mit einem schönen 27-Byte-Golf mit dem String-Konstruktor für serielle Zeichenadditionen! Außerdem habe ich, um darauf hinzuweisen, Math.Sqrt und nicht System.Math.Sqrt verwendet. Dies wurde angepasst!
Probieren Sie es online!
quelle
System.Math
nicht,Math
wenn Sie nicht interaktiv arbeiten