Biorąc pod uwagę ciąg znaków, wypisz nowy ciąg z każdą literą przesuniętą w prawo przez odpowiedni indeks alfabetu.
Wszyscy wiemy, że A jest wolne, a Z to szybka litera. Oznacza to, że Z zostaje przesunięty w prawo o 25 pól, A w ogóle się nie zmienia, a B zostaje przesunięty o 1 pole.
Twój program musi obsługiwać tylko wielkie litery od AZ, bez żadnych innych znaków, bez białych znaków i interpunkcji.
Zauważ, że jeśli 2 lub więcej liter spadnie na to samo miejsce po przesunięciu, zostanie użyty najnowszy znak. (Przykład: BA
-> A
)
Przykłady
"AZ" -> "A Z"
"ABC" -> "A B C"
"ACE" -> "A C E"
"CBA" -> " A"
"HELLOWORLD" -> " E H DLL OLO R W"
Zasady
- To jest golf golfowy , więc wygrywa najkrótszy kod w dowolnym bajcie językowym.
Standardowe luki są zabronione.
Dane wejściowe należy odbierać jako ciąg.
- Możesz wydrukować wynik
stdout
lub zwrócić ciąg. - Pojedynczy pozostawia odstępy na końcu i / lub nowej linii.
- Możesz także używać małych liter jako danych wejściowych lub wyjściowych, ale używaj tylko obu liter.
Odpowiedzi:
Python 2 , 81 bajtów
Wypróbuj online!
źródło
MATL , 11 bajtów
Wypróbuj online! Lub sprawdź wszystkie przypadki testowe .
Wyjaśnienie
Indeksowanie MATL jest oparte na 1. Tutaj stosuje się tę sztuczkę golfową . Tego drugiego nie można użyć, ponieważ potrzebujemy pustego ciągu, a nie pustej tablicy numerycznej.
Rozważ dane wejściowe
'ACE'
jako przykład. Zawartość stosu pokazana jest od dołu do góry.źródło
(
: ładne wbudowaneǝ
? Ach, ale wydaje się, że nie jest to wektoryzacja drugiego / trzeciego wejścia0
s i wyświetla0
jako spację.R ,
14013312974 bajtówZaoszczędzono mnóstwo bajtów przenoszących podejście oparte na wartości ASCII, jak wszyscy inni. Smutne, że wcześniej o tym nie myślałem :(
Wypróbuj online!
oryginalna odpowiedź, 129 bajtów:
Wypróbuj online!
generuje zbyt długą listę
o
spacji, a następnie iterujes
, zastępując wartościo
poprawną wartością i aktualizującF
pozycję znaku znajdującego się najbardziej po prawej stronie. Następnie drukuje pierwszeF
elementyo
bez separatorów między nimi.źródło
05AB1E ,
2016 bajtów-4 bajty dzięki Emignie
Wypróbuj online!
źródło
ð₄×svyAuykN+ǝ}ðÜ
przynajmniej skrócić . Czy istnieje również gwarancja, że przesunięty ciąg wejściowy nie jest większy niż 1000 znaków? Jeśli nie,g₂+ð×
powinno działać.JavaScript (ES6), 81 bajtów
Trochę wywodzi się z niepełnej odpowiedzi Ricka Hitchcocka, ale okazało się, że jest zupełnie inna.
Umieszcza znaki w odpowiednim indeksie pustej tablicy, a następnie używa tablicy spread (
[...a]
), aby zamienić brakujące elementyundefined
, umożliwiającmap
zastąpienie pustych elementów spacją.Przypadki testowe
Pokaż fragment kodu
źródło
Perl 5, 42 bajtów
41 bajtów kodu + 1 dla
-p
. W\x1b
ów w kodzie są literalne znaki ewakuacyjne.Opiera się na sekwencjach ucieczki ANSI do pozycjonowania kursora i dlatego nie działa na TIO.
Stosowanie
źródło
-F
): Wypróbuj online!Java (OpenJDK 8) ,
207191189183178174173170 bajtówWypróbuj online!
źródło
Perl 5 , 41 + (
-F
) = 43 bajtyWypróbuj online!
Tylko dla @lynn
źródło
pieprzenie mózgu , 127 bajtów
Wypróbuj online!
Wyjaśnienie
źródło
Proton , 78 bajtów
Wypróbuj online!
69 bajtów przez przeniesienie rozwiązania Lynn:
x=>{t=[]i=65for k:x{t+=[' ']*26t[ord(k)-i]=k;i--}"".join(t).rstrip()}
źródło
Galaretka , 20 bajtów
Wypróbuj online!
źródło
Haskell ,
9088 bajtówWypróbuj online!
źródło
Japt , 23 bajty
Przetestuj online!
Pierwsza próba może być możliwa do ulepszenia ...
źródło
V
zamiast doU
: ethproductions.github.io/japt/…Wolfram Language (Mathematica) , 76 bajtów
Pobiera na wejściu listę znaków. To generuje pewne komunikaty o błędach, które można bezpiecznie zignorować.
Włączyłem
Print
iCharacter
dowodziłem w stopce łącza TIO dla łatwości użytkowania. (Character
polecenie po prostu konwertuje ciąg znaków na listę znaków)Wypróbuj online!
źródło
LetterNumber
jest wbudowany do wyszukiwania pozycji litery w alfabecie? Cholera jasna, to niedorzeczne.J,
3731 bajtów[`]`(' '#~(1+>./)@])}(i.@#+65-~a.&i.)
-6 bajtów dzięki FrownyFrog
wyjaśnienie
Całość jest hakiem:
Prawa strona oblicza nowe indeksy dla wszystkich liter.
Lewa strona używa Gerund formę Zmienić
}
najpierw stworzyć ciąg niezbędną liczbę miejsc:(' '#~(1+>./)@])
. Następnie umieść każdą literę oryginalnego łańcucha w odpowiednim indeksie w łańcuchu spacji.Wypróbuj online!
źródło
(i.@#+65-~a.&i.)
->(i.@#+65-~3&u:)
->(i.@#-65-3&u:)
->(#\-66-3&u:)
(]' '#~1+>./)
Haskell , 88 bajtów
Wypróbuj online!
źródło
Haskell, 88 bajtów
Wypróbuj online!
q
jest listą ostatecznych indeksów liter ciągu wejściowego (z przesunięciem65
).65
Zapętlaj wszystkie indeksy (zaczynając od ) i znajdź wszystkie litery, przygotowując spację. Weź ostatnie.źródło
C # (.NET Core) ,
11711084 bajtówZaoszczędzono 7 bajtów dzięki Ayb4tu .
Zmieniono typ zwrotu z
string
na,char[]
aby zapisać 26 bajtów.Wypróbuj online!
źródło
t[i+((int)n[i]-65)]
nat[i+n[i]-65]
.char -> int
konwersje są niejawne.C # .NET,
89 bajtów87 bajtów-2 bajty dzięki Lan H.
Wypróbuj online!
źródło
for
pętli dla -2 bajtów.Kotlin,
207 bajtów189 bajtów187 bajtów177 bajtówJeśli pozostanie puste miejsce, po prostu zadzwonię
trimEnd()
zamiasttrim()
.Unminified:
Może Kotlin nie jest najlepszym językiem do gry w golfa, ale podobało mi się to wyzwanie i chciałem zapoznać się ze standardową biblioteką Kotlina.
źródło
q / kdb +, 37 bajtów
Rozwiązanie:
Przykłady:
Wyjaśnienie:
Myślę, że to ten sam pomysł, co rozwiązanie J, oblicz prawidłowe wskaźniki dla tablicy wejściowej, a następnie przypisz je do pustego ciągu o odpowiedniej długości:
źródło
Jq 1,5 , 91 bajtów
Rozszerzony
Wypróbuj online!
źródło
Węgiel drzewny , 16 bajtów
Wypróbuj online! Link jest do pełnej wersji kodu. Wyjaśnienie:
źródło
APL (Dyalog) , 26 bajtów
Anonimowy przedrostek lambda, który przyjmuje ciąg wejściowy jako argument i zwraca ciąg wyjściowy. Zakłada
⎕IO
( I ndex O rigin)0
, co jest domyślne w wielu systemach.Wypróbuj online!
{
…}
Anonimowa lambda;⍵
reprezentuje argument≢⍵
suma argumentu⍳
niż wiele ɩ ntegerów (0… LengthOfArgument-1)(
…)+
Plus:⎕A⍳⍵
indeksy argumentu wielkimi literami alfabetu A.i←
strore wi
(na i ndices)⌈/
maksymalna (redukcja)1+
Dodaj jeden''↑⍨
weź tyle znaków z pustego ciągu, wypełniając spacjami w razie potrzeby⊢
wydajność, która (służy do oddzieleniai
od''
)⍵@i
zmiany, które z literami argumentów w tychi
indeksachźródło
SOGL V0.12 , 10 bajtów
Wypróbuj tutaj!
Wyjaśnienie:
źródło
Pyth ,
4438 bajtówPrzekreślony 44 to wciąż 44 :(
Początkujący Bloody Pyth.
Zaoszczędź 6 bajtów dzięki @Mr. Xcoder.
Wypróbuj online!
W jaki sposób?
źródło
K*d+lz26Vlz K=XK-C@zN-65N@zN;.WqeHdPZK
.WqeKd K=PK;K
jest zastąpiony przez.W
(funkcjonalny while) i jego argumenty oczywiście iFNrZlz
może być zastąpionyVrZlz
, alerZ...
oznaczaU...
iU
jest generowany automatycznie przezV
. Tak sięFNrZlz
stajeVlz
Partia,
418331 bajtówDziała tylko z dużymi literami i dłuższe ciągi znaków potrwają kilka sekund.
Nauczyłem się tutaj nowych trików, konwersji postaci na ASCII za pomocą
%=exitcodeAscii%
. Ponadtoif defined
i dostęp do „tablicy” za pomocącall
. Również gra w golfa o prawie 100 bajtów była dobrym treningiem golfowym partii.Zwróć uwagę na końcowe miejsce w
set z=set
.źródło
Rubinowy , 68 bajtów
Wypróbuj online!
źródło
IBM PC DOS 8088 Assembly ,
3433 bajtyNie golfowane (niezmontowane):
Jest to kompletny plik wykonywalny DOS dla komputera PC, który pobiera ciąg wejściowy z wiersza poleceń i drukuje nową „szybszą” wersję na ekranie. Wymaga minimum DOS 1.0 ... mam nadzieję, że przynajmniej to masz.
Wynik
źródło
PHP,
127123 bajtówWypróbuj online
Musiałem naprawić błąd, który nie wyświetlałby „A” ...
źródło