Avec une chaîne ASCII imprimable, divisez-la en une liste de chaînes non vides avec une nouvelle sous-chaîne commençant chaque fois qu'un caractère qui n'a pas été vu auparavant dans la même casse apparaît.
Exemples
"mississippi" → ["m","i","ssissi","ppi"]
"P P & C G" → ["P"," P ","& ","C ","G"]
"AAA" → ["AAA"]
"Adam" → ["A","d","a","m"]
"" → []
Anecdote : Le résultat aura entre 0 et 95 éléments. La 95 e sous-chaîne se poursuivra nécessairement jusqu'à la fin car, à ce stade, tous les caractères imprimables ASCII ont commencé une sous-chaîne, de sorte que chaque caractère supplémentaire est déjà passé et ne peut donc pas entraîner le début d'une nouvelle sous-chaîne.
"
et'
semble être une bonne idée.""
→[""]
acceptable?[""]
invalidité. Soupir.Réponses:
Gelée , 4 octets
Essayez-le en ligne!
Explication
La représentation interne des chaînes, que le lien TIO affiche, est légèrement différente.
la source
Retina , 9 octets
Essayez-le en ligne!
Explication
Faites correspondre chaque caractère (
.
), supprimez les correspondances répétées (q
), supprimez la première correspondance (1,
) et insérez un saut de ligne devant chaque correspondance¶$&
.la source
05AB1E , 11 octets
Essayez-le en ligne!
Explication
la source
¸«
peut êtreª
dans la nouvelle version de 05AB1E.C,
756563 octetsMerci à @ Digital Trauma pour avoir économisé 10 octets et merci à @gastropner et @ l4m2 pour avoir économisé un octet chacun!
Imprime une nouvelle ligne.
Essayez-le en ligne!
Sans nouvelle ligne principale (71 octets):
Essayez-le en ligne!
la source
{0}
=>{}
?Perl 6 ,
58 5240 octetsL'essayer
L'essayer
Essayez-le
(l'entrée est une liste de caractères et la sortie est une liste de listes de caractères)
Étendu:
La sortie de
classify
estEt le
.sort
transforme simplement en:».value
enlève les clésla source
HashMap
vs contreLinkedHashMap
en Java où l'ordre est basé sur l'ordre de la mémoire contre l'ordre d'insertion?J , 7 octets
Essayez-le en ligne!
Explication
Nub sieve a la chance de briller!
la source
APL (Dyalog Unicode) , SBCS sur 8 octets
Essayez-le en ligne!
la source
05AB1E , 8 octets
Essayez-le en ligne!
Toujours affichera 1 nouvelle ligne précédente, ce qui est constant et non indicatif d'un fractionnement. L'alternative à 10 octets ne produisant pas de nouvelle ligne précédente est
Ùvyy¶ì.;}¦
, vous pouvez l'essayer ici . Selon Adam, une nouvelle ligne précédente ou suivante est acceptable.Après chaque itération on obtient:
Lequel est:
la source
ÙSD¶ì.;
. Pas sûr de savoir pourquoi on n'y avait pas pensé auparavant: PHaskell , 39 octets
Essayez-le en ligne!
Insère un symbole de nouvelle ligne avant chaque caractère qui apparaît pour la première fois, ce qui donne une chaîne séparée par une nouvelle ligne, avec une nouvelle ligne. Prévoyez
lines.
pour produire une liste.Haskell , 55 octets
Essayez-le en ligne!
Le préfixe prend à plusieurs reprises le premier caractère plus les caractères non uniques qui le suivent.
la source
lines
.tail.lines
pour supprimer la chaîne vide supplémentaire maintenant que j'y pense.APL (Dyalog) , 9 octets
Merci, Erik the Outgolfer pour avoir économisé 1 octet!
Essayez-le en ligne!
Explication:
⍳⍨
: Pour chaque caractère, obtenez l'index de sa première occurrence. par exemplemississippi -> 1 2 3 3 2 3 3 2 9 9 2
⍳∘≢
: La plage de 1 à la longueur de l'entrée.∊
: Adhésion. par exemple1 2 3 4 5 6 7 8 9 10 11∊1 2 3 3 2 3 3 2 9 9 2 -> 1 1 1 0 0 0 0 0 1 0 0
⊢⊂⍨
: Partitionne la chaîne d'entrée avec de nouvelles partitions commençant par1
s dans le vecteur ci-dessusla source
fg
et monadiquef∘g
se comportent de la même manière)∊
au lieu de=
?Japt , 11 octets
Testez-le en ligne!
Explication
Cela a été inspiré par la magie Octopus Urne de solution 05AB1E .
la source
iRUbY
!JavaScript (ES6), 37 octets
Enregistré 7 octets: une nouvelle ligne de premier plan était explicitement autorisée (Merci @Shaggy!)
Prend les entrées sous forme de tableau de caractères. Affiche une chaîne séparée par une nouvelle ligne.
Cas de test
Afficher l'extrait de code
la source
brainfuck, 66 octets
Formaté:
Essayez-le en ligne
La nouvelle ligne de début dans la sortie (qui n'est imprimée que si l'entrée n'est pas vide) peut être supprimée au prix de 5 octets en remplaçant le corps
x
de la boucle principale (la plus à l'extérieur) par.>,[x]
.la source
Gelée , 6 octets
Essayez-le en ligne!
la source
K4 , 19 octets
Solution:
Exemples:
Explication:
8 octets est juste pour manipuler
""
...la source
Python 2 ,
8174 octetsEssayez-le en ligne!
la source
set
ne maintenez pas l'ordre, contre-preuve ->s='c'*6+'a'*100+'b'
Python 2 , 47 octets
Essayez-le en ligne!
Affiche une chaîne séparée par une nouvelle ligne. Bat à peine la version du programme:
Python 2 , 48 octets
Essayez-le en ligne!
la source
Perl, 30 octets
Comprend
+1
pourp
Donnez votre entrée sans fin de nouvelle ligne sur STDIN. La sortie est également sans fin de ligne:
Si vous ne se soucient pas de tête et de queue des sauts de ligne ce
25
(+3
pour-p
parce que le code contient'
) fonctionne aussi:la source
${$&}++
. Ce n'est pas aussi robuste, mais pourrait suffire à ce défi? En outre, il y a eu un consensus sur les méta quiperl -p
n'ont pas besoin d'octet supplémentaire, vous devez simplement avoir l'en-tête auPerl with `-p`
lieu de Perl. J'essaie de me souvenir de le faire moi-même ...1
c'est valide, auquel cas lev
est nécessaire. En ce qui concerne le comptage, je suis surtout le codegolf.meta.stackexchange.com/a/7539/51507 qui est pour moi la méta-publication la plus cohérente sur le comptage de perl.&~v0
pour saisir le premier caractère. Merci de rejoindre ce site et de partager votre longue expertise."
place de'
avec-e
, puis vous pouvez compter-ep
comme +1 plutôt que +3. (Testé.)JavaScript,
615452 octetsPrend les entrées sous forme de tableau de caractères.
L'essayer
la source
R ,
9487 octetsEssayez-le en ligne!
Retourne une liste (éventuellement vide) de sous-chaînes.
Merci à Michael M pour avoir économisé 7 octets!
la source
function(s,n=nchar(s),g=substring)g(s,d<-which(!duplicated(g(s,1:n,1:n))),c(d[-1]-1,n))
serait plus court - et bien sûr un peu plus laid ...substring
au lieu desubstr
?if(n)
dedans là carsubstring
jette une erreur pour une entrée de chaîne vide.substr
renvoie un vecteur de longueur égal à sa première entrée etsubstring
un de longueur égal à la plus longue de ses entrées.Stax , 8 octets
Exécuter et déboguer en ligne
La représentation ascii du même programme est la suivante.
Pour chaque caractère, il se scinde lorsque l'index du caractère actuel est la position actuelle.
la source
> <> ,
22 1714 octets-1 octet grâce à Emigna
Essayez-le en ligne!
Imprime une nouvelle ligne au début et à la fin.
Pour garder une trace des lettres qui sont déjà apparues,
p
créez une copie du caractère à cet endroit correspondant sur la deuxième ligne et imprimez une nouvelle ligne si la valeur extraite de cette position n'était pas 1. Se termine par une erreur lorsqu'il tente d'imprimer-1
la source
g/p
! 16 octetsHaskell, 62 octets
Essayez-le en ligne!
la source
JavaScript (ES6), 68 octets
Prend la saisie sous forme de liste de caractères.
Cas de test:
Afficher l'extrait de code
la source
[""]
était acceptable pour le dernier cas de test. Mais ce n'est pas . :-(PHP, 317 octets
Essayez-le en ligne!
la source
Rouge , 79 octets
Essayez-le en ligne!
Ungolfed:
la source
SNOBOL4 (CSNOBOL4) ,
1159177 octetsEssayez-le en ligne!
Imprime les sous-chaînes séparées par des nouvelles lignes.
Explication:
line
S
(forSPLIT
) ne se scinde pas réellement, mais extrait le premier caractère deN
et l'enregistre (.
) dansY
. D'F
ailleurs, ça saute àEND
. La correspondance ne doit échouer que lorsqueN
la chaîne est vide. Ainsi, lorsque l'entrée est vide, elle saute directement versEND
et ne génère rien.S = S Y
concatèneY
surS
.SPAN(S)
correspond avidement à une série de caractères dansS
et l'envoie (.
) àOUTPUT
setting (.
)N
pour lesREM
caractères entrants deN
(s'il en existe). Puis il revient àS
.la source
PowerShell, 73 octets
Usage
la source
Ruby ,
656258 octetsEssayez-le en ligne!
Un lambda acceptant une chaîne et renvoyant un tableau de chaînes.
Approche: pour chaque index, ajoutez le caractère de cet index au
s
tableau de résultats ou à la dernière chaîne du tableau de résultats.String#index
renvoie l'index de la première instance de l'argument.-2 octets: Initialise en
a
tant qu'argument splat au lieu de sa propre ligne. Merci, valeur d'encre !-1 octet: Utiliser
c=s[i]
... auc
lieu des[i]
...s[i]
. Merci, valeur d'encre !-4 octets: utiliser
.times
au lieu de.map
la source
Java 8,
193169155151 octets-14 octets grâce à @raznagul (pour quelque chose d'évident, je me suis un peu manqué ..)
-3 octets grâce à @OOBalance (encore pour quelque chose d'évident, je me suis égaré moi-même ..: S)
Explication:
Essayez-le en ligne.
la source
if(l<1)
. Sil
est0
la boucle ne doit pas être exécutée de toute façon comme0<0
estfalse
.i=0
deux fois. Vous pouvez économiser 3 octets enfor(;i<l;i++)