Le défi
Étant donné une chaîne, affichez le texte sous la forme d'un carré.
Vous pouvez supposer que le texte tiendra toujours dans un carré et qu'il ne s'agira jamais d'une chaîne vide.
Vous pouvez également supposer qu'il n'aura jamais de nouvelles lignes.
Exemple
Input:
Hi, world
Output:
Hi,
wo
rld
Cas de test
Input:
Hi, world! Hello
Output:
Hi,
worl
d! H
ello
Input:
Lorem ipsum dolor sit amt
Output:
Lorem
ipsu
m dol
or si
t amt
Input:
H
Output:
H
Règles
- C'est le golf de code , donc la réponse la plus courte en octets gagne! Tiebreaker est la réponse la plus votée.
- Les failles standard sont interdites.
Réponses:
Vim,
59, 57, 48 octets / touchesÉtant donné que V est rétrocompatible, vous pouvez l' essayer en ligne!
J'ai reçu au hasard un vote positif sur cette réponse, alors j'ai relu. Mes compétences en golf sur vim ont considérablement augmenté au cours des 7 derniers mois, j'ai donc vu que cette réponse était très mal jouée. Celui-ci est bien meilleur.
la source
Brainfuck ,
116112 bytesEssayez-le en ligne!
Coffre-fort dans les saveurs de BF qui ne masque pas les cellules avec
256
, ne prend pas en charge les octets nuls.Supprimez les flèches de droite initiales si l'arôme prend en charge la mémoire négative pour 4 octets enregistrés.
Explication
Le programme est divisé en 3 étapes:
Étape 1
Dans cette étape, nous mettons tous les personnages sur la bande, tout en comptant le nombre de caractères.
Ceci est la bande pour l'entrée
abcdefghi
après cette bande:C'est
009
le comte.Pour chaque caractère, nous déplaçons le premier zéro à gauche
[<]
, puis nous ajoutons un au nombre<<+>>>
, puis nous nous déplaçons vers le zéro le plus[>]
à droite pour nous préparer pour le caractère suivant.Étape 2
Cette étape fait la racine carrée de la longueur stockée dans la deuxième cellule.
Il continue de soustraire
1, 3, 5, 7, ...
jusqu'à ce que le nombre atteigne zéro, tout en vérifiant le nombre d'itérations.Cela fonctionne parce que les nombres carrés peuvent être exprimés comme
1 + 3 + 5 + ...
.Étape 3
Désigner la racine carrée de la longueur trouvée ci-dessus comme
n
.Cette étape produit des
n
caractères à la fois, puis génère une nouvelle ligne, jusqu'à ce que la bande soit effacée.la source
Python 2, 55 octets
la source
05AB1E , 5 octets
Essayez-le en ligne!
la source
»
sont les nouvelles lignes maintenant.MATL , 6 octets
Essayez-le en ligne!
Explication
la source
Gelée,
87 octetsEnregistré un octet grâce à @ Dennis .
Essayez-le en ligne.
Explication
la source
œs
ets
faites la même chose ici.½
fonctionne pas à la place deƽ
?s
etœs
donc ils ont casté en int.JavaScript (ES7), 49 octets
44 octets dans Firefox Nightly 43-46 uniquement (a
**
été introduit quelque temps entre Firefox Nightly 42 et 43 etg
un paramètre distinct a été supprimé quelque temps entre Firefox Nightly 46 et 47):la source
+
danss.length*+.5
*+
syntaxe auparavant. Quelqu'un pourrait-il l'expliquer?**
.J, 9 octets
Il s'agit d'un crochet monadique sur la chaîne d'entrée:
La bonne dent est une série de compositions:
La gauche est un verbe de mise en forme, commuté de telle sorte qu'il fonctionne au format crochet.
Voici quelques résultats intermédiaires:
Dans les mots:
la source
$~,~@
ressemble à une sorte d'émoticône mais@
semble bizarre pour une oreille mais&
s'adapte mieux, ou$~,~&
$~2#%:@#
est 8. La partie gauche d'une fourche peut être une constante.C, 64 octets
Appelez
f()
avec la chaîne au carré.Essayez-le sur ideone .
la source
int
argument implicite au lieu dechar*
?int*
car cela pourrait mal évoluer lors de l'ajout.s+=write(puts(""),s,m));
place des+=m)printf("%.*s\n",m,s);
Perl, 23 + 4 (
-pF
drapeaux) = 27 octets-2 octets grâce à @DomHastings
-1 octets grâce à @DomHastings
Essayez-le en ligne!
Expansions : calcule la racine carrée (appelons-la
S
pour l'explication) de la taille de l'entrée (ce sera toujours un entier) (@F
est utilisée dans un contexte scalaire, retournant ainsi sa taille), puis ajoutez une nouvelle ligne après chaque bloc deS
personnages.la source
$@
,;) Vous pouvez enregistrer un octet en utilisanty///c
au lieu de la longueur et je pense que vous pouvez également utiliser une nouvelle ligne littérale. Je cherchais à essayer de faire quelque chose avec le réglage$,
et la correspondance, mais je pense que c'est beaucoup plus court!$@
! Merci pour ley///c
, j'ai tendance à oublier qu'il existe.$=
place de$@
, ce qui permet de ne pas utiliser d'-l
indicateur.-pF
zsh, 36 octets
Prend l'entrée comme argument de ligne de commande, renvoie à STDOUT.
la source
05AB1E ,
86 octetsMerci à @quartata de m'avoir informé de la fonction racine carrée
Essayez-le en ligne!
Explication
la source
«
c'est court pour rejoindre sur les nouvelles lignes :).«
Python,
9475716563 octetsAncienne version:
la source
input()
par défaut pour recevoir des entrées entre guillemets, sauf si vous souhaitez supprimer spécifiquement cette option.CJam , 8 octets
Essayez-le en ligne!
Explication
la source
Pyth, 8 octets
Essayez-le en ligne
Comment ça marche
la source
Dyalog APL, 10 octets
Explication:
Tests:
la source
Cheddar, 27 octets (non concurrent)
J'ai ajouté la
.chunk
fonction il y a quelque temps mais je l'ai supprimée lors de la transition vers le nouveau format stdlib et j'ai oublié de la rajouter. Cheddar a unsqrt
opérateur dédié mais**.5
est plus courtEssayez-le en ligne!
Explication
la source
Utilitaires Bash + GNU, 25
Pas si différent de la réponse de @ Doorknob , mais
dc
c'est un moyen plus court pour obtenir la racine carrée.la source
𝔼𝕊𝕄𝕚𝕟, 11 caractères / 14 octets
Try it here (ES6 browsers only).
Généré à l'aide de ce code (exécuté dans la console du navigateur de l'interpréteur):
la source
Brainfuck, 83 octets
Essayez-le en ligne!
Cela utilise la même idée que la réponse de Leaky Nun . Il a demandé de l'aide pour jouer au golf dans le chat, puis m'a suggéré d'ajouter ceci comme nouvelle réponse. (En fait, ce que j'ai écrit dans le chat était une solution de 84 octets très similaire à cela.)
Par souci de comparaison, un supplément
>
est nécessaire au début pour les implémentations brainfuck qui n'autorisent pas les adresses mémoire négatives.Comme prévu, cela trouve la longueur de l'entrée, puis prend la racine carrée, puis imprime les lignes en conséquence. Il profite de carrés parfaits étant des sommes partielles de
1 + 3 + 5 ...
.la source
Brain-Flak ,
11096 octetsEssayez-le en ligne!
Deuxième solution, 96 octets
Essayez-le en ligne!
Explication
Ici, j'explique la première solution, les deux sont de la même longueur mais j'aime la première car elle est plus fraîche et utilise de belles astuces.
La partie la plus importante du code est une fonction de racine carrée modifiée que j'ai écrite il y a quelque temps. La version originale était
Et cela fonctionne, mais nous voulons en fait deux copies de la racine carrée négative. Pourquoi? Nous avons besoin de deux copies car nous parcourons la chaîne à deux niveaux, un pour créer les lignes et un pour compter le nombre de lignes. Nous voulons qu'il soit négatif parce que boucler avec des négatifs est moins cher.
Pour rendre ce négatif, nous nous déplaçons de
[...]
sorte qu'il ressemble à ceciPour faire deux copies, nous changeons lorsque des pops se produisent
Maintenant que nous avons ce bit, nous pouvons l'associer à une hauteur de pile pour obtenir le premier morceau de code dont nous avons besoin.
Nous passons au offstack parce que notre fonction racine carrée a besoin de deux zéros gratuits pour le calcul, et parce que cela rend les choses un peu moins chères dans le futur en termes de changement de pile.
Maintenant, nous construisons la boucle principale
C'est assez simple, nous bouclons n fois à chaque fois en déplaçant n éléments et en les coiffant d'une nouvelle ligne (ASCII 10).
Une fois la boucle terminée, nous devons inverser l'ordre de notre sortie, nous plaçons donc simplement une construction inverse standard.
la source
PHP, 51 octets
la source
Perl 6 , 38 octets
Explication:
la source
Cheddar, 57 octets
Puisque les variables sont cassées, je devrais passer des variables via l'application lambda.
En outre, il s'avère que même si les variables fonctionnaient, il serait encore plus court d'utiliser l'application lambda.
Usage
la source
Pyke, 5 octets
Essayez-le ici!
la source
Java 1.7, 110 octets
Essayez!(Ideone)
J'ai essayé une autre approche avec une fonction renvoyant le résultat sous forme de chaîne, mais le simple fait de déclarer la chaîne et l'instruction de retour est déjà plus cher (en nombre d'octets) que l'instruction print.
Je dois aimer la verbosité de Java ... :)
la source
i=0
,i<k
et aus.substring(i*k,i++*k+k)
lieu dei=-1
,++i<k
,s.substring(i*k,i*k+k)
. En outre, nous utilisons généralement justeJava 7
au lieu deJava 1.7
, mais il est bon que vous l'ayez ajouté, beaucoup de gens oublient de le faire.R ,
5954 octetsEssayez-le en ligne!
Imprime avec une nouvelle ligne de fin. Étonnamment court, compte tenu de la mauvaise gestion des chaînes par R.
la source
PowerShell, 56
5861octetsla source
Rubis
-p
,403330 octets-7 octets de @Jordan.
Essayez-le en ligne!
la source
Convexe , 7 octets
Essayez-le en ligne!
Fait amusant:
_,mQ/\*
fonctionne également sur TIO en raison de son fonctionnement.Comment ai-je oublié de créer une racine carrée de 1 caractère?
la source