Biorąc pod uwagę listę plasterków łańcucha, wypisz oryginalny łańcuch.
Każdy wycinek zostanie podany jako lista o długości 2, zawierająca pozycję początkową wycinka (liczba całkowita ≥0) i sam wycinek. Jeśli twój język nie obsługuje tablic dowolnych typów, możesz również wziąć to jako strukturę lub podobne, lub po prostu ciąg składający się z liczby, spacji, a następnie plastra.
Kolejność dwóch elementów każdego plasterka zależy od Ciebie. Ponadto, jeśli zdecydujesz się użyć reprezentacji wycinków jako tablicy o długości 2, możesz wprowadzić dane jako tablicę 2-wymiarową lub pojedynczą płaską. Wreszcie, liczba całkowita reprezentująca pozycję może być albo indeksowana zerowo, albo indeksowana jednokrotnie (wszystkie przykłady tutaj są indeksowane zerowo).
Dane wejściowe zawsze będą wystarczające do określenia całego łańcucha do najwyższej podanej pozycji. Oznacza to, że nie będzie „dziur” ani „luk”. Dlatego wynik nie może zawierać żadnych dodatkowych znaków końcowych ani wiodących (innych niż typowy opcjonalny znak nowej linii). Dane wejściowe zawsze będą spójne i żadne plasterki nie będą ze sobą sprzeczne.
Ponieważ jest to code-golf , wygra najkrótszy kod w bajtach.
Przypadki testowe:
In Out
-----------------------------------------------------------
[[2, "CG"], [0, "PP"], [1, "PC"]] | PPCG
[[0, "foobarbaz"]] | foobarbaz
[[0, "foobar"], [6, "baz"]] | foobarbaz
[[2, "ob"], [5, "rba"], [0, "fooba"], [8, "z"]] | foobarbaz
[[0, "fo"], [0, "fooba"], [0, "foobarbaz"]] | foobarbaz
Odpowiedzi:
Galaretka,
109 bajtówWypróbuj online!
Jak to działa
źródło
Python 2, 49 bajtów
Najpierw wyrównuje ciągi, wypełniając ich odsunięcia spacjami (pokazanymi dla podkreślenia jako podkreślenia)
Następnie, do zastosowań
map
dozip
i podejmuje maksymalnie każdej kolumny, która pomija mniejsze wartości przestrzenie (najmniejsza do drukowania znaków) iNone
S, jeżeli niektóre łańcuchy zbyt krótki.Wreszcie
''.join
do ciągu przy użyciu[2::5]
lewy.źródło
Perl, 25
Dodano +2 do
-lp
Uzyskaj dane wejściowe z STDIN, np
(Zamknij za pomocą ^ D lub ^ Z lub cokolwiek, co zamyka STDIN w twoim systemie)
slices.pl
:źródło
v0
oszczędziłby ci dwóch bajtów (ponieważ możesz również pominąć spację przedx
)? Edycja: Hm, nie, kiedy spróbowałem, dostałemCan't locate object method "x" via package "2"
(lub jakikolwiek numer jest w mojej pierwszej linii) z jakiegoś powodu.JavaScript (ES6), 61 bajtów
Edycja: Zapisano 4 bajty dzięki @ edc65.
źródło
Haskell, 57 bajtów
Przykład użycia:
Jak to działa: ułóż pary
(index,letter)
dla każdej litery każdego plasterka, połącz w jedną listę, usuń duplikaty, sortuj według indeksu, usuń indeksy.źródło
MATL , 15 bajtów
Działa z bieżącą wersją języka / kompilatora (13.0.0)
Dane wejściowe obejmują nawiasy klamrowe i pojedyncze cudzysłowy. (Nawiasy klamrowe w MATLAB / MATL definiują tablice komórek , które są listami, które mogą zawierać zawartość dowolnych, ewentualnie różnych typów). Przypadki testowe są zatem:
Wypróbuj online!
źródło
DUP , 14 bajtów
Try it here.
Anonimowa lambda. Stosowanie:
UWAGA: DUP tak naprawdę nie ma tablic, więc mam nadzieję, że ten format wejściowy jest w porządku.
Wyjaśnienie
Cóż, rozumienie strun przez DUP jest ... interesujące. Ciągi są przechowywane jako seria zmiennych liczbowych, z których każda zawiera kod znaków z ciągu. Coś jak
2"CG"
działa jak wypychanie 2 na stos, a następnie tworzenie łańcucha z indeksem od 2.Ponieważ te indeksy są naprawdę zmiennymi, można je zastąpić. Tak naprawdę robi to wejście: przesłonięcie! Spróbuj nacisnąć Stepna stronie tłumacza, aby uzyskać lepszy pomysł. Następnie otrzymujemy nieskomplikowany ciąg.
W tym momencie pojawia się wyjście.
źródło
PHP, 146 znaków
Uwaga: Sprawdzanie danych wprowadzanych przez użytkowników jest zawsze dobrym pomysłem.
Grał w golfa
Nie golfił
Widzisz, że właśnie piszę dane wejściowe do tablicy z określonym kluczem, który ma każdy znak, a następnie wypisuję wszystko.
Testy
php unslice.php '[[0, "foobar"], [6, "baz"]]'
-> foobarbazphp unslice.php '[[2, "CG"], [0, "PP"], [1, "PC"]]'
-> PPCGphp shorten.php unslice.php
-> Skrócony skrypt o 107 znaków. :REźródło
$a[$f]=$c;$f++;
Nie znam PHP, ale nie może tak być$a[$f++]=c;
?Poważnie, 48 bajtów
Poważnie jest poważnie zły w manipulowaniu strunami.
Wypróbuj online!
Wyjaśnienie:
Mapa 1:
Mapa 2:
Mapa 3:
Mapa 4:
W skrócie, ten program tworzy ciąg ze
n
spacjami, gdzien
minimalna długość może być oparta na danych wejściowych. Określa indeks w ciągu wynikowym każdego znaku w każdym wycinku i ustawia znak w ciągu wynikowym pod tym indeksem na znak.źródło
Python, 91 bajtów.
Zaoszczędzono 1 bajt dzięki cat.
To jest trochę długie. Za chwilę będę grać w golfa.
źródło
Python,
119115 bajtówPrzypadki testowe
źródło
CJam, 26 bajtów
Wypróbuj online! . Pobiera dane wejściowe w formie
[["CG"2]["PP"0]["PC"1]]
.Wyjaśnienie:
źródło
R 181 bajtów
Z podziałami linii:
Działa w R Gui (jeden wiersz lub pozyskiwanie w przypadku wielu wierszy), ale nie w ideone, przykład:
Uwaga na temat metody wprowadzania:
Zakładam, że stosuję się do tej części specyfikacji przy tego rodzaju danych wejściowych, można je podawać w wielu wierszach, nie ma to wpływu, o ile jest pusta linia kończąca dane wejściowe.
Myślę, że 2 znaki można zapisać, usuwając +1 i używając indeksowania opartego na 1, ale zacząłem od wprowadzania wyzwania.
źródło
C, 110 bajtów
Ten program pobiera plasterek po indeksie w jednym wierszu danych wejściowych.
Nie golfowany:
Przetestuj na ideone.com
źródło
Lua, 113 bajtów
To prawdopodobnie najbardziej bezpieczny kod, który napisałem. Pomysł jest prosty. Użytkownik wprowadzi tablicę sformatowaną w ten sposób:
{{1, "1"}, {3, "3"}, {2, "2"}}
a następnie tabela zostanie posortowana według pierwszego indeksu i wydrukowany zostanie drugi indeks.źródło