Non odiarlo quando vuoi copiare e incollare un elenco di numeri (vettore, array ...), da un programma a un altro, ma il formato in cui hai i numeri non corrisponde al formato in cui ti serve ?
Ad esempio, in MATLAB potresti avere un elenco separato da spazi come questo:
[1 2 3 4 5] (you can also have it comma separated, but that's not the point)
In Python dovresti inserire delle virgole per rendere quell'elenco un input valido, quindi dovresti convertirlo in
[1, 2, 3, 4, 5]
per farlo funzionare. In C ++ potresti voler qualcosa di simile:
{16,2,77,29}
e così via.
Per semplificare la vita di tutti, creiamo un convertitore di elenchi, che prende un elenco in qualsiasi formato * e genera un elenco in un altro formato specificato.
Le parentesi valide sono:
[list]
{list}
(list)
<list>
list (no surrounding brackets)
I delimitatori validi sono:
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.
Nota, l'input può avere qualsiasi numero di spazi tra i numeri, ma l'output può scegliere di avere zero spazi (se ,
o ;
è usato come delimitatore) o un singolo spazio (se è delimitato da spazi).
Oltre all'elenco di input, ci sarà una stringa (o due caratteri) che definisce il formato di output. La stringa di formato sarà inizialmente il tipo parentesi di apertura (solo), [
, (
, <
, {
o (l'ultimo è un singolo spazio utilizzato quando non c'è staffa circostante). Il tipo di parentesi sarà seguito dal tipo di delimitatore
,
, ;
oppure (l'ultimo è un singolo spazio). I due caratteri del formato di input devono essere considerati come un singolo argomento (stringa o due caratteri consecutivi) nell'ordine sopra descritto.
Alcuni esempi di stringhe di formato:
[, <-- Output format: [a,b,c]
{; <-- Output format: {a;b;c}
<-- Two spaces, output list has format: a b c
Regole:
- L'output non può avere spazi iniziali
- L'output può avere spazi finali e una nuova riga
- L'output dovrebbe essere solo l'elenco di numeri, non
ans =
simili
- L'output dovrebbe essere solo l'elenco di numeri, non
- L'input sarà un elenco di numeri interi o decimali (sia positivi che negativi (e zero)) e una stringa di due caratteri
- Se l'input è costituito solo da numeri interi, l'elenco di output deve contenere solo numeri interi. Se l'elenco di input è composto da numeri interi e decimali, tutti i numeri di output possono essere numeri decimali. (È facoltativo mantenere gli interi come numeri interi)
- Il numero massimo di cifre dopo il punto decimale che deve essere supportato è 3.
- L'input sarà di due argomenti. Vale a dire i numeri sono in un argomento e la stringa di formato è un singolo argomento.
- Il codice può essere un programma o una funzione
- L'input può essere argomento della funzione o STDIN
Qualche esempio:
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]
Vince il codice più breve in byte. Come sempre, il vincitore verrà selezionato una settimana dal giorno in cui è stata pubblicata la sfida. Le risposte postate successivamente possono comunque vincere se sono più brevi del vincitore attuale.
Classifica
Lo snippet di stack nella parte inferiore di questo post genera il catalogo dalle risposte a) come elenco della soluzione più breve per lingua eb) come classifica generale.
Per assicurarti che la tua risposta venga visualizzata, ti preghiamo di iniziare la risposta con un titolo, utilizzando il seguente modello Markdown:
## Language Name, N bytes
dov'è N
la dimensione del tuo invio. Se si migliora il punteggio, è possibile mantenere i vecchi punteggi nel titolo, colpendoli. Per esempio:
## Ruby, <s>104</s> <s>101</s> 96 bytes
Se si desidera includere più numeri nell'intestazione (ad es. Perché il punteggio è la somma di due file o si desidera elencare separatamente le penalità del flag dell'interprete), assicurarsi che il punteggio effettivo sia l' ultimo numero nell'intestazione:
## Perl, 43 + 2 (-p flag) = 45 bytes
Puoi anche rendere il nome della lingua un collegamento che verrà quindi visualizzato nello snippet:
## [><>](http://esolangs.org/wiki/Fish), 121 bytes
_
per indicare elementi negativi. :(