Gelée , 14 12 octets
J’ƲœṗZ⁻¦µU⁼
Essayez-le en ligne!
Contexte
Nous commençons par regarder les indices basés sur 0 de la chaîne d'entrée.
H H e H H e l e H H e l l l e H H e l l o l l e H
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
Pour obtenir les lignes du triangle, nous pouvons diviser la chaîne avant les indices 1 , 1 + 3 = 4 , 1 + 3 + 5 = 9 et 1 + 3 + 5 + 7 = 16 . Puisque (n + 1) ² = n² + (2n + 1) , ces sommes sont précisément les carrés positifs et parfaits dans la liste d'index. Si nous divisons également la chaîne avant 0 , c'est aussi simple que de diviser avant tous les indices basés sur 0 qui sont des carrés parfaits.
Après le fractionnement, nous obtenons les chaînes suivantes.
""
"H"
"HeH"
"HeleH"
"HellleH"
"HellolleH"
Ensuite, nous remplaçons la chaîne vide au début par tous les caractères de la première colonne.
"HHHHH"
"H"
"HeH"
"HeleH"
"HellleH"
"HellolleH"
La tâche est maintenant réduite à vérifier si l'inversion de toutes les chaînes donne le même tableau de chaînes.
Comment ça fonctionne
J
Génère d' abord tous les indices basés sur 1 de la chaîne d'entrée J
, puis les décrémente avec ’
pour produire tous les indices basés sur 0. Ʋ
teste tous les indices basés sur 0 pour l'équerrage. Pour notre exemple ci-dessus, cela donne le tableau booléen suivant.
1 1 0 0 1 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0
Ensuite, nous appelons œṗ
à partitionner la chaîne d'entrée, par exemple,
H H e H H e l e H H e l l l e H H e l l o l l e H
avant tous les 1 (en fait, tous les éléments véridiques). Pour notre exemple, cela donne le tableau de chaînes suivant.
['',
'H',
'HeH',
'HeleH',
'HellleH',
'HellolleH'
]
Z⁻¦
est sans doute la partie la plus intéressante de cette réponse. Analysons d'abord le plus simple Z1¦
.
¦
est le rapide clairsemé . Il consomme deux liens de la pile, spécifiquement 1
et Z
dans ce cas. Le premier Z
est appliqué à son argument: le tableau de chaînes d'avant. Z
est l' atome zip et lit le tableau de chaînes / tableau de caractères 2D par colonnes, ce qui donne
['HHHHH',
'eeee',
'Hlll',
'ell',
'Hlo',
'el',
'Hl',
'e',
'H'
]
Ce qui était le côté gauche de la chaîne d'entrée et la première colonne du tableau de chaînes devient maintenant la première chaîne .
¦
Regarde maintenant 1
et trouve un seul index: 1 . Ainsi, la première chaîne du tableau de chaînes d'origine est remplacée par la première chaîne dans la valeur de retour de Z
; les chaînes des autres indices ne sont pas affectées.
['HHHHH',
'H',
'HeH',
'HeleH',
'HellleH',
'HellolleH'
]
Appelons ce tableau A .
Nous avons utilisé à la Z⁻¦
place de Z1¦
, mais cela ne fait aucune différence: ⁻
compare le tableau de chaînes avec la chaîne d'entrée pour l'inégalité, ce qui donne 1 car elles ne sont pas égales. La différence entre les deux est qu'il Z⁻¦
est dyadique parce qu'il ⁻
nous permet d'écrire à la œṗZ⁻¦
place de œṗ¹Z1¦
. En effet, une dyade ( œṗ
) suivie d'une monade ( œṗ¹Z1¦
) est une fourchette (la monade est appliquée à l'argument de la chaîne / à la chaîne d'entrée, et la valeur renvoyée est transmise comme argument de droite à œṗ
), tandis qu'une dyade suivie d'une autre dyade (ou à la fin de la chaîne) est un crochet , c'est-à-dire que son argument de droite est l'argument de la chaîne.
Tout ce qui reste à faire est de vérifier la palindromicité. µ
commence une nouvelle chaîne (monadique) qui est l' argument est un . Le upend atome U
inverse toutes les chaînes A (mais pas A lui - même), puis ⁼
compare le résultat avec une pour l' égalité. Le booléen renvoyé 1 indique un triangle entièrement palindromique; les autres chaînes retourneraient 0 .
Japt ,
252117 octetsSauvegardé 2 octets grâce à @obarakon
Testez-le en ligne!
Comment ça fonctionne
Notez que nous n'avons pas besoin de vérifier les deux côtés; si les côtés ne sont pas les mêmes, au moins une des rangées n'est pas un palindrome.
la source
05AB1E , 18 octets
Utilise l' encodage 05AB1E . Essayez-le en ligne!
la source
gÅÉ£ÐíQs€¬āÈÏJÂQ*
gÅÉ£
vous renard sournois ... Je les sous-estimelist-commands.py
Gelée ,
1816 octetsEssayez-le en ligne!
Merci à Jonathan Allan pour les économies triviales mais pas si évidentes de -2 octets.
la source
JƲ0;œṗ⁸ZḢ$ṭ$ŒḂ€Ạ
J²‘Ṭœṗ⁸ZḢ$ṭ$ŒḂ€Ạ
½
? Maintenant,J
c'est plus logique ...JavaScript (ES6), 112 octets
t
etu
collecter les côtés afin qu'ils puissent être testés à la fin.la source
C #, 184 octets
Je pensais que la solution semblait bonne jusqu'à ce que j'arrive à la partie palindrome
Version non golfée:
la source
e=..
dans la ligne de boucle for pour enregistrer un octet? Il n'est pas nécessaire de compter les sauts de ligne dans le nombre d'octets, donc je suppose que vous ne l'êtes pas.....; i < s;e = f.Substring(s - k)){c+=....
Java 8,
358301 octetsL'entrée est un
String
, la sortie est unboolean
.Explication:
Essayez-le ici.
la source
Gelée ,
2021 octets+2 octets - J'ai publié un code bogué :(
-1 octet - déplacé du moulage comme des entiers impairs vers le partitionnement aux index carrés
Un lien monadique acceptant une liste de personnages et renvoyant
1
(Truthy) ou0
(Falsey).Remarque: cela utilise la partie de la spécification qui limite l'entrée à une longueur carrée.
Essayez-le en ligne! ou consultez la suite de tests .
Cela peut être simplifié à 17 octets en notant que si toutes les lignes sont des palindromes, un seul "côté" doit être vérifié (
JƲ0;œṗ⁸ZḢ$ṭ$ŒḂ€Ạ
), mais Erik l'Outgolfer a déjà remarqué ce fait et l'a utilisé dans sa réponse , j'ai donc donné la méthode de construction du triangle pour les sauver un octet là-bas.De plus, cela peut à son tour être amélioré à 16 octets en notant que le partitionnement aux index véridiques ne dérange pas s'il y a un excès dans l'argument de gauche (
J²‘Ṭœṗ⁸ZḢ$ṭ$ŒḂ€Ạ
).Comment?
la source
Mathematica, 156 octets
contribution
la source
If[<stuff>, True, False]
par juste<stuff>
? Et je pense queAnd@@(...)
c'est plus court queCount[...,True]==s
, ce qui signifie également que vous n'avez pas à définirs
comme variable."1202"
et"160625052"
).PHP , 97 octets
Essayez-le en ligne!
la source
Java, 136 octets
Utilise un
MutableList<Character>
des collections Eclipsela source
Perl 5 , 81 + 1 (
-p
) = 82 octetsEssayez-le en ligne!
Sorties
undef
(c'est-à-dire vides, nulles) pour vrai, n'importe quel nombre pour fauxla source
Excel VBA, 87 octets
Fonction de fenêtre immédiate VBE anonyme qui prend les entrées de la cellule
[A1]
et les sorties vers la fenêtre immédiate VBEla source
Python 2 ,
128118115 115 octetsEssayez-le en ligne!
la source