Ne détestez-vous pas quand vous voulez copier-coller une liste de nombres (vecteur, tableau ...), d'un programme à un autre, mais le format sur lequel vous avez les chiffres ne correspond pas au format sur lequel vous en avez besoin ?
Par exemple, dans MATLAB, vous pouvez avoir une liste séparée par des espaces comme celle-ci:
[1 2 3 4 5] (you can also have it comma separated, but that's not the point)
En Python, vous devrez insérer des virgules pour faire de cette liste une entrée valide, vous devrez donc la convertir en
[1, 2, 3, 4, 5]
pour le faire fonctionner. En C ++, vous voudrez peut-être quelque chose comme:
{16,2,77,29}
etc.
Pour simplifier la vie de tout le monde, créons un convertisseur de liste, qui prend une liste sur n'importe quel format * et génère une liste sur un autre format spécifié.
Les parenthèses valides sont:
[list]
{list}
(list)
<list>
list (no surrounding brackets)
Les délimiteurs valides sont:
a,b,c
a;b;c
a b c
a, b, c <-- Several spaces. Must only be supported as input.
a; b; c <-- Several spaces. Must only be supported as input.
a b c <-- Several spaces. Must only be supported as input.
Remarque, l'entrée peut avoir n'importe quel nombre d'espaces entre les nombres, mais la sortie peut choisir d'avoir zéro espace (si ,
ou ;
est utilisé comme délimiteur), ou un seul espace (s'il est délimité par un espace).
En plus de la liste d'entrée, il y aura une chaîne (ou deux caractères) qui définit le format de sortie. La chaîne de format sera d' abord le type de support d'ouverture (uniquement), [
, (
, <
, {
ou (le dernier est un espace unique utilisé lorsqu'il n'y a pas de parenthèses autour). Le type de support sera suivi par le type de séparation,
,
, ;
ou (le dernier est un espace unique). Les deux caractères de format d'entrée doivent être pris comme un seul argument (chaîne ou deux caractères consécutifs) dans l'ordre décrit ci-dessus.
Quelques exemples de chaînes de format:
[, <-- Output format: [a,b,c]
{; <-- Output format: {a;b;c}
<-- Two spaces, output list has format: a b c
Règles:
- La sortie ne peut pas avoir d'espaces de début
- La sortie peut avoir des espaces de fin et une nouvelle ligne
- La sortie doit seulement être la liste des numéros, pas
ans =
ou similaires
- La sortie doit seulement être la liste des numéros, pas
- L'entrée sera une liste de nombres entiers ou décimaux (positifs et négatifs (et zéro)) et une chaîne de deux caractères
- Si l'entrée se compose uniquement d' entiers, la liste de sortie doit avoir uniquement des entiers. Si la liste d'entrée se compose d'entiers et de nombres décimaux, tous les numéros de sortie peuvent être des nombres décimaux. (Il est facultatif de conserver les entiers sous forme d'entiers)
- Le nombre maximum de chiffres après la virgule décimale qui doit être pris en charge est de 3.
- L'entrée sera deux arguments. C'est-à-dire que les nombres sont dans un seul argument, et la chaîne de formatage est un seul argument.
- Le code peut être un programme ou une fonction
- L'entrée peut être un argument de fonction ou STDIN
Quelques exemples:
1 2 3 4
[,
[1,2,3,4]
<1; 2; 3>
; <-- Space + semicolon
1;2;3
not valid: 1.000;2.000;3.000 (Input is only integers => Output must be integers)
{-1.3, 3.4, 4, 5.55555555}
[,
[-1.300,3.400,4.000,5.556] (5.555 is also valid. Rounding is optional)
also valid: [-1.3,3.4,4,5.55555555]
Le code le plus court en octets gagne. Comme toujours, le gagnant sera sélectionné une semaine après le jour où le défi a été publié. Les réponses publiées plus tard peuvent toujours gagner si elles sont plus courtes que le gagnant actuel.
Classement
L'extrait de pile au bas de cet article génère le catalogue à partir des réponses a) en tant que liste des solutions les plus courtes par langue et b) en tant que classement général.
Pour vous assurer que votre réponse apparaît, veuillez commencer votre réponse avec un titre, en utilisant le modèle Markdown suivant:
## Language Name, N bytes
où N
est la taille de votre soumission. Si vous améliorez votre score, vous pouvez conserver les anciens scores dans le titre, en les rayant. Par exemple:
## Ruby, <s>104</s> <s>101</s> 96 bytes
Si vous souhaitez inclure plusieurs nombres dans votre en-tête (par exemple, parce que votre score est la somme de deux fichiers ou que vous souhaitez répertorier les pénalités de drapeau d'interprète séparément), assurez-vous que le score réel est le dernier numéro de l'en-tête:
## Perl, 43 + 2 (-p flag) = 45 bytes
Vous pouvez également faire du nom de la langue un lien qui apparaîtra ensuite dans l'extrait de code:
## [><>](http://esolangs.org/wiki/Fish), 121 bytes
_
pour désigner les éléments négatifs. :(