Une explication visuelle commune du théorème de Pythagore est la suivante:
Les carrés sont censés représenter le carré de la longueur du côté et les zones de a + b = c
, comme le dit le théorème de Pythagore.
Cette partie est ce que vous devez montrer.
Ta tâche
- Vous obtiendrez deux entiers en entrée, censés représenter les côtés
a
etb
un triangle rectangle (ex.3, 4
). - Vous serez alors faire des carrés sur les longueurs
a
,b
etc
hors du#
caractère. Par exemple, voici 3:
###
###
###
- Vous les formaterez ensuite dans une équation mathématique expliquant le triplet de Pythagore:
#####
#### #####
### #### #####
### #### #####
### + #### = #####
- Notez que les signes
=
et+
ont des espaces des deux côtés et que tout est en bas. - Vous n'obtiendrez jamais de valeurs pour
a
etb
qui ne fontc
pas partie intégrante. - C'est le code-golf, donc le code le plus court en octets gagne!
Cas de test
(plus à venir une fois que j'ai le temps, ce sont vraiment difficiles à faire à la main)
3, 4
#####
#### #####
### #### #####
### #### #####
### + #### = #####
6, 8
##########
##########
######## ##########
######## ##########
###### ######## ##########
###### ######## ##########
###### ######## ##########
###### ######## ##########
###### ######## ##########
###### + ######## = ##########
4, 3
#####
#### #####
#### ### #####
#### ### #####
#### + ### = #####
5, 12
#############
############ #############
############ #############
############ #############
############ #############
############ #############
############ #############
############ #############
##### ############ #############
##### ############ #############
##### ############ #############
##### ############ #############
##### + ############ = #############
a+b=c
a
,b
etc
sont définis comme les zones des carrés, les exemples sont incorrects.Réponses:
Pyth,
35323130 octetsEssayez-le en ligne.
la source
.i
ajoutant les lignes vides à la place:j_.ts.i.imm*d\#d+Qs.aQ"+="mk4d
CJam, 49 octets
Essayez-le en ligne dans l' interprète CJam .
Comment ça marche
la source
Python 2,
134100 octetsEssayez-le en ligne.
Le programme prend les entrées sous forme d'entiers séparés par des virgules, calcule l'hypoténuse à l'aide des nombres complexes intégrés de Python, puis effectue une boucle à partir de cette valeur en calculant et en imprimant chaque ligne au fur et à mesure. L'astuce principale consiste à utiliser l'indexation des chaînes au lieu de conditions pour sélectionner
#
/+
/=
vs space.Edit: La première version a été victime d’une sérieuse sur-ingénierie - celle-ci est à la fois plus simple et beaucoup plus courte.
la source
"# "[i>a]*a
au lieu de le faire pour chaque variable.Julia,
121114112 octetsUngolfed:
Résolution du problème et sauvegarde de 2 octets grâce à Glen O.
la source
JavaScript ES6,
155134140129 octetsJ'ai réécrit ceci avec
for
. Beaucoup de golf encore ...Si quelque chose ne fonctionne pas, faites le moi savoir. Je vais le réparer dans la matinée.
Testé sur Safari Nightly
Ungolfed:
Explication:
(Non mis à jour) mais toujours assez précis.
DEMO
Version ES5 L' entrée doit être un ensemble valide de nombres :
la source
a
etb
qui ne fontc
pas partie intégrante."(z<b?'#':' ')
->' #'[z<b|0]
Pyth,
5149 octetsAttend une entrée dans le formulaire
[3,4]
.Essayez-le ici
AQ
- assigne une entrée àG, H
Js.a,GH
- calcule l'hypoténuse commeJ
Lj*b]*b\#;
- définity(b)
comme faisant un carré de tailleb
(ailleurs dans le code,b
signifie nouvelle ligne)j_MCm_.[d\ Jcj[yJb\=byHb\+byG))b
- Crée les carrés, les blocs avec des espaces et les transposeSauvé deux octets grâce à Maltysen.
la source
.i
nterlace au lieu de toutes ces listes.J
est à l'intérieur d'un lambda, qui est évalué après saJ
première utilisation.*]
peut être remplacé parm
Ruby, 134
approche simple ligne par ligne.
Ci-dessous, dans le programme de test, symbole remplacé par @ pour éviter toute confusion avec la syntaxe
#{....}
("interpolation de chaîne") utilisée pour insérer des expressions dans une chaîne. Chaque entrée doit être donnée sur une ligne différente.la source
a*a+b*b
devrait couper deux octets dans le calcul dec
.C, 176 octets
C ne va pas gagner cela, mais le plaisir en vaut la peine.
Joli imprimé:
gcc nous permet de passer le troisième paramètre à main (un tableau de variables d’environnement), nous en profitons donc pour l’utiliser à nos fins.
le
serait équivalent à
car
scanf
renvoie le nombre de paramètres analysés avec succès.la source
PHP,
178170168 octetsL'entrée est paramètres GET
x
ety
. Malheureusement, je n'arrive pas à jouer au golf avec ces cordes répétitives.$i>0
par$i
Vous ne savez pas pourquoi PHP n'aime pas
@echo
, j'ai donc dû sacrifier un octet avec@print
.Si SE codifie le codage, celui-ci est censé être codé sous Windows-1252 (pas UTF8).
la source
echo
vsprint
. see: stackoverflow.com/questions/7094118/…APL (Dyalog Extended) ,
33SBCS sur 29 octets-3 en raison de mes extensions de Dyalog APL.
Préfixe anonyme lambda:
Essayez-le en ligne!
{
…}
"Dfn";⍵
est l'argument (longueur des côtés)⍵*2
carré+/
somme√
racine carrée⍵,
pré-argument{
…}¨
Appliquer le lambda anonyme suivant à chaque#
espace de noms racine⍕
formater en texte⍵ ⍵⍴
utiliser l' argument deux fois pour r Eshape dans la matrice avec ces dimensions.⍪
faire en colonne' ++=',
ajouter ces trois caractères aux trois rangées,
ravel (combiner les lignes dans la liste)⍕
formater en texte⊖
retourner à l'enversla source
CJam, 78 octets
Il calcule d'abord l'hypoténuse (H), puis, pour chaque côté (S), il construit un tableau de S lignes composées de:
H-S
espaces +S
tirets. Enfin, il transpose la matrice.Démo
la source
Lua5.2,
257241227222 octetsio
fonctions inspirées par une autre réponsela source
Charbon de bois , 24 octets
Essayez-le en ligne! Le lien est vers la version verbeuse du code. Prend les entrées sous forme de tableau de deux éléments. Explication:
Ajoutez l'hypoténuse aux entrées.
Boucle sur les caractères qui apparaissent à la droite de chaque carré dans l'ordre inverse.
Imprimez ce caractère à gauche avec un espacement.
Pop le dernier nombre du tableau et imprimer un carré de
#
s de cette taille.la source
PowerShell ,
139137135 octets-2 grâce à ASCII uniquement
-2 grâce à Mazzy
Essayez-le en ligne!
Calculer $ c blesse et il existe probablement un meilleur moyen de permuter conditionnellement entre
#
et. Construit une liste de morceaux et les joint ensemble tout en ajoutant de manière conditionnelle les signes.
la source
$m=(" ","#")
: Essayez-le en ligne!Japt, 28 octets
Prend l'entrée comme un tableau d'entiers.
L'essayer
la source
05AB1E , 38 octets
Prend l'entrée sous forme de liste de deux nombres (c.
[3,4]
-à-d.).Essayez-le en ligne ou vérifiez tous les cas de test .
Explication:
la source
DnOt©)˜ε'#×y.Dðy×®y-.D)R}ø»
était ma tentative jusqu'à ce que j'ai remarqué le+
et=
.+
et=
sont en effet responsables de la plupart du code. Btw, vous pouvez jouer au golf 2 octets dans votre approche en remplaçantDnOt©)˜
parnOt©ª
, comme je l'ai fait dans ma réponse actuelle. :) J'aime votre utilisation de.D
, cependant.Perl 6 , 99 octets
Essayez-le en ligne!
Bloc de code anonyme qui prend deux nombres et renvoie la chaîne complète avec une nouvelle ligne et trois espaces et un dernier sur chaque ligne.
Si nous pouvons utiliser d'autres caractères au lieu de
#
, alors je peux sauvegarder un octet en le remplaçant'#'
par\*
.la source
C # (.NET Core) ,
221, 194 octetsCela semble beaucoup trop long. Cette version boucle juste pour construire la chaîne.
EDIT: Ascii-Only avec un beau golf de -27 octets en utilisant le constructeur de chaînes pour les ajouts de caractères en série! Aussi, ty pour souligner que j'utilisais Math.Sqrt pas System.Math.Sqrt. Cela a été ajusté!
Essayez-le en ligne!
la source
System.Math
pasMath
si vous n'êtes pas à l' aide interactive