Biorąc pod uwagę liczbę całkowitą k i blok tekstu lub tablicę 2d, że wewnętrzne tablice mogą mieć nierówne długości (które przypominają blok tekstu), obróć każdy znak lub element w k- tej kolumnie w górę lub w dół do następnej pozycji to istnieje.
Przykład
Obróć 20. kolumnę następującego tekstu (na podstawie 1):
A line with more than k characters.
A longer line with more than k character.
A short line.
Rotate here: ------v--
This is long enough.
This is not enough.
Wrapping around to the first line.
Wydajność:
A line with more thtn k characters.
A longer line with aore than k character.
A short line.
Rotate here: ------m--
This is long enoughv
This is not enough.
Wrapping around to .he first line.
Obracanie k- tej kolumny tego samego wejścia, gdzie 35 < k <42 dałoby tekst wejściowy bez zmian.
Zasady
- Możesz użyć surowego tekstu, tablicy wierszy, 2d tablicy znaków lub dowolnego rozsądnego formatu do przedstawienia danych. Możesz także używać typów danych innych niż znaki.
- Liczba możliwych wartości typu danych elementów musi wynosić co najmniej 20, jeśli długość kodu zależy od tego, w przeciwnym razie co najmniej 2. Może to być podzbiór znaków lub innych wartości obsługiwanych w typie rodzimym.
- Spacje i wszelkiego rodzaju wartości zerowe są po prostu wartościami normalnymi, jeśli dopuścisz je na wejściu. Możesz także po prostu wykluczyć je w typie elementu.
- Zmiana reguły: możesz wstawiać krótsze tablice ogólną wartością domyślną (taką jak spacje), jeśli wolisz używać tablic o równej długości do przechowywania danych.
- k może być oparty na 0 lub na 1. Gwarantujemy, że znajduje się w najdłuższej linii na wejściu (co oznacza, że na wejściu znajduje się co najmniej jedna niepusta linia).
- Możesz wybrać, czy ma się obracać w górę, czy w dół.
- Albo po prostu obróć jedną pozycję, albo obróć n pozycji, gdzie n jest dodatnią liczbą całkowitą podaną na wejściu.
- Najkrótszy kod wygrywa.
źródło
n~¨⍨↓⍉⎕⌽@(≢¨)@⎕⍉↑⎕,¨⍨n←⊂⊂⍬
. Może mógłbyś dodać modded↑
↓
w swoim rozszerzeniu, aby pomóc w dalszym grze w golfa (ale nie jestem do końca pewien, jak przydatne są).C
iI
są zlokalizowane tak, aby nie zanieczyszczać:{~∘I¨⍨↓⍉⎕⌽@(~⊢∊I←⎕INSTANCES⊢∘C)@⎕⍉↑⎕,¨⍨⎕NEW⎕FIX I←C←':Class C' ':EndClass'}
Python 2 ,
11111010999989694 bajtówWypróbuj online!
Pobiera dane wejściowe jako listę wierszy i kolumny z indeksem 0 i zwraca listę ciągów znaków.
Kolumna jest obracana w górę 1.
-11 bajtów, dzięki Jo King
źródło
Java 8,
107106135107 bajtów+29 bajtów do naprawy błędu ..
0-indeksowane; obraca się w dół jak w przykładzie.
Wprowadzanie jako macierz znaków; modyfikuje macierz znaków zamiast zwracać nową, aby zapisać bajty.
Wypróbuj online.
Wyjaśnienie:
źródło
char p=m[0][k]
- jeśli nie, czy nie spowoduje to wyjątku? Dobra robota btw. Pokonujesz moją próbę C # z dużym marginesem :)n
k
n
int p=0,t;
p
m[i%s][k]=(char)(p<1?t:p)
Zsh ,
94 87 78 7469 bajtów-7 bajtów poprzez zamianę na arytmetyczną trójskładnikową, -9 bajtów poprzez zmianę znaku w miejscu (TIL), -4 bajtów poprzez wprowadzenie indeksu na standardowe wejście i ciągi jako argumenty, -5 bajtów przy użyciu łańcucha zamiast tablicy do przechowywania obracających się znaków.
Old Old Old OldWypróbuj online!Oto klucze do uruchomienia tej odpowiedzi:
$array[0]
lub$string[0]
jest zawsze pusty$array[n]
lub$string[n]
jest pusty, jeśli n jest większe niż długość tablicy / łańcuchaarray[i]=c
lubstring[i]=c
zastąpi element / znak.$[$#s<i?0:++j]
,j
jest nie zwiększane jeśli$#s<i
.W pierwotnej 94-bajtowej odpowiedzi pojawił się interesujący problem dotyczący
<<<
drukowania. Musiałem użyćecho
do obejścia tego:Powód tego można zobaczyć tutaj:
Ciągi tutaj są uruchamiane w podpowłokach, ponieważ są podawane jako stdin do innego programu. Jeśli nie podano żadnego programu, jest on domyślnie przekazany do
cat
. Możesz to zobaczyć za pomocą<<< $_
.<<< $ZSH_SUBSHELL
jest podobny doecho $ZSH_SUBSHELL | cat
. Ponieważ musimy zwiększaćj
, nie możemy znajdować się w podpowłoce.źródło
R , 62 bajty
Wypróbuj online!
Pobiera dane wejściowe jako wypełnioną spacjami macierz znaków. Obraca się w górę. Wszystko dzięki Kirill L. !
R , 74 bajty
Wypróbuj online!
To zgłoszenie wyprzedza limit linii wyściełanych.
Aliasy
substr
tutaj nie zadziała, ponieważ dzwonimysubstr
isubstr<-
na pierwszej linii.I / O jako lista linii bez wypełnienia; obraca się w górę.
źródło
L
w środowisku nadrzędnym. Jednak z przyjemnością zaktualizuję wypełnienie przestrzeni!C # (interaktywny kompilator Visual C #) , 82 bajty
Wypróbuj online!
Podziękowania dla @ASCIIO tylko za sugestię,
foreach
która doprowadziła do oszczędności 12 bajtów!-8 bajtów dzięki @someone!
-1 bajt dzięki @EmbodimentofIgnorance!
źródło
foreach
ponieważ jest w odwrotnej kolejności :(dynamic
do scalania deklaracji i zapisywania 2 bajtów (nigdy wcześniej tego nie widziałem!) Wypróbuj online!Rubinowy , 57 bajtów
Wypróbuj online!
Pobiera dane wejściowe jako tablicę wierszy
a
. Obraca tekst w dół o pozycję 0k
. Zwraca przez modyfikację wejściaa
.źródło
05AB1E , 21 bajtów
Zdecydowanie można jeszcze zagrać w golfa ..
0-indeksowane; wejście i wyjście zarówno jako lista ciągów.
Obraca się w dół jak w przykładzie, ale
<
można go zastąpić,>
aby obrócić w górę.Wypróbuj online (stopka dołącza do listy nowymi wierszami, usuń ją, aby zobaczyć rzeczywiste wyniki listy).
Wyjaśnienie:
źródło
K4 , 41 bajtów
Rozwiązanie:
Wyjaśnienie:
Nie wiem, czy ja czegoś brakuje ... 0 indeksu, obraca się (zmienić
1
się-1
za obrót w dół)źródło
Japt v2.0a0, 18 bajtów
Oparte na 0 z wejściem i wyjściem jako ciąg wielu linii. Obraca w górę o 1.
Musi być krótsza metoda!
Spróbuj
źródło
6
, twoja odpowiedź pominie miejsceline with
w pierwszej linii iRotate here
czwartej linii, podczas gdy większość pozostałych odpowiedzi również obróci tę przestrzeń.Galaretka , 16 bajtów
Dyadyczny link akceptujący listę linii (listy znaków nie zawierające znaków nowej linii) po lewej stronie i liczbę całkowitą po prawej stronie, która zwraca listę linii.
Wypróbuj online! (stopka dzieli się na nowe linie, wywołuje łącze i ponownie dołącza do nowych linii)
W jaki sposób?
źródło
perl 5 (
-p
), 75 bajtówk ma indeks 0, obróć w dół
TIO
źródło
Perl 6 ,
3833 bajtówModyfikuje tablicę w miejscu (reguły nie zabraniają)
Wypróbuj online!
źródło
JavaScript (Node.js) , 52 bajty
Wypróbuj online!
-7 bajtów dzięki Shaggy!
Nie widziałem jeszcze odpowiedzi JavaScript! Port mojej odpowiedzi w C #.
źródło
Węgiel drzewny ,
342821 bajtówWypróbuj online! Link jest do pełnej wersji kodu. Pobiera tablicę ciągów jako dane wejściowe. 0-indeksowane. Edycja: Teraz to
PeekDirection
naprawiono, mogę bezpośrednio nim manipulować. Wyjaśnienie:Wydrukuj ciągi wejściowe.
Przejdź na górę kolumny, aby ją obrócić.
Wyodrębnij komórki, które zostały wydrukowane.
Zastąp każdą wydrukowaną komórkę wartością poprzedniej komórki (cyklicznie). Dogodnie wartości komórek są odczytywane w czasie
PeekDirection
połączenia, więc fakt, żeMapCommand
połączenie zapisuje nowe wartości w komórkach, nie ma znaczenia.źródło
Pip
-rn
, 32 bajtyIndeksowane 0, obraca się w dół. Wypróbuj online!
Filtruje, aby znaleźć indeksy wszystkich wierszy, które są wystarczająco długie, aby uczestniczyć w rotacji. Następnie zapętla te rzędy, zamieniając odpowiedni znak w każdym rzędzie zmienną temp
s
. Ponowne odwiedzanie pierwszego wiersza na końcu ponownie zamienia wartość manekina.źródło
Galaretka , 19 bajtów
Wypróbuj online!
1-indeksowany. Obraca się w dół. Monadyczny link, który jako pierwszy argument przyjmuje wyściełaną prawą listę łańcuchów galaretki (listę list znaków), a k jako drugi. Spacje są zabronione na wejściu, z wyjątkiem poprawnego wypełniania, ale wszystkie inne znaki są dozwolone.
Jak zaimplementowano w TIO, stopka dzieli pojedynczy ciąg znaków na listę ciągów i wstawia go do prawej, ale jest to dla wygody; jak rozumiem, wynik tego kroku jest dozwolony dla głównego łącza zgodnie z regułami.
źródło
GFortran , 199 bajtów
-20 mniej więcej czytając ze standardowego wejścia, a nie pliku
-14 , używając niejawnych liczb całkowitych dla
i, k, n
-4 przez usunięcie spacji i
::
Wymaga od użytkownika wprowadzenia
k
in
pierwszego wiersza, w którymk
kolumna ma zostać obrócona, an
liczba wierszy tekstu. Kolejne dane wejściowe to wiersze tekstu do obrócenia. Pisanie tego było trudne! Fortran jest taki pedantyczny!źródło
T-SQL, 195 bajtów
Wypróbuj wersję online bez golfa
źródło