Jeudi dernier, l'utilisateur @SpookyGengar nous a ravis de son premier défi à propos de Making Squared Words . Et si nous doublons le nombre de côtés?
Le défi
Prenez une chaîne en entrée dans n'importe quel format raisonnable dont vous avez besoin ( string
, char
tableau ...) et sortez une représentation octogonale de l'entrée (également dans tout format raisonnable:, string
liste de string
s, char
matrice ...) comme dans les exemples suivants:
Input: golf
Output:
golf
o l
l o
f g
l o
o l
g f
o l
l o
flog
Input: HelloWorld
Output:
HelloWorld
e l
l r
l o
o W
W o
o l
r l
l e
d H
l e
r l
o l
W o
o W
l o
l r
e l
H d
e l
l r
l o
o W
W o
o l
r l
l e
dlroWolleH
Input: a
Output:
a
Input: ab
Output:
ab
b a
a b
ba
Input: code golf
Output:
code golf
o l
d o
e g
g e
o d
l o
f c
l o
o d
g e
e g
d o
o l
c f
o l
d o
e g
g e
o d
l o
flog edoc
Remarques
- L'entrée consistera uniquement en caractères ASCII imprimables.
- Espaces blancs de début et / ou de fin et sauts de ligne autorisés tant que la forme octogonale est maintenue.
- C'est du golf de code , donc le programme / la fonction la plus triée pour chaque langue peut gagner!
code golf
<Space>
considéré comme imprimable?Réponses:
Charbon de bois , 16 octets (10 octets sans concurrence)
Essayez-le en ligne! Le lien est vers la version détaillée du code. Explication:
Longueur alternative 1 correctif, également 16 octets: version détaillée.
Un correctif de charbon de bois signifie que le code de 10 octets suivant fonctionne désormais: Version détaillée.
la source
⟲
semble qu'il devrait juste faire cela. Lolcode golf
ça marche?θθθ
parθθ»θ
).code golf
? Je pense que cela a à voir avec la façon dont Charcoal reçoit les commentaires, ce qui, malheureusement, le disqualifie complètement de ce défi car cela ne peut être contourné.JavaScript (ES6), 156 octets
Renvoie un tableau de caractères.
la source
?:
!Mathematica, 247 octets
la source
Alignment
et vous économiseriez des octets en utilisant delayset (:=
) pour réduire la répétition des[[i]]
ets[[-i]]
, vous descendez à 224 octets avec ces idées: (T = Table; q: = s [[i]]; r: = s [[- i]]; k = Longueur [s = Caractères @ #]; Si [k == 1, #, Colonne [Aplatir @ {#, T ["" <> {q, T ["", k / 2-2 + i], r}, {i, 2, k}], T ["" <> {r, T ["", k + k / 2-2], q}, {i, 2, k}], T ["" <> {q, T ["", 3k / 2-1-i], r}, {i, 2, k-1}], StringReverse @ #}, Centre] ]) & Aussi, j'ai une solution alternative qui n'est que de 145 octets au moment de ce commentaire.Pyth ,
796965 octetsSuite de tests .
la source
Japt ,
8479 octets-5 octets grâce à @ETHproductions.
La nouvelle ligne principale fait partie du programme. Prend une chaîne en entrée et renvoie un tableau de chaînes.
Essayez-le en ligne! avec le
-R
drapeau pour rejoindre le tableau résultant avec des sauts de ligne.Ce n'est pas mon travail le plus fier, mais je l'ai au moins de 100 octets. Mon idée ici était de créer les parties supérieure et centrale, puis d'ajouter la partie supérieure, tournée à 180 °.
la source
Ul É
àUÅl
et basculer V et W pour économiser 2 octets de plus: codepen.io/justinm53/full/…AnV ?
->V-A?
, etUq £
->U£
¬
.Python 2 ,
220213 octetsEssayez-le en ligne!
la source
PHP 7.1,
230 156155 octetsExécuter en tant que pipe avec
-nR
ou l' essayer en ligne .panne
la source
Mathematica,
168166147 147127 octetsCela prend une liste de chaînes à un caractère et génère une matrice de chaînes à un caractère.
J'ai sauvé 18 octets en exploitant la symétrie à utiliser
-l
etCross/@l
qui prend quelque chose comme un produit croisé de chacun des deux vecteurs 2D simples à prendre{x,y}
pour{-y,x}
. Fondamentalement, les deux directions initiales sont l'Est (bord supérieur) et Sud-ouest (bord supérieur droit). Ensuite, nous ajoutons des rotations à 90 degrés dans le sens antihoraire avecCross
: le nord pour le bord gauche et le sud-est pour le bord inférieur gauche. Ensuite, nous ajoutons les quatre autres morceaux en utilisant-l
pour retourner les quatre que nous avons couverts.Vous pouvez le tester sur le bac à sable avec quelque chose comme:
la source