Étant donné un nombre binaire, votre tâche consiste à créer une `` branche '' de ce nombre, avec une profondeur de 2.
Par exemple, donné 0
en entrée, vous devez sortir exactement ceci:
/000
/00
/ \001
0
\ /010
\01
\011
Cela devrait être assez explicite sur la façon dont les branches doivent être créées. La profondeur 2 signifie que nous calculons des branches pour des nombres jusqu'à 2 nombres plus longs. Nous calculons également les branches dans l'ordre, avec des zéros en haut et des uns en bas.
Plus de cas de test:
0
/000
/00
/ \001
0
\ /010
\01
\011
1
/100
/10
/ \101
1
\ /110
\11
\111
00
/0000
/000
/ \0001
00
\ /0010
\001
\0011
01
/0100
/010
/ \0101
01
\ /0110
\011
\0111
10
/1000
/100
/ \1001
10
\ /1010
\101
\1011
11
/1100
/110
/ \1101
11
\ /1110
\111
\1111
Règles
- Vous ne recevrez jamais de caractères dans l'entrée autre que
1
et0
. 0 < length of input < 11
.- Espaces de fuite autorisés à la fin des lignes.
0 < length of input < 11
est11
décimal ou binaire? : PRéponses:
Gelée ,
3938 octetsEssayez-le en ligne!
Comment?
L'art à imprimer est:
Où
N
est la chaîne d'entrée etL
est une chaîne d'espaces de la longueur de la chaîne d'entrée.Comme telle , elle est composée de huit éléments (
L
,N
,/
,0
, le caractère de saut de ligne,\
,1
, et le caractère d'espace) , et donc peuvent être stockés en tant que nombre de base 8 (qui peut être comprimé sous forme de nombre de base 250 en gelée). L'ṃ
atome combine la conversion de base et l'indexation en une liste (en fait, on peut définir des chiffres arbitraires à utiliser).la source
Lot,
178170159 octetsEdit: Sauvegardé 11 octets grâce à @ ConorO'Brien.
la source
JavaScript (ES6), 112 octets
Démo
Afficher l'extrait de code
la source
[n,n,s.replace(/./g,' '),s,'\\'][n]
?/\d/g
plutôt que/./g
d'ignorer les caractères non numériques.Python 3 ,
117109 octetsEssayez-le en ligne!
La chaîne de format lors de l'impression ressemble à:
Cela semble déjà bon pour une chaîne de longueur 1. Tout ce que nous avons à faire est de remplacer l par des espaces de longueur égale à celle de g et, bien sûr, g doit être remplacé par la chaîne d'origine
la source
Python 3.6,
172153128 octetsLittéralement, cela ne devient pas plus simple que cela ... C'est en fait plus court que ma tentative initiale de le générer avec un algorithme. Quelle tristesse.
-19 octets grâce à @Leo
-25 octets grâce à @ L3viathan
la source
b*2+' '
)print(f'{a}/{k}00\n{b} /{k}0\n{b}/ {b}\\{k}01\n{k}\n{b}\\ {b}/{k}10\n{b} \\{k}1\n{b*2} \\{k}01')
C,
170168 octetsMerci à @Neil d'avoir économisé deux octets!
Essayez-le en ligne!
la source
/
ou` padded to width
n + 1, why not print a space, and then a
/ `ou\
rembourré à la largeurn
?/
ou\
rembourré en largeurn+1
, pourquoi ne pas imprimer un espace, puis un/
ou\
rembourré en largeurn
?Python 3 , 96 octets
Essayez-le en ligne! Les caractères non imprimables ne s'affichent pas correctement; le format de la chaîne est le même que celui de officialaimm , mais avec
\x01
pourl
et\x02
pourg
.Utilise la substitution de chaînes avec la flexibilité de Python 3
translate
. La liste de traductions est[s,' '*len(s),s]
mappée\x01
vers' '*len(s)
et\x02
verss
. Tous les caractères plus grands sont inchangés car ils donnent des indices qui sont hors limites pour la liste.\x00
n'a pas pu être utilisé car un octet nul est lu comme une fin de programme, donc la première entrée est perdue.la source
PHP , 128 octets
Seule une sortie simple
Essayez-le en ligne!
la source
Empilé , 81 octets
Essayez-le en ligne!
Pas très intéressant, malheureusement. Voici la partie la plus intéressante:
Il s'agit essentiellement d'une interpolation de chaîne, mais de 10 octets de moins que la fonction intégrée.
la source
/// , 116 octets
Essayez-le en ligne!
L'entrée est la suivante:
Fonctionne en utilisant un modèle de base et en ajoutant des espaces et des caractères si nécessaire.
Le nombre d'octets a augmenté car Ørjan Johansen s'est rendu compte qu'il ne gérait pas l'espacement au début. Mais le problème est résolu.
la source
/*/\/y0\/ y\/\/y1\/ y\//**********/y///s/yx/
et puis vous obtenez un espacement avecs
./00/0|0//01/0|1//10/1|0//11/1|1//|/<\\y>//z/<y>x//<y>0/ //<y>1/ //<\\y\>///s/z/
peut gérer des longueurs arbitraires.Python 2 ,
101,91 octets113 octetsEssayez-le en ligne!
L'entrée est une chaîne de 0 et de 1 de longueur 1 ou 2! C'est 0,01,10 ou 11!
+12 octets - correction de l'espacement dans \ pour la longueur de deux entrées.
la source
0 < length of input < 11
".Fusain , 34 octets
Essayez-le en ligne! Le lien est vers la version détaillée du code. Explication:
Imprimez les paires de
/
s et\
s de gauche .Imprimez l'entrée justifiée à droite à la position actuelle.
Boucle à travers les branches.
Déplacez la position de la branche. Nous pouvons le faire car la racine a été imprimée à droite afin que la branche centrale soit toujours à la même position absolue.
Imprimez l'entrée.
Imprimez la bonne paire de
/
et\
.Imprimez le suffixe de branche.
Passez à la première feuille.
Faites une boucle à travers les feuilles.
Imprimez l'entrée et le suffixe de branche et de feuille.
Passez à la feuille suivante. Remarque: Si un espace de fin était acceptable, alors
F²⁺⁺⁺θι궶
enregistrerait un octet.la source