Titre mal orthographié exprès. Lisez la suite pour savoir pourquoi.
Votre tâche: étant donné une chaîne ou une liste délimitée comprenant les caractères A,B,C,D
, affichez les index de tous les caractères égaux adjacents. La sortie peut être plusieurs chaînes / entiers sur plusieurs lignes, une liste / tableau ou une chaîne délimitée.
Toutes les sorties doivent être dans une liste ou une chaîne, ou plusieurs lignes imprimées. Chaque ligne imprimée, s'il y en a plusieurs, ne doit contenir qu'une chaîne ou un nombre. Les whatevers de fuite sont corrects.
Méthodes standard d'entrée / sortie. Des échappatoires standard s'appliquent.
Par exemple, l'entrée 'ABCDDCBA'
doit sortir 3,4
ou 4,5
, selon qu'elle est indexée de 0 à 1, car ces nombres sont les index de D
et à D
côté.
Cas de test:
Les cas de test ont une entrée donnée sous forme de chaîne unique et une sortie sous ,
forme de chaîne délimitée. Les sorties sont indexées 0, ajoutez 1 à chaque élément sorti pour qu'il soit indexé 1.
Input: 'ABCDCABCD'
Output: ''
Input: 'AABBCCDD'
Output: '0,1,2,3,4,5,6,7'
Input: 'ABCDDDCBA'
Output: '3,4,5'
Input: 'ABBCDD'
Output: '1,2,4,5'
C'est le code-golf , donc le code le plus court gagne!
3,4,4,5
valable?AABBCD
->
1,2,3,4
Réponses:
MATL ,
87 octetsLa sortie est basée sur 1.
Essayez-le en ligne!
Explication avec exemple
Tenez compte des commentaires
'ABCDDDCBA'
.la source
Rétine ,
332923 octets6 octets enregistrés grâce à Martin Ender
Génère une liste d'index séparés par un saut de ligne.
Essayez-le en ligne!
Explication
Translittérer les passages du même caractère en deux points, pour marquer les positions où il y a des caractères en double.
Remplacez ensuite chaque deux-points par la longueur du texte qui le précède, suivi d'un saut de ligne.
Enfin, supprimez toutes les lettres restantes.
la source
Gelée , 7 octets
1 base; renvoie une liste de listes des exécutions d'index autorisées par l'OP.
Essayez-le en ligne!
Comment?
la source
ṁ
- Ce que je souhaite que 05AB1E puisse faire pour 500, s'il vous plaît.Brain-Flak ,
5746 octetsComprend +2 pour
-ar
Utilise l'indexation basée sur 0.
Essayez-le en ligne!
la source
Mathematica, 32 octets
Fonction pure qui renvoie les positions indexées 1 des caractères adjacents à un caractère identique.
Explication:
StringPosition["string","sub"]
donne une liste des positions de caractères de début et de fin auxquelles"sub"
apparaît une sous-chaîne de"string"
.x_~~x_
est unStringExpression
qui correspond à deux caractères adjacents identiques. Par exemple,StringPosition["ABCDDDCBA",x_~~x_]
donne{{4, 5}, {5, 6}}
. L'applicationUnion
joint les listes, trie et supprime les doublons.la source
Brain-Flak ,
69, 59, 56 octetsEssayez-le en ligne!
+2 octets pour les
-ar
drapeaux qui permettent l'entrée ASCII et inverse la pile.Utilise l'indexation basée sur 0. Économisé 10 octets en réduisant ma redondance push-pop . 4 autres octets enregistrés en passant d'une indexation de 1 à 0.
C'est à peu près le seul défi basé sur les cordes auquel le brain-flak est bon. C'est parce que brain-flak est excellent pour comparer des caractères consécutifs, même si c'est horrible pour le traitement des chaînes en général. Voici une version lisible du code avec des commentaires pour expliquer comment cela fonctionne:
la source
-r
. Cela me ramène à 46.Brachylog , 19 octets
Essayez-le en ligne!
Explication
Brachylog est généralement terrible avec les index, ce qui apparaît à nouveau ici.
Si
false.
est une sortie acceptable dans les cas où il n'y a pas de caractères adjacents, alors ce serait 1 octet de moins en remplaçantᶠd
parᵘ
.la source
Octave , 35 octets
Essayez-le en ligne!
Similaire à ma réponse MATL . Ici
unique
trie automatiquement. L'entrée àdiff
doit être convertie endouble
, ce qui est fait par l'unaire+
.la source
Cubix,
37 32 31 2928 octetsMerci à ETHProductions de m'avoir orienté vers une économie de trois octets
Essayez-le ici ! Notez que les indices de sortie sont basés sur 1 et non dans l'ordre croissant.
Étendu:
Explication
Cela fonctionne en lisant le caractère saisi caractère par caractère. Pour comparer deux caractères, nous soustrayons simplement leurs codes de caractères, et si le résultat est 0, nous imprimons la longueur actuelle de la pile, un espace, la longueur actuelle de la pile - 1 et un autre espace. Ensuite, nous nettoyons un peu la pile et nous recommençons avec la boucle de lecture. Si la fin de la chaîne d'entrée est atteinte, le programme s'arrête.
la source
#
pour obtenir la longueur de la pile lorsque vous en avez besoin. (Aussi, LOL'ed au;_;
dans le code;))!$w
au lieu de!w
déplacer une partie de la logique de la cinquième ligne vers la quatrième ligne? (Je ne peux pas essayer maintenant parce que je me dirige vers la porte)C, 75 octets
Utilise les espaces comme délimiteurs. (Une virgule de fin ne semble pas trop bonne.)
Essayez-le en ligne!
la source
C # , 115 octets
Golfé
Non golfé
Non lisible non lisible
Code complet
Communiqués
115 bytes
- Solution initiale.Remarques
Rien à ajouter
la source
Gelée , 8 octets
Essayez-le en ligne!
la source
Ṗ=ḊTµ2Ḷ+€
k, 18 octets
Exemples:
La traduction vers
q
est plus facile à comprendre:la source
JavaScript, 52 octets
Merci @Neil pour avoir joué au golf sur 1 octet
Reçoit l'entrée sous la forme d'un tableau de caractères indexé 0
Renvoie la sortie sous la forme d'un tableau indexé 1
Explication
Pour chaque caractère de la chaîne
S'il est égal au caractère précédent ou au caractère suivant, retourne l'index + 1 sinon ne retourne pas (laisse non défini dans le tableau)
Supprimer tous les éléments non définis du tableau résultant
Essayez-le en ligne!
la source
&&i
économiser un octet(...)*i
?0|0&&6
est 0,1|0&&6
est 6,0|1&&6
est 6,1|1&&6
est 6. N'est-ce pas ce que vous voulez?Python 2,
5554 octetsEssayez-le en ligne!
Affiche les indices séparés par des espaces (notez que cela affiche deux fois certains indices comme autorisé par OP)
la source
Perl 5 , 37 octets
35 octets de code +
pl
drapeaux.Essayez-le en ligne!
(?<=(.))\1|(.)(?=\2)
correspondra soit entre deux caractères répétés ((?<=(.))\1
), soit avant un caractère répété ((.)(?=\2)
).Imprime ensuite
print pos
la position du match. (pos
contient l'index de la correspondance actuelle lorsqu'il est utilisé dans une expression régulière avec/g
modificateur).la source
Perl 6 ,
6657 octetsEssayez-le
Essayez-le
la source
PHP, 100 octets
la source
Ruby , 51 + 1 = 52 octets
Utilise le
-n
drapeau.Essayez-le en ligne!
la source
Lot, 139 octets
Prend entrée sur STDIN. Fonctionne en gardant une trace du nombre de nombres à imprimer dans la
c
variable, qui est réinitialisé à 2 lorsqu'une paire est détectée. Remarque: Au coût de 6 octets, pourrait être renforcé pour fonctionner avec la plupart des caractères ASCII et pas seulementABCD
.la source
C #, 89 octets
S'il y a trois caractères ou plus dans une ligne, les index sont répétés. Ce que @Comrade SparklePony a autorisé dans les commentaires.
Programme complet non golfé:
la source
QBIC , 42 octets
Exemple de sortie:
Explication:
EDIT: QBIC a maintenant Substring! Ce défi peut désormais être résolu en 32 octets:
Où:
la source
k, 14 octets
Il s'agit d'une fonction, elle prend une chaîne et retourne une liste d'index.
Explication:
Essayez-le en ligne!
Comment utiliser:
la source
PHP, 70 octets
prend l'entrée de STDIN; courir avec
-R
.la source