Loi sur l'équilibre
Vue d'ensemble
Étant donné une entrée de 3 entiers positifs à un chiffre représentant un ensemble de poids, sortez une représentation ASCII d'une balançoire avec les poids placés dessus afin qu'elle soit en équilibre autour d'un pivot central, en tenant compte des effets de levier.
Chaque nombre a un poids égal à sa valeur. Le couple de chaque nombre est le poids multiplié par la distance au centre en caractères. Pour que la bascule soit en équilibre, le couple total des poids à gauche de la bascule doit être égal à celui de ceux de droite, comme ceci .
Contribution
3 entiers compris entre 1 et 9. Vous pouvez saisir les nombres entiers, mais cela est pratique, par exemple un tuple, 3 valeurs séparées par des virgules, etc. Cependant, votre programme doit être capable de gérer les nombres entrés dans n'importe quel ordre (c'est-à-dire sans supposer que les valeurs seront triées). Des numéros en double peuvent être saisis (par exemple 2,3,2).
Les entrées permettront toujours mathématiquement une sortie valide, sinon l'entrée n'est pas valide.
Sortie
La sortie doit être une représentation ASCII à 2 lignes de la bascule avec les poids placés dessus. Sur la première ligne, les chiffres sont espacés pour les équilibrer sur la bascule.
Les nombres ne peuvent pas être placés au centre même de l'échelle, où la distance et donc le couple seraient nuls. Les distances valides du centre vont de 1 à 10 caractères inclus à gauche ou à droite du pivot.
Dans les espaces non occupés par les chiffres, il y a 18 caractères de soulignement (un trait de soulignement central et 10 de chaque côté, moins les 3 positions occupées par les chiffres). Sur la dernière ligne est un caractère caret unique aligné avec le centre de l'échelle, représentant le pivot.
Exemples
Contribution:
4,7,2
Sortie:
________7___42_______
^
7 * 2 = 4 * 2 + 2 * 3
Les numéros peuvent être sortis de chaque côté, par exemple, cela serait également valide:
_______24___7________
^
2 * 3 + 4 * 2 = 7 * 2
Les nombres peuvent être placés n'importe où sur l'échelle tant qu'ils s'équilibrent, par exemple:
Contribution:
3,1,5
Sortie:
_____5________1__3___
^
5 * 5 = 1 * 4 + 3 * 7
ou
____5________1_____3_
^
5 * 6 = 1 * 3 + 3 * 9
ou
____5___________1_3__
^
5 * 6 = 1 * 6 + 3 * 8
etc
Votre programme n'a qu'à sortir l'une des sorties valides. Il n'a pas à générer d'erreur si l'entrée n'est pas valide.
Remarques
- Ceci est du code-golf donc le programme le plus court en octets gagne
- Le programme peut être autonome ou une fonction qui accepte les nombres en entrée et renvoie une chaîne.
- La nouvelle ligne et les espaces blancs à la dernière ligne sont facultatifs
- Si vous ne savez pas ce qu'est une balançoire , elle est également connue sous le nom de bascule ou de bascule.
Réponses:
CJam,
403938 octetsEssayez-le en ligne.
Comment ça marche
la source
CJam,
4644 octetsTestez-le ici.
Explication
Tout d'abord, une observation: nous n'avons jamais besoin de mettre deux chiffres aux extrémités de la bascule. Chaque fois que c'est une solution valide, il y a au moins une autre solution valide (selon le pastebin dans le commentaire sur le défi).
la source
Java,
519414321 octetsMa première tentative de golf.
Vous pouvez l'appeler avec
f(a,b,c)
. Essayez-le iciEDIT: méthode de vérification izlin utilisée
(a*i+b*j+c*k)==0
EDIT: Merci, J Atkin pour les suggestions de golf.
la source
p
àObject a
et de l' utiliser à la place des autres 2System.out.print(ln)
s.a
n'est utilisé qu'une seule fois, vous pouvez l'intégrer.Pyth,
67585349 octetsCela semble un peu énorme pour Pyth, mais je ne suis pas assez familier avec le langage pour pouvoir le réduire beaucoup plus.Sous 50 octets, j'en suis enfin satisfait!L'entrée est attendue comme un tableau d'entiers, par exemple
[1,2,3]
. Essayez-le ici.Explication:
Et enfin, quelques exemples d'entrées et sorties:
la source
C -
237228 octetsVous pouvez l'appeler avec
f(a,b,c)
.Essayez-le ici .
Exemple de sorties:
la source
Python 2.7
235226219 octetsLe tester avec quelques exemples de base -
(1,1,1),(1,2,1),(3,1,5),(4,7,2)
résultats dans:Sorties pour toutes les entrées possibles collées ici
la source
"".join(l) -> 'l'[2::5]
est un octet plus court (remplacez les guillemets par des guillemets).repr
. :)PHP, 278 octets
Une solution de force brute qui utilise un tas de boucles imbriquées et quelques tests.
Comme toujours, mettez-le dans un fichier (nommons-le
seesaw.php
), joignez les lignes (fractionnées ici pour plus de lisibilité), mettez le marqueur PHP (<?php
) au début du fichier (techniquement, il ne fait pas partie du programme) et vous ' re bon d'aller.Un exemple d'exécution:
Il génère et affiche toutes les solutions (sans réflexions), mais il ne supprime pas les doublons (lorsque les valeurs d'entrée contiennent des doublons).
la source
Julia, 154 octets
Ungolfed + explication:
la source
C, 252 (214) octets
Appelez avec a, b, c comme arguments sur la ligne de commande.
Si main peut être omis, le nombre d'octets tombe à 214 pour une fonction.
Les deux utilisent la même stratégie en plaçant le premier poids sur la gauche, puis en balayant le long des secondes positions de poids possibles et en calculant le troisième poids. Cela permet la suppression d'une boucle intérieure.
la source