Cette idée est vaguement basée sur le message de discussion de @ TùxCräftîñg .
Jetez un œil à l'exemple de séquence ci-dessous:
INVALID0
, INVALID1
, INVALID2
INVALID3
, INVALID4
...INVALID9
Après INVALID9
, ça continue comme ça:
INVALI0
, INVALI1
, INVALI2
, INVALI3
...INVALI9
Et après INVALI9
, c'est comme ça:
INVAL0
, INVAL1
, INVAL2
, INVAL3
...INVAL9
Après, INVAL9
c'est comme ça:
INVA0
, INVA1
, INVA2
, INVA3
, ...INVA9
Remarquez comment nous avons continué à retirer une lettre du mot à INVALID
chaque fois.
Vous continuerez à répéter ceci jusqu'à ce que vous atteigniez une seule lettre, c'est-à-dire la lettre I
:
I0
, I1
, I2
, I3
, I4
...I9
Maintenant, votre tâche est de prendre une entrée d'un mot et d'en produire une séquence comme l'exemple ci-dessus. Votre code doit également fonctionner avec des lettres simples, et dans ce cas, la séquence résultante sera plus courte.
Vous pouvez choisir n'importe quel format d'entrée et de sortie que vous préférez (avec ou sans séparateur, comme vous le souhaitez), mais vous devez spécifier celui que vous avez choisi.
La séquence doit être dans l'ordre spécifié exact.
Le code le plus court, en octets, qui réussit ce défi, remporte le défi.
Séquence complète dans l'exemple ci-dessus:
INVALID0, INVALID1, INVALID2, INVALID3, INVALID4, INVALID5, INVALID6, INVALID7, INVALID8, INVALID9, INVALI0, INVALI1, INVALI2, INVALI3, INVALI4, INVALI5, INVALI6, INVALI7, INVALI8, INVALI9, INVAL0, INVAL1, INVAL2, INVAL3, INVAL4, INVAL5, INVAL6, INVAL7, INVAL8, INVAL9, INVA0, INVA1, INVA2, INVA3, INVA4, INVA5, INVA6, INVA7, INVA8, INVA9, INV0, INV1, INV2, INV3, INV4, INV5, INV6, INV7, INV8, INV9, IN0, IN1, IN2, IN3, IN4, IN5, IN6, IN7, IN8, IN9, I0, I1, I2, I3, I4, I5, I6, I7, I8, I9
Autres exemples:
Entrée: MAYBE
(les majuscules et les minuscules n'ont pas d'importance)
Sortie:
MAYBE0, MAYBE1, MAYBE2, MAYBE3, MAYBE4, MAYBE5, MAYBE6, MAYBE7, MAYBE8, MAYBE9, MAYB0, MAYB1, MAYB2, MAYB3, MAYB4, MAYB5, MAYB6, MAYB7, MAYB8, MAYB9, MAY0, MAY1, MAY2, MAY3, MAY4, MAY5, MAY6, MAY7, MAY8, MAY9, MA0, MA1, MA2, MA3, MA4, MA5, MA6, MA7, MA8, MA9, M0, M1, M2, M3, M4, M5, M6, M7, M8, M9
Contribution: AFTER
Sortie:
AFTER0, AFTER1, AFTER2, AFTER3, AFTER4, AFTER5, AFTER6, AFTER7, AFTER8, AFTER9, AFTE0, AFTE1, AFTE2, AFTE3, AFTE4, AFTE5, AFTE6, AFTE7, AFTE8, AFTE9, AFT0, AFT1, AFT2, AFT3, AFT4, AFT5, AFT6, AFT7, AFT8, AFT9, AF0, AF1, AF2, AF3, AF4, AF5, AF6, AF7, AF8, AF9, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9
Contribution: WHAT ARE YOU DOING
WHAT ARE YOU DOING0, WHAT ARE YOU DOING1, WHAT ARE YOU DOING2, WHAT ARE YOU DOING3, WHAT ARE YOU DOING4, WHAT ARE YOU DOING5, WHAT ARE YOU DOING6, WHAT ARE YOU DOING7, WHAT ARE YOU DOING8, WHAT ARE YOU DOING9, WHAT ARE YOU DOIN0, WHAT ARE YOU DOIN1, WHAT ARE YOU DOIN2, WHAT ARE YOU DOIN3, WHAT ARE YOU DOIN4, WHAT ARE YOU DOIN5, WHAT ARE YOU DOIN6, WHAT ARE YOU DOIN7, WHAT ARE YOU DOIN8, WHAT ARE YOU DOIN9, WHAT ARE YOU DOI0, WHAT ARE YOU DOI1, WHAT ARE YOU DOI2, WHAT ARE YOU DOI3, WHAT ARE YOU DOI4, WHAT ARE YOU DOI5, WHAT ARE YOU DOI6, WHAT ARE YOU DOI7, WHAT ARE YOU DOI8, WHAT ARE YOU DOI9, WHAT ARE YOU DO0, WHAT ARE YOU DO1, WHAT ARE YOU DO2, WHAT ARE YOU DO3, WHAT ARE YOU DO4, WHAT ARE YOU DO5, WHAT ARE YOU DO6, WHAT ARE YOU DO7, WHAT ARE YOU DO8, WHAT ARE YOU DO9, WHAT ARE YOU D0, WHAT ARE YOU D1, WHAT ARE YOU D2, WHAT ARE YOU D3, WHAT ARE YOU D4, WHAT ARE YOU D5, WHAT ARE YOU D6, WHAT ARE YOU D7, WHAT ARE YOU D8, WHAT ARE YOU D9, WHAT ARE YOU 0, WHAT ARE YOU 1, WHAT ARE YOU 2, WHAT ARE YOU 3, WHAT ARE YOU 4, WHAT ARE YOU 5, WHAT ARE YOU 6, WHAT ARE YOU 7, WHAT ARE YOU 8, WHAT ARE YOU 9, WHAT ARE YOU0, WHAT ARE YOU1, WHAT ARE YOU2, WHAT ARE YOU3, WHAT ARE YOU4, WHAT ARE YOU5, WHAT ARE YOU6, WHAT ARE YOU7, WHAT ARE YOU8, WHAT ARE YOU9, WHAT ARE YO0, WHAT ARE YO1, WHAT ARE YO2, WHAT ARE YO3, WHAT ARE YO4, WHAT ARE YO5, WHAT ARE YO6, WHAT ARE YO7, WHAT ARE YO8, WHAT ARE YO9, WHAT ARE Y0, WHAT ARE Y1, WHAT ARE Y2, WHAT ARE Y3, WHAT ARE Y4, WHAT ARE Y5, WHAT ARE Y6, WHAT ARE Y7, WHAT ARE Y8, WHAT ARE Y9, WHAT ARE 0, WHAT ARE 1, WHAT ARE 2, WHAT ARE 3, WHAT ARE 4, WHAT ARE 5, WHAT ARE 6, WHAT ARE 7, WHAT ARE 8, WHAT ARE 9, WHAT ARE0, WHAT ARE1, WHAT ARE2, WHAT ARE3, WHAT ARE4, WHAT ARE5, WHAT ARE6, WHAT ARE7, WHAT ARE8, WHAT ARE9, WHAT AR0, WHAT AR1, WHAT AR2, WHAT AR3, WHAT AR4, WHAT AR5, WHAT AR6, WHAT AR7, WHAT AR8, WHAT AR9, WHAT A0, WHAT A1, WHAT A2, WHAT A3, WHAT A4, WHAT A5, WHAT A6, WHAT A7, WHAT A8, WHAT A9, WHAT 0, WHAT 1, WHAT 2, WHAT 3, WHAT 4, WHAT 5, WHAT 6, WHAT 7, WHAT 8, WHAT 9, WHAT0, WHAT1, WHAT2, WHAT3, WHAT4, WHAT5, WHAT6, WHAT7, WHAT8, WHAT9, WHA0, WHA1, WHA2, WHA3, WHA4, WHA5, WHA6, WHA7, WHA8, WHA9, WH0, WH1, WH2, WH3, WH4, WH5, WH6, WH7, WH8, WH9, W0, W1, W2, W3, W4, W5, W6, W7, W8, W9
Classement
la source
INVALID0INVALID1INVALID2
) est-il un format de sortie valide?Réponses:
Gelée , 7 octets
Essayez-le en ligne!
Comment ça marche
la source
05AB1E ,
108 octetsExplication
Essayez-le en ligne!
Enregistré 2 octets grâce à Adnan
la source
.p
est équivalent àŒ¹g£
:).Javascript (ES6),
5347 octets6 octets enregistrés grâce à Peanut & Neil
Sortie: tous les mots en une seule chaîne sans séparateur.
Exemple
la source
s&&
place des?
...:''
?+''
partie du dernier code que j'ai publié. Essayez-le ici!Perl, 29 octets
Comprend +1 pour
-n
Exécuter avec entrée sur STDIN:
Juste le code:
la source
^
Mais je ne comprends pas ça en dernier ... On dirait que ça fait le même travail que(*FAIL)
moi, mais je ne vois pas pourquoi. Pourriez-vous expliquer?^
entraîne l'échec de la correspondance, ce qui force le regex avant cela à revenir en arrière^
... Je veux dire avec votre exemple, pourquoi,/
ne fonctionne pas, mais le^/
fait-il?^
dépasse la compréhension actuelle de l'optimiseur. L'un ou l'autre des deux comportements pourrait changer à l'avenir ..Haskell,
4743 octetsExemple d'utilisation:
f "IN"
->["IN0","IN1","IN2","IN3","IN4","IN5","IN6","IN7","IN8","IN9","I0","I1","I2","I3","I4","I5","I6","I7","I8","I9"]
.Approche récursive simple. Ajoutez chaque chiffre au mot et ajoutez un appel récursif avec la dernière lettre supprimée.
la source
Pyth, 9 octets
Un programme qui prend l'entrée d'une chaîne entre guillemets sur STDIN et imprime une liste de chaînes.
Essayez-le en ligne
Comment ça marche
la source
Pip ,
1211 octetsPrend le mot comme argument cmdline. Sorties sans séparateurs.
Essayez-le en ligne!
Explication:
la source
V , 20 octets
Essayez-le en ligne!
Puisqu'il contient des caractères non imprimables, voici le format lisible:
Et voici un hexdump:
Explication:
la source
Bash + coreutils, 54 octets:
Boucle simplement à travers une séquence
[Length of Input,1]
et pendant chaque itération, sort le mot d'entrée à la longueur des9
temps de valeur d'itération en cours avec chaque nombre[0,9]
ajouté à chacune des9
copies du mot. Exécutez-le dans un fichier et le ou les mots entre guillemets, c'est-à-direbash A.sh "blah blah blah"
.la source
Floroid -
50 4731 octetsUtilise actuellement une méthode similaire à celle utilisée par @JonathanAllan sur sa deuxième méthode récursive.
Aurait pu être cela si je l' aurais mis en œuvre le produit cartésien plus attentivement dans la langue:
Bc:ca([c]+[c[:-a-1]KaIw(Z(c)-1)],hd)
.Cas de test
la source
(lambdabot) Haskell - 49 octets
Lambdabot est un bot IRC chez #haskell; il importe automatiquement un tas de modules, y compris celui
Data.List
qui est eninits
direct. Et parce qu'un langage est défini par son implémentation, je peux appeler ce haskell lambdabot et ne pas payer les octets pour les importations.Haskell régulier:
la source
tails
travailler?INVALID, NVALID, VALID, ALID, LID, ID, D,
braingasm ,
34333128 octetsÀ son état actuel, le braingasme est juste un coup de cerveau glorifié avec quelques fonctionnalités supplémentaires ( comme, 3? ). J'ai passé la majeure partie du temps de développement à le rendre aussi "entreprenant" que possible, au lieu d'ajouter réellement des fonctionnalités ...
Quoi qu'il en soit, le code suivant devrait fonctionner avec le dernier instantané de développement. Il prend les entrées sans saut de ligne de stdin, like
$ echo -n INVALID | braingasm invalid.bg
, et les imprime sur stdout.Explication:
edit: Apparemment, il est OK de
sauterutiliser une chaîne vide comme délimiteurla source
Python 2,
5355 octets+2 octets: déclarer f est nécessaire avec la récursivité (comme indiqué par @Destructible Watermelon)
Revient à la chaîne vide (produisant une liste vide), coupe un caractère à la fois et ajoute une liste de dix de la chaîne actuelle avec les chiffres 0 à 9 ajoutés à chacun.
Test sur ideone
Python 3,
5456 octetsTest sur ideone
la source
f=
partie (un peu comme la façon dont vous ne pouvez pas supposer que les variables ont des valeurs)Swift 3, 150 octets
Pas tout à fait la solution la plus courte, mais pas terrible pour Swift
Testez cela en ligne dans le bac à sable IBM Swift
Non golfé
la source
Rubis, 51
Aucun séparateur utilisé.
Ajoutez ce qui suit
i%10
pour les séparateurs:,$/
pour la nouvelle ligne,,?|
pour|
(similaire pour tout caractère imprimable),,' '
pour l'espace.En programme de test
la source
PHP,
6456 octetsla source
Haskell,
4946 octetsla source
f=(>>=(
map['0'..'9']).snoc).tail.reverse.inits
. 3 en utilisant fmap:f=(>>=(<$>['0'..'9']).snoc).tail.reverse.inits
reverse.tail.inits
place,tail.reverse.inits
vous obtenez également la sortie correcte;)tail
, je suppose que je voulais direinit
, mais l'échanger avec le revers fonctionne bien non plus :-)C #,
107102 octetsNon golfé
la source
k++
la boucle for et en l'ajoutant++
après l'utilisation dek
, comme ceci:string f(string i){var o="";while(i!=""){for(int k=0;k<=9;)o+=i+k+++",";i=i.Remove(i.Length-1);}return o;}
En outre, les virgules ne sont pas requises par le défi OP, bien que si vous préférez, vous pouvez bien sûr les conserver. Sans c'est ça:string f(string i){var o="";while(i!=""){for(int k=0;k<=9;)o+=i+k++;i=i.Remove(i.Length-1);}return o;}
Rubis,
9085 octetsSi la chaîne est vide, retournez un tableau vide. Sinon, générez la chaîne + le numéro dans chaque numéro de 0 à 9 et appelez
f
avec la chaîne sans le dernier caractère.5 octets enregistrés grâce à @LevelRiverSt
la source
def
etend
. Vous pouvez créer un lambda de sorte que vous n'ayez même pas à lui donner de nom, tant que vous attribuez à une variable et l'appelez avec les arguments entre crochets.f=->s{if s=="";return[];end;(0..9).map{|i|s+i.to_s}+f[s.chars.take(s.length-1).join]}
est encore plus court de 5 octets.->
syntaxef=->s{s==""&&(return[]);(0..9).map{|i|s+i.to_s}+f[s.chars.take(s.length-1).join]}
enregistre encore 4 octets. Ruby évalue les expressions booléennes de gauche à droite et n'évalue pas les termes ultérieurs, sauf si cela est nécessaire pour déterminer le résultat. La même technique de golf peut être utilisée en C. Je ne sais pas pourquoi le()
tourreturn[]
est nécessaire dans ce cas.Perl 6, 32 = 31 octets + 1 pour -p
Je ne suis pas très compétent avec Perl 6, donc il peut y avoir des moyens de le réduire encore plus.
Il utilise
-p
pour évaluer une fois pour chaque ligne d'entrée. La ligne est placée dans$_
et après l'exécution du programme, elle s'imprime$_
.Il
(~$_,*.chop...^!*)
s'agit d'une liste dans laquelle le premier élément est~
entrée stringified ( ), chaque élément suivant est obtenu en coupant le dernier caractère du précédent (*.chop
) et qui continue jusqu'à ce que la chaîne soit vide (!*
), à l'exclusion du cas de chaîne vide (^
in...^
) .X~
génère toutes les paires de listes à gauche et à droite, en utilisant l'opération spécifiée, dans ce cas, la concaténation de chaînes (~
) sur elles.^10
est une liste de 0, 1, ... 9.Enfin, la liste est de nouveau stringifiée avec
~
, donnant les mots requis avec un espace comme séparateur.la source
PowerShell v2 +, 60 octets
Boucles de la longueur de la chaîne d'entrée à
1
. À chaque itération, définissez helper$i
égal au nombre actuel moins1
. Ceci est nécessaire car.length
correspond au nombre total de caractères, mais l'indexation d'une chaîne est basée sur 0. Ensuite, nous bouclons de0
à9
. Chaque boucle interne, tranche la chaîne d'entrée en$n
fonction de la valeur de notre boucle externe, la-join
remet en chaîne et concatène la chaîne sur le nombre de boucles internes. Chaque résultat de boucle individuel est placé sur le pipeline et la sortie est implicite à la fin du programme.la source
Dyalog APL ,
1411 octetsRenvoie la liste des chaînes.
,
listify (transformer le tableau en liste)⎕D
tous les chiffres∘.,⍨
annexé à tous (c'est-à-dire faire toutes les combinaisons avec)⌽
la liste inversée de,\
la concaténation cumulative de⍞
la saisie de texteTryAPL en ligne!
la source
Groovy (58 octets)
Je ne sais même pas pourquoi je prends la peine de poster une réponse Groovy ... La taille minimale requise pour un golf Groovy est de 2 en fonction de la nécessité d'une fermeture, donc la meilleure réponse ici est le double de ma taille minimale.
Essayez-le ici: https://groovyconsole.appspot.com/script/5148433803378688
la source
Lot,
8583 octetsla source
Java 7,
10598 octets-7 octets grâce à @Poke .
Non golfé :
Code de test:
Essayez-le ici.
Sortie:
la source
void c(String s){for(int x=0,l=s.length();x<l*10;)System.out.print(s.substring(0,l-x/10)+x++%10);}
Python 3, 62 octets
N'utilise pas la récursivité comme l'autre réponse.
La raison pour laquelle le ""
x+" "
est là: -0 est toujours nul, et donc nous ne pouvons pas utiliser la notation moins pour obtenir toute la chaîne de cette manière, donc le plus haut que nous pouvons aller est de moins un, donc le "" est de remplir la chaîne,la source
C,
72, 70 octetsPrend les chaînes sous forme de paires pointeur / taille. Test principal:
la source
Rétine , 37 octets
Le nombre d'octets suppose un codage ISO 8859-1.
Essayez-le en ligne!
Explication
Obtenez tous les préfixes de l'entrée en faisant correspondre et en imprimant toutes les correspondances qui se chevauchent depuis la droite.
Ajoutez un
0
à chaque ligne.Le
{
indique que les trois étapes restantes sont exécutées en boucle jusqu'à ce qu'elles ne changent pas la chaîne. Le%
dit qu'ils doivent être appliqués à chaque ligne séparément.L'étape elle-même reproduit simplement la dernière ligne (initialement, c'est juste la ligne sur laquelle elle est exécutée, mais chaque itération des trois étapes ajoute une autre ligne).
Incrémentez le chiffre de la dernière ligne en effectuant la substitution de caractères suivante:
Et enfin:
Conservez uniquement les 10 premières lignes afin de supprimer la ligne que nous venons d'ajouter
INPUT9
.la source
Scala,
7370 octetsAppelez ça comme
f("INVALID")
. Renvoie une séquence de caractères.Explication
Solution alternative, 73 octets
définit une fonction anonyme. Pour l'appeler, écrivez
et l'appelle comme ça
Il renvoie une séquence de chaînes, qui ressemblera à ceci lors de l'impression:
Explication
la source
CJam,
2928 octetsExplication:
Essayez-le en ligne
la source