Czy nie nienawidzisz go, gdy chcesz skopiować i wkleić listę liczb (wektor, tablica ...) z jednego programu do drugiego, ale format, w którym masz numery, nie odpowiada formatowi, w którym go potrzebujesz ?
Na przykład w MATLAB możesz mieć listę rozdzieloną spacjami, taką jak ta:
[1 2 3 4 5] (you can also have it comma separated, but that's not the point)
W Pythonie trzeba wstawić przecinki, aby ta lista była prawidłowym wejściem, więc trzeba by ją przekonwertować
[1, 2, 3, 4, 5]
aby działało. W C ++ możesz chcieć czegoś takiego:
{16,2,77,29}
i tak dalej.
Aby uprościć wszystkim życie, utwórzmy konwerter list, który pobiera listę w dowolnym formacie * i wyświetla listę w innym określonym formacie.
Prawidłowe nawiasy kwadratowe to:
[list]
{list}
(list)
<list>
list (no surrounding brackets)
Prawidłowe ograniczniki to:
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.
Uwaga: dane wejściowe mogą zawierać dowolną liczbę spacji między liczbami, ale dane wyjściowe mogą mieć zerowe spacje (jeśli ,
lub ;
są używane jako separator) lub pojedyncze spacje (jeśli są rozdzielane spacjami).
Oprócz listy wejściowej pojawi się ciąg (lub dwa znaki) określający format wyjściowy. Ciąg formatu zostaną najpierw typ uchwyt otwierania (tylko), [
, (
, <
, {
lub (ostatni z nich jest pojedyncza przestrzeń stosowany, gdy nie ma otaczające wspornik). Po typie nawiasu następuje typ separatora
,
, ;
lub (ostatni to spacja). Dwa znaki formatu wejściowego należy traktować jako pojedynczy argument (ciąg znaków lub dwa kolejne znaki) w kolejności opisanej powyżej.
Kilka przykładów ciągów formatu:
[, <-- Output format: [a,b,c]
{; <-- Output format: {a;b;c}
<-- Two spaces, output list has format: a b c
Zasady:
- Dane wyjściowe nie mogą mieć spacji wiodących
- Dane wyjściowe mogą zawierać końcowe spacje i nowy wiersz
- Wynikiem powinna być tylko lista liczb, a nie
ans =
podobna
- Wynikiem powinna być tylko lista liczb, a nie
- Dane wejściowe to lista liczb całkowitych lub dziesiętnych (zarówno dodatnich, jak i ujemnych (i zero)) oraz ciąg dwóch znaków
- Jeśli dane wejściowe składają się tylko z liczb całkowitych, lista wyjściowa powinna zawierać tylko liczby całkowite. Jeśli lista wejściowa składa się z liczb całkowitych i liczb dziesiętnych, wszystkie liczby wyjściowe mogą być liczbami dziesiętnymi. (Opcjonalne jest zachowanie liczb całkowitych jako liczb całkowitych)
- Maksymalna liczba cyfr po przecinku, która musi być obsługiwana, to 3.
- Dane wejściowe będą dwoma argumentami. Oznacza to, że liczby są w jednym argumencie, a ciąg formatu jest pojedynczym argumentem.
- Kod może być programem lub funkcją
- Dane wejściowe mogą być argumentem funkcji lub STDIN
Kilka przykładów:
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]
Najkrótszy kod w bajtach wygrywa. Jak zawsze zwycięzca zostanie wybrany tydzień po opublikowaniu wyzwania. Odpowiedzi zamieszczone później mogą nadal wygrywać, jeśli są krótsze niż obecny zwycięzca.
Tabela liderów
Fragment kodu na dole tego postu generuje katalog na podstawie odpowiedzi a) jako listy najkrótszych rozwiązań dla każdego języka oraz b) jako ogólnej tabeli wyników.
Aby upewnić się, że twoja odpowiedź się pojawi, zacznij od nagłówka, korzystając z następującego szablonu Markdown:
## Language Name, N bytes
gdzie N
jest rozmiar twojego zgłoszenia. Jeśli poprawić swój wynik, to może zachować stare porachunki w nagłówku, uderzając je przez. Na przykład:
## Ruby, <s>104</s> <s>101</s> 96 bytes
Jeśli chcesz umieścić w nagłówku wiele liczb (np. Ponieważ twój wynik jest sumą dwóch plików lub chcesz osobno wymienić kary za flagi tłumacza), upewnij się, że rzeczywisty wynik jest ostatnią liczbą w nagłówku:
## Perl, 43 + 2 (-p flag) = 45 bytes
Możesz także ustawić nazwę języka jako link, który pojawi się we fragmencie:
## [><>](http://esolangs.org/wiki/Fish), 121 bytes
_
do oznaczania elementów ujemnych. :(