Le défi
Étant donné deux chaînes, chacune d'une longueur allant jusqu'à 30, consistant en des caractères ASCII imprimables (codes ), mettez-les sur une échelle de balance dans le moins d'octets de code! Cela comprend les étapes suivantes:
- Calculer et comparer les poids des chaînes
- Choisissez l'échelle ASCII d'art correctement inclinée
- Placez les deux cordes sur la balance
Les chaînes peuvent être passées sous la forme d'un tableau, de deux arguments ou de toute autre méthode raisonnable.
Le poids d'une chaîne est défini comme la somme des poids des caractères de cette chaîne, où:
- Les espaces ont un poids de 0 (
)
- Les lettres minuscules ont un poids de 2 (
abcdefghijklmnopqrstuvwxyz
) - Les lettres majuscules ont un poids de 4 (
ABCDEFGHIJKLMNOPQRSTUVWXYZ
) - Tous les autres symboles ont un poids de 3 (
!"#$%&'()*+,-./0123456789:;<=>?@[\]^_`{|}~
)
Les écailles ressemblent à ceci:
. _ | _- * / \ | - * / \ _- * | / \ _- * | / \ / \ | * ------ * / \ | / \ | / \ | * ------ * | ______ | ______
_. / \ * -_ | / \ * - | / \ | * -_ / \ | * -_ * ------ * | / \ | / \ | / \ | / \ | * ------ * ______ | ______
. | ______ | ______ / \ | / \ / \ | / \ / \ | / \ / \ | / \ * ------ * | * ------ * | | ______ | ______
Si la première chaîne est plus lourde, utilisez le premier dessin comme base de votre sortie; si la deuxième chaîne est plus lourde, utilisez le deuxième dessin; si les cordes ont le même poids, utilisez la troisième. Les espaces de fin sont autorisés.
J'utiliserai un segment du troisième dessin comme base pour tous les exemples suivants.
La première chaîne doit être placée sur le plateau gauche et la deuxième chaîne sur le plateau droit.
Placez une chaîne sur un panoramique en plaçant ses caractères non-espace dans la zone 6x5 immédiatement au-dessus des tirets, comme indiqué par #
s ici (vous pouvez finir par écraser une partie de l'échelle de la balance - c'est très bien):
###### _ ###### ###### ###### / ###### \ * ------ *
Tous ces caractères doivent être «réglés», c'est-à-dire soit au-dessus d'un -
caractère ou d'un autre caractère de la chaîne:
FAUX MAUVAIS CORRECT ____ ____ ____ F /\ /\ /\ l \ / \ / \ / \ / hov \ / s \ / oating \ / eri ng \ / ettled \ * ------ * * ------ * * ------ *
De plus, la pile entière doit être aussi plate que possible, ce qui signifie que parmi les six colonnes de 1 largeur, la hauteur de la plus haute et la hauteur de la plus courte ne doivent pas différer de plus de 1:
FAUX MAUVAIS CORRECT CORRECT [le plus haut: 5] [le plus grand: 4] [le plus grand: 5] [le plus grand: 2] [le plus court: 0] [le plus court: 2] [le plus court: 4] [le plus court: 2] 5__5_ ____ 5_5__ ____ 45445 & / \ 445454 / \ 45445 $% & $ @ 445454 / \ / 45445 &% @% $ & 445454% & $ @% & / 45445 \ / & $ @ $ &% \ / 445454 \ / $ @ $% $$ \ * ------ * * ------ * * ------ * * ------ *
L'ordre / la disposition exacte des personnages n'a pas d'importance. Voici tous les arrangements valides pour la chaîne "Pesez vos mots!":
____ ____ ____ ____ / \ / \ / \ / \ ds! \ / owd oe \ u! Wd \ ourwor Wihuos yoiwgr eghioo / Weighy \ / egyrr! \ / Wrhd! S \ / rrsuwy \ * ------ * * ------ * * ------ * * ------ *
Cas de test
ENTRÉE: "CODE GOLF", "défis de codage" POIDS: 32, 32 EXEMPLE DE SORTIE: . | ______ | ______ / \ | / \ / \ | nge \ s / OO \ | challe / CFGLED \ | /codage\ * ------ * | * ------ * | | ______ | ______
ENTRÉE: "", "$" POIDS: 0, 3 EXEMPLE DE SORTIE: _. / \ * -_ | / \ * - | / \ | * -_ / \ | * -_ * ------ * | / \ | / \ | / \ | / $ \ | * ------ * ______ | ______
ENTRÉE: "VOUS SAVEZ CE QU'ILS DISENT!", "Il y a_ toujours_a_relevant_xkcd" POIDS: 75, 65 EXEMPLE DE SORTIE: . tr_a_s | _hekx_y | - * elcdta _- * | revanw _- * | / e's_al \ T / \ | * ------ * AUYOHY | A! HWYK | / OTSMEW \ | * ------ * | ______ | ______
+1
. Premièrement: si les espaces ne "pèsent" rien et ne sont pas inclus dans l'illustration, pourquoi les inclure? Il est juste inutile de les filtrer en premier. Deuxièmement: cela me semble être un défi "2 en 1" / caméléon - Défi 1: Déterminer quelle chaîne est "plus lourde", Défi 2: Générer de l'art ASCII.Réponses:
Charbon de bois , 110 octets
Essayez-le en ligne! Le lien est vers la version détaillée du code. Prend l'entrée comme un tableau de deux chaînes. Explication:
Supprimez les espaces des deux chaînes.
Supposons que l'équilibre des poids.
Boucle sur les deux cordes.
Soustrayez la différence courante du poids de la chaîne.
Imprimez la base de la balance.
Supposons que les deux casseroles soient à 3 du sol.
Si les poids ne s'équilibraient pas ...
... calculer la hauteur du bac gauche ...
... dessinez l'équilibre penché vers la droite ...
... et réfléchissez si le plateau gauche était plus lourd.
Sinon, dessinez un équilibre de niveau.
Passez au premier panoramique d'échelle.
Boucle sur les entrées.
Dessinez l'échelle de l'échelle.
Coupez l'entrée en sous-chaînes de longueur 6 et imprimez-les à l'envers afin qu'elles remplissent le bac vers le haut.
Passez au deuxième panoramique de l'échelle.
la source
Python 2 ,
11011071855837 octets-216 octets avec compression de chaînes
-18 octets en réduisant la répétition
Essayez-le en ligne!
Exécuter en tant que
A(string_one, string_two
.w
calcule le poids de la chaîne de manière récursive.t
est le texte compressé et entrelacé des six échelles possibles, qui se comprime très bien.p
prend la chaîne (sans les espaces supprimés), le poids de la chaîne et le côté de la balance sur laquelle se trouve la chaîne, et crée un bloc de caractères 5x6.A
prend les cordes et construit leurs blocs avecp
. La chaîne géante en bas est composée de trois chaînes de format entrelacées et compressées.la source
JavaScript (ES6),
340337 octetsPrend l'entrée comme un tableau de 2 tableaux de caractères. Dessine le caractère de sortie par caractère.
Essayez-le en ligne!
Comment?
Nous invoquons maintenant la deuxième fonction d'aide pour dessiner la sortie:
Où
INDEX
est calculé comme suit:la source
Java 10,
1043993988983 octets-5 octets grâce à @ceilingcat .
Les entrées sont deux chaînes, ce qui donnera comme résultat une matrice de caractères.
Essayez-le en ligne.
Explication:
la source