Wprowadzenie
Zobaczmy następujący ciąg:
ABCDEFGHIJKLMNOP
Jeśli zamienimy końce łańcucha , które są następujące:
ABCDEFGHIJKLMNOP
^^ ^^
Otrzymujemy następujący wynik:
BACDEFGHIJKLMNPO
Następnie usuwamy końce łańcucha, którymi w tym przypadku są B
i O
. Wynik to:
ACDEFGHIJKLMNP
Jeśli powtórzymy ten proces, otrzymamy następującą listę:
N Result
2 ADEFGHIJKLMP
3 AEFGHIJKLP
4 AFGHIJKP
5 AGHIJP
6 AHIP
7 AP
Widać, że dla N = 5 wynik jest następujący AGHIJP
. Przy N = 7 długość łańcucha jest mniejsza niż 3 , więc N> 7 jest w tym przypadku uważane za nieprawidłowe .
Zadanie
Biorąc pod uwagę ciąg S o długości co najmniej 4 i liczbie powtórzeń N > 0, wypisz wynik końcowy. Możesz założyć, że N jest zawsze ważne .
Przypadki testowe
Input > Output
N = 3, S = ABCDEFGHIJKLMNOP > AEFGHIJKLP
N = 1, S = Hello > Hlo
N = 2, S = 123321 > 11
To jest golf golfowy , więc wygrywanie z najmniejszą ilością bajtów wygrywa! Dla uproszczenia można założyć, że ciąg będzie zawierał tylko znaki alfanumeryczne .
'
jak licząca postać? Na przykład''123321
:?N
, ale czy może być ciągiem z cudzysłowami? To znaczy doN=3
wzięcia'111'
(w przeciwieństwie do111
)Odpowiedzi:
MATL , 8
91213bajtówDane wejściowe to: najpierw
N
jako ciąg jednoargumentowy z cudzysłowami (dozwolone przez wyzwanie); drugiS
jako ciąg znaków z cudzysłowami (domyślnie dozwolone są cudzysłowy w ciągach znaków); oddzielone podziałem wiersza.Działa to poprzez odwrócenie łańcucha, usunięcie drugiego elementu i powtórzenie łącznie
2*N
.Wypróbuj online!
źródło
Siatkówka ,
4420 bajtówPrzekreślone 44 jest nadal regularne 44 :(
Przyjmuje dane wejściowe w następującym formacie (jednokrotnie liczący:)
'
:{number of repeats}{string}
Na przykład:
'''''''ABCDEFGHIJKLMNOP
Nie ma spacji między liczbą powtórzeń a łańcuchem.
Dzięki @ MartinBüttner za zgolenie 24 bajtów!
Wypróbuj online!
źródło
Python 2, 31 bajtów
Myślę, że to działa?
źródło
Mathematica, 29 bajtów
Moja pierwsza odpowiedź!
Sedno bezobsługowej matematyki! Wprowadzane funkcje to lista (znaków lub cokolwiek) i liczba.
źródło
Labirynt , 40 bajtów
Po wprowadzeniu
N
następuje ciąg oddzielony dowolnym znakiem nienumerycznym.Wypróbuj online!
Zostało to napisane we współpracy ze Sp3000 (co oznacza, że nie mogłem sobie pozwolić na wymyślenie algorytmu, więc zaczął nad nim pracować, wymyślił rozwiązanie 118-bajtowe, ale nie przeszkadzało mu to w golfa, więc grałem w golfa. .. tak dla pracy zespołowej).
Wyjaśnienie
Zwykły podkład SP (jak zwykle nieznacznie zmodyfikowany):
<>^v
którego cyklicznie przesuwa się wiersz lub kolumna lub siatka."
nie ma operacji.No to ruszamy.
Kod zaczyna się od
<
, czyli sztuczki golfowej, której użyłem kilka razy, kiedy zaczynałem od długiego kawałka kodu liniowego. Przesuwa cyklicznie pierwszy rząd w lewo, podając adres IP , więc źródło wygląda następująco:Ale teraz IP nie może się nigdzie przenieść, więc wykonuje to
<
ponownie. Trwa to do momentu osiągnięcia tego stanu:W tym momencie adres IP może opuścić komórkę i rozpocząć wykonywanie drugiej linii, zaczynając od
?
. Oto poniższy kod liniowy:IP wchodzi teraz do tego pokoju 3x2, który jest właściwie dwiema ściśle ściśniętymi (nakładającymi się) 2x2 pętlami zgodnie z ruchem wskazówek zegara. Pierwsza pętla odczytuje i odrzuca
N-1
znaki ze STDIN.Teraz wchodzimy do drugiej pętli, która odczytuje resztę ciągu wejściowego. Możemy wykryć EOF, ponieważ w takim przypadku
,
powróci-1
, skręcając adres IP w lewo.Ta redukcja nie jest w rzeczywistości przydatna, ale możemy ją później cofnąć za darmo, a tutaj pozwala nam nakładać się na dwie pętle.
Jeśli weźmiemy dane
5 ABCDEFGHIJKLMNOP
wejściowe jako przykład, stos wygląda następująco:Zauważ, że faktycznie odpowiadają one wejściowym znakom
FGHIJKLMNOP
(ponieważ je zmniejszyliśmy) i że tak naprawdę nie chcemy wydrukować pierwszego z nich (tylko odrzuciliśmyN-1
znaki, ale chcemy pominąćN
).Teraz jest krótki bit liniowy, który przygotowuje stos do następnej pętli:
Stosy wyglądają teraz następująco:
Wchodzimy w kolejną pętlę 2x2 zgodnie z ruchem wskazówek zegara. To odrzuca najlepsze
N
postacie z głównego stosu:Kiedy wychodzimy z pętli,
=
zamieniamy ją ponownie0
i ostatni znak ciągu wejściowego. Teraz stosy wyglądają tak:Chcemy wydrukować zawartość głównego stosu (oprócz dolnego elementu i wszystkich z przyrostem o 1), od lewej . Oznacza to, że musimy przenieść go na stos pomocniczy. Tak właśnie robi następna pętla 2x2 (zgodnie z ruchem wskazówek zegara):
Stosy teraz:
Pierwszy z nich (ten, którego nie chcemy drukować) przenosimy z powrotem do głównego stosu
{
. A teraz wchodzimy w końcową pętlę 2x2 ( przeciwnie do ruchu wskazówek zegara ), która wypisuje resztę:Na koniec kończymy program za pomocą
@
.źródło
JavaScript (ES6), 39 bajtów
Okazuje się, że właśnie wymyśliłem odpowiedź @ Sp3000.
źródło
Galaretka, 8 bajtów
Wypróbuj online!
Jak to działa
źródło
Galaretka , 10 bajtów
Wprowadź liczbę za pomocą STDIN, a ciąg znaków za pomocą argumentów wiersza poleceń . Dzięki @Dennis za wiele wskazówek / pomoc w uruchomieniu tego (Jelly wciąż mi umyka).
Wypróbuj online!
źródło
ḢṪḊṖƓ¡
wszystkie używają więcej niż 1 bajt), czy używasz jakiegoś rodzaju tabeli znaków dla czytelności?Pyth, 13 bajtów
Wyjaśnienie:
Wypróbuj tutaj
źródło
Vitsy,
12 lat9 (kod) + 1 (nowy wiersz dla deklaracji funkcji) = 10 bajtów\ o /
Oczekuje danych wejściowych na stosie jako ciągu, po którym następuje liczba.
Możesz zadzwonić za pomocą:
Jest to funkcja, która pozostawia wynikowy ciąg znaków na stosie. Podałem go jako program w łączu TryItOnline.
TryItOnline!
źródło
Python 2,
4948 bajtówWypróbuj tutaj z walizkami testowymi!
Proste rozwiązanie rekurencyjne. Usuwa drugi i ostatni drugi element z ciągu wejściowego i wywołuje się z tym i
n-1
don=0
.edit: Czuję się trochę głupio, patrząc na inne rozwiązanie python . Chyba za bardzo lubię rekurencję ...
źródło
C, 96 bajtów
Bez golfa
źródło
Ruby, 29 bajtów
Bardzo proste.
~
trick skradziony z odpowiedzi Sp , co oszczędza bajts[n+1..-2-n]
. (Działa, ponieważ~n
jest-1-n
w uzupełnieniu do dwóch, a następnie...
jest wyłącznym zakresem).źródło
Perl,
3632 + 1 = 33 bajtyWymaga
-p
flagi i pobiera dane wejściowe w dwóch wierszach z liczbą iteracji na końcu:Nie golfowany?
źródło
CJam, 12 bajtów
Wypróbuj online!
Jak to działa
źródło
Oktawa, 28 bajtów
Indeksuj ciąg, pomijając
S(2:N+1)
iS(end-N:end-1)
.Próbka uruchomiona na ideone .
źródło
Rdza, 135 bajtów
Cóż, to dość okropna długość.
Dość wydrukowane:
Możesz sprowadzić go do 104 bajtów, jeśli zezwolimy na bajtowanie zamiast odpowiednich ciągów.
Dość wydrukowane:
Ciekawe, czy ktoś może zrobić lepiej.
źródło
mSL - 137 bajtów
Wyjaśnienie:
%l = $len($1)
otrzyma długość ciągu wejściowego i zapisze go w zmiennej o nazwie l$right(<input>,<length>)
i$left(<input>,<length>
może być użyty do zwrócenia odpowiednio lewej lub prawej części oryginalnej ciągu. $ left zawsze zwraca tekst zaczynający się od bardzo lewej strony, podczas gdy $ right zawsze zwraca tekst zaczynający się od prawej strony. Jeśli podana długość jest liczbą ujemną, $ left i $ right zwracają cały tekst minus tyle znaków z każdej strony.$mid(<string>,<start>,[length])
służy do uzyskania podciągu ze środka łańcucha. Start to początek podciągu od lewej. Wartość ujemna oznacza początek od prawej. W obu przypadkach można określić opcjonalną długość. Użycie ujemnej długości pozwala usunąć tyle znaków z końca. Użyłem go więc do odzyskania drugiego znaku i drugiego ostatniego znaku przy użyciu długości ciągu wejściowego.$calc(<input>)
służy do wykonywania obliczeń matematycznychźródło
Jak dotąd język bez tytułu (tak nowy niekonkurencyjny), 9 bajtów
Możesz znaleźć kod źródłowy tutaj , język jest całkowicie niestabilny (pierwsze wyzwanie testowe), więc nie spodziewaj się, że będzie działał w przyszłości (zatwierdzenie 7)
Jest to język oparty na stosie z funkcjami, które dodają i usuwają obiekty ze stosu. Obecnie dostępne są 2 polecenia manipulacji na stosie:
D
(zduplikuj górę stosu N razy) iR
(obróć górne N elementów na stosie)Wyjaśnienie:
źródło
CJam, 14 bajtów
Sprawdź to tutaj.
Wyjaśnienie
źródło
Vim, 27 bajtów
Dane wejściowe powinny mieć postać
STRING N
w pierwszym wierszu bez innych znaków.Wyjaśnienie:
źródło
Brainfuck, 130 bajtów
Mój pierwszy wpis PPCG!
Oczywiście nie wygra, ale hej.
Pobiera dane wejściowe takie jak: 4ABCDEFGHIJKL, przy czym pierwszym znakiem jest N.
Przetestuj to na tym wspaniałej stronie.
Ograniczone do N mniejszej lub równej 9, ponieważ liczby dwucyfrowe stanowią ból w tyłku.
EDYCJA: Zassałem go i dodałem obsługę dwucyfrowych liczb. Pad z zerem dla pojedynczych cyfr.
źródło
Perl, 27 bajtów
Uwzględnij +1 dla
-p
Uruchom jako
perl -p sdr.pl
Dane wejściowe podane na STDIN, pierwszy wiersz ciągu, drugi wiersz liczenia Zakłada, że ciąg zawiera tylko znaki „słowo”
sdr.pl
:źródło
PHP, 60 bajtów
To rozwiązanie iteracyjnie ustawia znaki z ciągu wejściowego na pusty ciąg według indeksu. Manipuluję bezpośrednio łańcuchem wejściowym, aby zapobiec długiemu
return
.Zasadniczo w pamięci
$w
wygląda to tak po zakończeniu:Uruchom tak:
źródło
<?for(;$I;)$W[$I--]=$W[strlen($W)-$I-2]="";echo$W;
. Oczekuje wartości na klawiszach,W
aI
ponad POST / GET / COOKIE ... Przykładem może byćhttp://example.com/a.php?W=MyString&I=5
register globals
już wymagają . Dziękuję za sugestię :)Pylony , 16 bajtów.
Jak to działa:
źródło
CJam, 15 bajtów
Jestem pewien, że można dalej grać w golfa ...
źródło
Jolf, 13 bajtów
Tłumaczenie odpowiedzi JavaScript.
Wyjaśnienie:
Wypróbuj tutaj!
Bardziej interesująca wersja po pytaniu:
źródło
Poważnie, 17 bajtów
Pobiera dane wejściowe jako
s \n n
.Wypróbuj online!
Wyjaśnienie:
źródło
C #, 129 bajtów
Ponieważ w zasadzie pomijamy 1 i usuwamy N i odwrócony scenariusz
bez golfa
źródło
Java, 144 bajty
źródło