Aby „przesunąć” na kilka n
miejsc, wykonaj następujące czynności:
- Usuń ostatnie
n
cyfry - Dodaj
n
kopie pierwszej cyfry na początku numeru
Na przykład, aby przesunąć liczbę o 31415
trzy miejsca, wyjmij trzy ostatnie cyfry, aby uzyskać 31
, a następnie dodaj jeszcze trzy kopie pierwszej cyfry 3
, do końca, dając 33331
.
Jeśli liczba jest ujemna, cyfry należy pobierać z lewej strony, a pierwszą cyfrę należy „wypełnić” z prawej strony. Na przykład ciąg 31415
przesunięty o -3 miejsca daje 15555
.
Jeśli liczba wynosi 0, nie należy wprowadzać żadnych zmian.
Jeśli przesunięcie jest dłuższe niż długość programu, wówczas wypełnione cyfry mogą zacząć być usuwane. Oznacza to, że jeśli podana liczba jest większa niż długość łańcucha, dalsze zmiany nie zostaną wprowadzone, gdy cały łańcuch stanie się pojedynczą cyfrą.
Wyzwanie
Biorąc pod uwagę dwie liczby, n
i s
powrót n
przesunięty o s
miejsca.
Przypadki testowe
n, s -> result
7243, 1 -> 7724
452, -1 -> 522
12, 1 -> 11
153, 4 -> 111
To jest golf golfowy , więc wygrywa najkrótsze prawidłowe zgłoszenie (mierzone w bajtach).
Odpowiedzi:
APL (Dyalog) , 32 bajty
Anonimowa funkcja, która przyjmuje sift jako lewy argument, a liczbę (jako ciąg) jako prawy argument.
Wypróbuj online!
{
anonimowa funkcja gdzie ⍺ i ⍵ są argumentami lewymi i prawymi|⍺
wartość bezwzględna zmianya←
Przechowywać w A⋄
następnie⌽⍵
odwróć numer⊃
wybierz pierwszą (tj. ostatnią) cyfręa⍴
R eshape do długości A⍵,
wstaw numer(
…),
Wstaw następujące:⊃⍵
pierwsza cyfraa⍴
R eshape do długości A(
…)↓
Upuść następującą liczbę znaków:a-⍺
zaminus przesunięcie(
…)↑
Weź następującą liczbę znaków:≢⍵
długość oryginalnego numeruźródło
Python 2 , 50 bajtów
Wypróbuj online!
źródło
Haskell, 69 bajtów
Pobiera liczbę jako ciąg znaków. Wypróbuj online!
Jak to działa:
źródło
MATL , 12 bajtów
Wejściami są: liczba, która ma być przesunięta jako ciąg; ilość przesunięć jako liczba.
Wypróbuj online! Lub sprawdź wszystkie przypadki testowe .
Dane wejściowe Consisder
'452
i'-1'
.źródło
J, 37 bajtów
To była jedna z tych sytuacji w J, w których wyraźny czasownik wydawał się właściwym (jedynym?) Wyborem, ale chciałbym wiedzieć, czy istnieje milczące przepisanie tego:
Wbudowany czasownik J umożliwia konfigurację znaku „fill”:
Logika określania, czy użyć pierwszego czy ostatniego znaku jako znaku wypełnienia, jest prosta
Wypróbuj online!
źródło
J , 23 bajty
Dane wejściowe n i dane wyjściowe są łańcuchami zawierającymi liczby.
Wypróbuj online!
Wyjaśnienie
źródło
Siatkówka , 61 bajtów
Wypróbuj online!
źródło
05AB1E , 16 bajtów
Wypróbuj online!
Wyjaśnienie
źródło
Python 2 , 87 bajtów
Wypróbuj online!
Pobiera liczbę jako ciąg, a przesunięcie jako liczbę całkowitą. Zwraca ciąg.
Próbowałem osadzić odwrócenie w funkcji zamiast wykonywać rekurencyjne wywołanie, ale nie mogłem tego zrobić poprawnie.
źródło
Python 3 , 73 bajty
Wypróbuj online!
źródło
Haskell , 108 bajtów
No cóż, poszło gorzej niż myślałem ...
Wypróbuj online!
Nie golfił
źródło
Clojure, 121 bajtów
Ojej, paskudne radzenie sobie również z negatywnymi danymi wejściowymi.
źródło
Pyth, 28 bajtów
Wypróbuj online lub przetestuj niektóre dane wejściowe
Wyjaśnienie
źródło
05AB1E , 33 bajty
Wypróbuj online!
05AB1E nie jest tak gorący dzięki warunkom.
źródło
JavaScript, 80 bajtów
Pobiera dane wejściowe jako ciąg znaków reprezentujący liczbę i liczbową wartość „przesunięcia”. Zwraca ciąg.
Test Snippet
źródło