N'importe quelle chaîne de caractères, imprimez-la sous la forme d'un triangle où le texte va et vient le long de chaque diagonale. Par exemple, une entrée de "Hello World"
doit générer:
d
l
r d
o l
W r d
o l
o W r d
l o l
l o W r d
e l o l
H l o W r d
e l o l
l o W r d
l o l
o W r d
o l
W r d
o l
r d
l
d
L'espace entre chaque caractère d'une ligne doit être au moins égal à 1 pour conserver le format correct.
code-golf
string
ascii-art
code-golf
string
abstract-algebra
code-golf
ascii-art
binary
fractal
code-golf
array-manipulation
sorting
permutations
code-golf
code-generation
code-golf
sequence
binary
code-golf
date
code-golf
array-manipulation
restricted-source
decision-problem
primes
code-golf
multi-threading
code-golf
array-manipulation
code-challenge
decision-problem
natural-language
test-battery
code-golf
array-manipulation
code-golf
array-manipulation
code-golf
code-golf
graph-theory
machiavelli
la source
la source
H l o W r d
s'agit d'une ligne centrale valide? Demander parce que dans votre exemple, chaque ligne a 3 espaces entre chaque caractère.Réponses:
Charbon de bois ,
10 à7 octetsEssayez-le en ligne!Essayez-le en ligne! Les liens doivent contenir une version verbeuse du code. Explication:La première fois que j'ai eu à utiliser laUE
commande.la source
UE
...UE
..05AB1E ,
1087 octetsMerci à Emigna d' avoir économisé 2 octets!
Utilise le codage 05AB1E . Essayez-le en ligne!
la source
¶«
. (a également vérifié la validité avec OP)â
auðâ
lieu deSð«
!Python 2 , 75 octets
Essayez-le en ligne!
Ruud a sauvegardé 3 octets.
la source
C,
86787370 caractèresEssayez-le en ligne!
Explication
Implantation naïve: deux cycles, remplir de haut en bas, de gauche à droite (99 octets):
Put () imprime simplement \ n dans la sortie. Combinons les déclarations de variable et combinons j ++ avec quelque chose (94 octets):
Bien. La variable j a une plage de 0 ... 2n; que ce soit dans -n ... n, cela simplifie les calculs. Notez que l'expression booléenne à droite de && a toujours la valeur 0 ou 1. Cela signifie que nous pouvons remplacer && par &. 91 octets:
Et maintenant nous avons réalisé que nous imprimions un espace supplémentaire. Et oui, nous n’avons pas besoin de printf () pour imprimer un seul symbole. 86 octets:
Encore mieux. Notez que la condition i * i> = j * j est identique à i> = abs (j), mais plus courte. Déplaçons une expression d’incrémentation de boucle dans (). Et devine quoi? En fait, nous n'avons pas besoin des accolades autour de i + j. 78 octets:
Saviez-vous que putchar () renvoie le caractère imprimé? Utilisons XOR pour tester les nombres pour l’équivalence. Souvenons-nous que le code de caractères de fin de ligne est 13. Enfin, saviez-vous que GCC / Clang prend en charge https://en.wikipedia.org/wiki/Elvis_operator ? 73 octets:
Enfin, devinez quoi? Nous n'avons pas besoin de deux pour les boucles. Nous pouvons remplacer laide ~ i + j avec seulement ij. 70 octets:
Travaux futurs: changer le sens de la boucle? Cela pourrait économiser des octets, si cela est fait correctement.
la source
SOGL V0.12 ,
13109 octetsCela utilise une fonctionnalité que je viens d'ajouter , mais qui a été documentée il y a un moment.
Essayez-le ici!
Dans ce lien
,
est ajouté parce que cela attend l'entrée sur la pile et{
ajouté car sinon,
serait exécuté à chaque fois dans la bouclela source
Haskell , 73 octets
Essayez-le en ligne!
la source
Gaia , 16 octets
Essayez-le en ligne!
Explication
la source
Python 2 ,
8683 octets-3 grâce à officialaimm
Essayez-le en ligne!
la source
Gelée , 15 octets
Essayez-le en ligne!
la source
Octave,
59635857 octetsEssayez-le en ligne!
la source
99
: bonne idée :-)Java, 292 octets (désolé)
la source
boolean a=1<0,o=L%2>0;
.. 2. Si vous n'avez pas besoini
, utilisez cette boucle:for(i=0;i++<n;)
. 3. Vous pouvez vous débarrasser deo
:j%2<L%2
alorsj%2>L%2
. 4. Utiliserd
comme flip prend autant de caractères: faites-lej<(x<0?-x:x)
. 5. Vous avez beaucoup plus de variables que nécessaire. 6. Vous n'avez pas besoin d'un programme complet: un lambda ou une méthode suffit. - Si vous voulez un exemple Java en golf, vérifiez ma réponse .Haskell , 81 octets
Essayez-le en ligne!
la source
Java (OpenJDK 8) , 116 octets
Essayez-le en ligne!
Explication
la source
C ++, 135 octets
Ok, voici mon coup avec C ++:
Essayez-le en ligne (ideone)!
la source
Haskell ,
140137 octetsEssayez-le en ligne!
3 octets sauvés à Challenger5
Je ne pense pas que ce soit optimal ...
f
produit l'une des lignes (m
= 0 ou 1 est le modulo du numéro de ligne,n
est le numéro de la ligne)g
intercale les lignes "impaires" et "paires" et ajoute au résultat un miroir de lui-même.la source
f
une fonction infixe (comme dans(m#n)s=...
) plutôt qu'une fonction préfixe.Pyth , 25 octets
Essayez ici.
la source
Gelée , 18 octets
Essayez-le en ligne!
la source
Mathematica 105 octets
Je pourrais peut-être me débarrasser d'un ou deux octets supplémentaires, mais le nombre de caractères nécessaire pour traiter les chaînes dans Mathematica rend les défis simples comme celui-ci non compétitif.
la source
J, 54 octets
Essayez-le en ligne! (notez que la sortie sur TIO a une nouvelle ligne et trois espaces, mais cela ne provient pas de l'appel de fonction - c'est probablement ce que l'interpréteur J fait automatiquement).
Je pense que l'idée générale de résoudre ce problème est juste, mais il y a de petites choses que je suis probablement en train de faire de manière sous-optimale qui ajoutent au décompte.
Variantes précédentes
55 octets
56 octets
Explication
Ce sera divisé en quelques fonctions. De plus, je n’étais pas aussi complet avec les dernières parties de l’explication, alors laissez-moi savoir si vous voulez une meilleure explication pour une certaine partie et je peux l’éditer dans.
dup
duplique chaque caractère autant de fois que son index (plus un) dans la chaînespace
insère des espaces entre chaque caractèrepad
remplit les personnages avec la bonne quantité d'espacetrans
transpose la matrice résultanteExemple d'appel:
Dup
Les résultats sont encadrés pour empêcher J de remplir les extrémités avec des espaces (étant donné qu’elles sont de longueur inégale).
Exemple d'appel:
Espace
Exemple d'appel:
Tampon
Fondamentalement, pad le premier élément avec la longueur - 1 espaces, le second avec la longueur - 2, etc. Il supprime également la boxe.
Exemple d'appel:
Transposer
C'est juste la fonction intégrée
|:
qui prend la transposition d'une matrice.la source
|:@(-@i.@-@#|."0 1((,@,.~' '#~#)@$"0~1+i.@#))
. il pourrait sûrement être joué au golf plus loin. cette partie-@i.@-@#
est un fruit en suspens, le plus probablef=. <some tacit expression>
ensuite5!:2 <'f'
une visualisation encadrée et5!:4 <'f'
une visualisation arborescente. dans mon cas, essayez d’abord d’utiliser$"0~1+i.@#
une chaîne, puis exécutez tout ce qui se trouve à droite de|."0 1
, puis comprenez que|."0 1
tout ce qui se trouve à gauche, sauf la transposition finale, ne fait que les rotations nécessaires.#
aides ici, 26 octets avec|:@((-#)|."_1(1j1##)"0)~#\
JavaScript (ECMAScript 6), 161 octets
Essayez-le en ligne!
la source
Perl 5 , 86 + 2 (-F) = 88 octets
J'ai utilisé les suggestions de @Dom et quelques-uns de mes propres réglages pour réduire le nombre d'octets.
Essayez-le en ligne!
la source
-aF
pour mettre toutes les lettres@F
et quelques petites modifications (-F
compte pour 3, car il faut un espace après): Essayez-le en ligne!perl -e'code...'
etperl -eF 'code...'
. Est également-a
inutile lors de l'utilisation-F
, de sorte que l'octet peut être coupé.-F
accepte un argument, mais nous ne voulons pas en passer un (-F
nous permet de contrôler les-a
divisions, pas d'argument, divisez chaque caractère séparément), c'est donc la différence entreperl -ae '...'
etperl -aF -e '...'
. Par défaut,-a
se scinde/\s+/
. J'espère que ça aide à clarifier!$#F
! Oublie toujours ça!q / kdb +, 55 octets
Solution:
Exemple:
Explication:
FAIRE. la version non golfée est de 66 octets:
Prime:
Pour obtenir le même résultat que l'exemple (74 octets):
la source