Le défi
Votre tâche consiste à créer un programme qui prend une entrée de chaîne donnée et la sort au format carré. Les chaînes vides doivent renvoyer une chaîne vide.
Exemples
Compte tenu de l'entrée:
golf
Votre programme devrait générer:
golf
o l
l o
flog
Contribution:
123
Sortie:
123
2 2
321
Contribution:
a
Sortie:
a
Contribution:
Hello, world!
Sortie (remarquez l’espace entre, et w - l’écart n’est pas simplement une nouvelle ligne):
Hello, world!
e d
l l
l r
o o
, w
w ,
o o
r l
l l
d e
!dlrow ,olleH
Notation
C'est du code-golf , donc la réponse la plus courte dans chaque langue est gagnante.
code-golf
string
code-golf
number
sequence
combinatorics
code-golf
tips
javascript
code-golf
kolmogorov-complexity
fibonacci
restricted-time
code-golf
ascii-art
code-golf
string
text-processing
code-golf
sequence
set-partitions
code-golf
kolmogorov-complexity
natural-language
code-golf
string
code-golf
math
code-challenge
restricted-source
code-golf
code-golf
number
base-conversion
cops-and-robbers
encryption
code-challenge
quine
optimized-output
king-of-the-hill
python
SpookyGengar
la source
la source
Réponses:
Charbon de bois ,
7 à5 octetsEssayez-le en ligne! Le lien est vers la version verbeuse du code. Edit: 2 octets enregistrés grâce à @CarlosAlejo. Explication:
(Plusieurs directions de la commande Reflect s'exécutent consécutivement plutôt que simultanément.)
la source
θ‖B↙↘
. Essayez-le en ligne!ReflectOverlap
plutôt que d'ReflectButterfly
éviter les renversements. :-)MATL ,
201611 octetsEssayez-le sur MATL en ligne!
EDIT: le code fonctionne dans la version 20.2.1, antérieure au challenge. Le lien utilise cette version. (Dans 20.2.2, le code serait plus court, mais il retarde le défi).
Explication
la source
Jelly ,
29 2217 bytesCharbon de bois
seratrounce + d ce score ...Un lien monadique prenant et renvoyant une liste de caractères; ou un programme complet imprimant le résultat.
Essayez-le en ligne!
Comment?
la source
'Hello'
"Spooky's""123"
, etc. (Python est utilisé pour interpréter l'entrée).C, 109 octets
Essayez-le en ligne!
Trucs remarquables:
Au lieu de gaspiller des octets
strlen
, nous saisissons simplement la longueur de la chaîne tout en imprimant simultanément la première ligne:Cela fonctionne car
printf
renvoie le nombre d'octets écrits.Pour les lignes du milieu, nous devons boucler la chaîne mais exclure le premier et le dernier caractère. Ceci est réalisé avec la condition
(qui est plus court que
(++s)[1]
), qui saute le premier caractère car il++
est dans la condition et saute le dernier en s'arrêtant lorsque le caractère passé le caractère actuel est'\0'
(plutôt que de s'arrêter à'\0'
).Dans le corps de la première boucle,
nous imprimons le caractère actuel, puis le caractère "en miroir" approprié (garder la trace de
j
, ce qui entre dans les négatifs, ce qui crée une situation étrange d’indexation dans une chaîne avec un nombre négatif), complétée par une longueuri
avec des espaces (oùi
est commodémentstrlen(s) - 1
).L'impression inversée sur la dernière ligne est assez simple. le seul truc est le
*s*~i--
, qui est le moyen le plus court pour obtenir desi+2
itérations du corps de la boucle (qui ne dépend pas dei
, touti
est utilisé pour compter). La*s*
partie funky veille à ce que la boucle ne s'exécute pas si*s
est'\0'
, ce qui se produit lors d'une entrée de longueur 1.la source
Octave, 40 octets
Essayez-le en ligne!
C’est ma réponse mais postée après la réponse de @Luis MATL
la source
Haskell ,
8478 octetsEssayez-le en ligne! Utilisation:
f "test"
. Retourne une liste de lignes.Edit: -6 octets grâce à dianne!
la source
reverse
;r=reverse;f s@(_:x)|_:y<-r x=s:[a:(y>>" ")++[b]|(a,b)<-zip x y]++[r s];f s=[s]
est 78 octets.Python 2 ,
89818886 octetsEssayez-le en ligne!
la source
R , 113 octets
Essayez-le en ligne!
la source
05AB1E ,
17161519 octetsEssayez-le en ligne!
Explication
Exemple avec
input = golf
Le correctif pour la saisie d'une lettre était assez coûteux.
Je me sens comme une approche différente pourrait être mieux maintenant.
la source
Python 2 ,
9988 octets-4 octets grâce à musicman523.
Essayez-le en ligne!
Retourne une liste de chaînes.
la source
s
ets[::-1]
dans lajoin
Mathematica, 128 octets
la source
C, 96 octets
Version bonus (122 octets):
la source
Rapide 3 ,
215199 octetsEssayez-le en ligne
la source
Python 3, 88 octets
la source
l+1 and
pourrait être réécritl+1and
pour sauver un octet.0or
où python ne parvient pas à analyser car il0o
s'agit d'un préfixe octal.JavaScript (ES8),
108112 octetsMoins golphé
Merci à Justin Mariner d’avoir économisé de nombreux octets, qui ont tous été utilisés en ajoutant la vérification du caractère zéro ou un caractère nécessaire pour relever le défi. Tu comprends :-(
la source
`+s[i+1].padEnd(s.length-1)+v,s)+`
et en utilisantr.join``
.String.prototype.padStart
les littéraux de modèles marqués. J'avais besoin de ça pour garder au minimum l'addition du contrôle de longueur :-)(n=s.length-1)?(r=<...>+r.join``:s
et en utilisantpadEnd(n)
. Si la longueur est1
,length-1
est0
(false).padEnd
est ES2017.PHP , 118 octets
Essayez-le en ligne!
la source
APL , 58 octets
Avec
⎕IO←0
.Essayez-le en ligne!
Comment?
c←≢⍵
- longueur de la ficeller←⍳
- intervalleo←∘.⌈⍨
- produit extérieur avec minimumo⌊⌽⊖
- minimiser avec lui-même tourné à 180 o×
- multiplier avecx←∘....⍨r
- produit extérieur de la gamme avec((c-1)=⍺⌈⍵)∨0=⍺⌊⍵
- le cadre de la matricex+
- ajouter le cadre(' ',⍵)[...]
- récupère l'index de la chaîne concaténée à l'espacela source
⍉⊖⍉⊖
être⌽⊖
?JavaScript (ES2017), 87 octets
Version ES6: 93 octets
Moins joué au golf
la source
padEnd
est ES2017.l+~i
, ce qui évite de soustraire 1 deux fois, mais vous pouvez soustraire 2 fois.l-~-i
s=>[...s].reverse(l=s.length).map((c,i,z)=>i?l+~i?s[i]+' '.repeat(l-2)+c:z.join``:s).join`\n`
maiss=>[...s].reverse(l=s.length-2).map((c,i,z)=>i?i+~l?s[i]+' '.repeat(l)+c:z.join``:s).join`\n`
fonctionne aussi.Java, 191 octets
la source
(s)
peut être justes
. Les boucles avec des lignes simples à l'intérieur peuvent avoir leurs accolades supprimées. Vous pouvez retourner au lieu d’imprimer si cela vous permet d’économiser des octets. Vous utilisezint i
dans les deux boucles, je ne peux pas dire si elles sont dans des domaines différents mais méritent d'être soulignées. L’initialisation de ces variables ensemble enregistre généralement des octets.for(int i=0;i<l;i++){o.print(s.charAt(l-1-i));}
->for(int i=0;i<l;){o.print(s.charAt(l-1-i++));}
. Vous n'avez pas besoin du point-virgule final.C # (.NET Core) ,
179161 octets-18 octets grâce à TheLethalCoder
Essayez-le en ligne!
Je ne suis pas sûr des règles, si cela est nécessaire pour compter les octets ou non:Quelqu'un s'il vous plaît corrigez-moi à ce sujet.Ungolfed:
la source
using
dans votre nombre d'octets. Comme vous utilisez LinqToCharArray()
peut être justeToArray()
, en avez-vous vraiment besoin avantReverse()
? Au fur et à mesure que vous utilisez,String
vous devez soit le qualifier complètement, soit inclure l’utilisation. Toutefois, cela peut être facilement résolu en le modifiant égalementstring
. Leif
pourrait être plus court qu'un ternaire commes+=l>1?if code:"";
. Vous pouvez supprimer lei++
de la boucle et l'incrémenter àd[i++]
.i
avecl
commeint l=s.Length-1,i=1;
. Et je pense que ça pourrait être ça!Retina , 106 octets
Essayez-le en ligne! Explication:
S'il y a au moins deux caractères, dupliquez l'entrée.
Inverser le doublon.
Turn the strings into triangles. The top triangle starts with the input and removes the first character each time, while the bottom triangle starts with the first letter of the reversed input and adds a character each time.
Join the triangles together, overlapping so that the last character forms the
/
diagonal.Change all the characters to spaces, if they are at least one character away from the end on every side.
Delete any left-over blank lines.
la source
Python 3, 85 bytes
Using the input for the top row :)
la source
Lua, 104 bytes
Try it online!
la source
p
once...Python 3, 106 bytes
A functional version...
la source
Python 2, 100 bytes
Try it online!
la source
Mathematica,
13891 bytesYou can try it online with by pasting the following at the Wolfram Cloud Sandbox and clicking "evaluate cell" or hitting Shift+Enter or Numpad Enter:
la source