Inspirowane tym pytaniem StackOverflow .
Wejście:
Weźmiemy trzy dane wejściowe:
- Znak separatora
Ddo podziału - Znak
Imiędzy dwoma, z których ignorujemy znak ogranicznika (wiem, to brzmi niejasno, ale wyjaśnię to poniżej) - Sznurek
S
Wynik:
Lista / tablica zawierająca podciągi po podziale.
Przykład:
Input:
D = ','
I = '"'
S = '11020199,"Abc ",aduz,,444,bieb,dc,2 ,2222.00,whatever 5dc,222.22,22.00,"98,00","12,000,000",21-09-2018, 06:00,",-,"'
Output:
['11020199', 'Abc ', 'aduz', '', '444', 'bieb', 'dc', '2 ', '2222.00', 'whatever 5dc', '222.22', '22.00', '98,00', '12,000,000', '21-09-2018', ' 06:00', ',-,']
Czemu? Dzielenie na przecinkiem normalnie również podzielone 98,00, 12,000,000a ,-,na dwa / trzy kawałki. Ponieważ jednak mieszczą się one w Iznaku wejściowym, ignorujemy tutaj podział.
Zasady konkursu:
- Możesz założyć, że
Iw ciągu wejściowym zawsze będzie parzysta liczba znaków. - Możesz założyć, że znak
Izawsze będzie miałDobok niego (z wyjątkiem, gdy jest to pierwszy lub ostatni znak wejścia), który nadal można poprawnie podzielić. Więc nie będziesz mieć czegoś takiegoD = ','; I = '"'; S = 'a,b"c,d"e,f'ani niczego takiegoD=','; I='"'; S='a",b,"c'. - Wejście string
Smoże zawierać żadnego z alboDalboI. Jeśli nie zawieraD, wyprowadzamy listę z całym ciągiem wejściowym jako jedyny element. - Lista wyjście nie będzie zawierała znaku
Iwięcej, nawet gdy nie zawierałD(jak widać u"Abc "staje'Abc 'w powyższym przykładzie). - Możliwe, że podciąg
Izawiera tylkoD. Na przykład:D = ','; I = '"'; S = 'a,",",b,"c","d,e,,",f'spowodowałoby['a', ',', 'b', 'c', 'd,e,,', 'f']. - Możesz założyć, że
Dnigdy nie będzie na początku ani na końcuS, więc nie będziesz musiał radzić sobie z ciągnięciem / prowadzeniem pustych przedmiotów. - Kiedy wejście ma dwa sąsiadujące ze sobą
D, będziemy mieli pusty element. TjD = ','; I = '"'; S = 'a,"b,c",d,,e,"",f'skutkowałoby['a', 'b,c', 'd', '', 'e', '', 'f']. - Możesz założyć, że dane wejściowe i wyjściowe będą zawierały tylko ASCII do wydruku w zakresie
[32, 126](więc z wyłączeniem tabulatorów i znaków nowej linii). - Możesz również wypisywać wszystkie elementy rozdzielane znakami nowej linii zamiast zwracać / wypisywać listę / tablicę (szczególnie w tych językach, które nie mają list / tablic; np. Retina).
- Możesz zapisać listę w odwrotnej kolejności, jeśli zapisuje ona bajty. Nie możesz jednak wyprowadzać go w kolejności posortowanej lub „przetasowanej”. Więc
D = ','; I = 'n'; S = 'a,2,b,3,c'może być wyprowadzany jako[a,2,b,3,c]lub[c,3,b,2,a], ale nie jako[2,3,a,b,c,]lub[a,3,b,c,2]na przykład.
Główne zasady:
- To jest golf golfowy , więc wygrywa najkrótsza odpowiedź w bajtach.
Nie pozwól, aby języki kod-golfowe zniechęcały Cię do publikowania odpowiedzi w językach niekodujących golfa. Spróbuj znaleźć możliwie najkrótszą odpowiedź na „dowolny” język programowania. - Do odpowiedzi mają zastosowanie standardowe reguły , więc możesz używać STDIN / STDOUT, funkcji / metody z odpowiednimi parametrami i zwracanymi typami, pełnych programów. Twoja decyzja.
- Domyślne luki są zabronione.
- Jeśli to możliwe, dodaj link z testem kodu (tj. TIO ).
- Zalecane jest również dodanie wyjaśnienia do odpowiedzi.
Przypadki testowe:
Input:
D = ','; I = '"'; S = 'a,"b,c",d,,e,"",f'
Output:
['a', 'b,c', 'd', '', 'e', '', 'f']
Input:
D = ','; I = '"'; S = '11020199,"Abc ",aduz,,444,bieb,dc,2 ,2222.00,whatever 5dc,222.22,22.00,"98,00","12,000,000",21-09-2018, 06:00,",-,"'
Output:
['11020199', 'Abc ', 'aduz', '', '444', 'bieb', 'dc', '2 ', '2222.00', 'whatever 5dc', '222.22', '22.00', '98,00', '12,000,000', '21-09-2018', ' 06:00', ',-,']
Input:
D = ' '; I = ','; S = 'this is a test , to see if you understand it, or not , hmmm, I think I have too many commas , or not , perhaps..'
Output:
['this', 'is', 'a', 'test', ' to see if you understand it', 'or', 'not', ' hmmm', 'I', 'think', 'I', 'have', 'too', 'many', 'commas', ' or not ', 'perhaps..']
Input:
D = 'x'; I = 'y'; S = 'contains no lowercase X nor Y'
Output:
['contains no lowercase X nor Y']
Input:
D = '1'; I = '3'; S = '3589841973169139975105820974944592078316406286208948254211370679314'
Output: ['58984197', '69', '9975105820974944592078', '64062862089482542', '', '70679', '4']
Input:
D = ' '; I = 'S'; S = 'regular split on spaces'
Output:
['regular', 'split', 'on', 'spaces']
D = ','; I = '"'; S = ',"a,b",c,,d,""'właśnie zauważyłem. Zmodyfikuję nieco wyzwanie, aby puste przedmioty nie były możliwe na początku ani na końcu. Opierając się na doświadczeniach zarówno w Javie, jak i 05AB1E w przeszłości, wiem, jak frustrujące mogą być puste elementy po podziale, aby naprawić ręcznie, gdy język domyślnie nie robi tego poprawnie. Takie przypadki testowe powinny być nadal obsługiwane: D = ','; I = '"'; S = 'a,"b,c",d,,e→ ['a', 'b,c', 'd', '', 'e']z pustym elementem pomiędzy.
'1,"2,3"' -> ['2,3','1']
[a,b,c]i [c,b,a]mogą wyjść, ale [a,c,b]czy [b,a,c]nie na przykład.
D=','; I='"'; S='a",b,"c'czy może nawet prawidłowym wkładem?
"", "'ll remove all ", "")