Na czacie, jesteśmy często fast-typerów i tak naprawdę nie wyglądają w porządku z literami przed wysłaniem wiadomości. Ponieważ jesteśmy leniwi, potrzebujemy programu, który automatycznie zamienia dwie ostatnie litery w naszych słowach, ale ponieważ nie chcemy odpowiedzieć zbyt późno, kod musi być krótki.
Twoim zadaniem, jeśli chcesz je zaakceptować, jest napisanie programu, który odwraca dwie ostatnie litery każdego słowa w danym ciągu (tak więc słowo Thansk
zamienia się w Thanks
). Słowo to sekwencja dwóch lub więcej liter alfabetu angielskiego ograniczonej przez pojedynczego miejsca.
Ciąg / lista znaków otrzymywanych jako dane wejściowe gwarantuje, że zawierają tylko znaki alfabetu i spacje (ASCII [97–122], [65–90] i 32).
Możesz przyjmować dane wejściowe i dostarczać dane wyjściowe za pomocą dowolnej standardowej metody , w dowolnym języku programowania , zwracając uwagę, że te luki są domyślnie zabronione.
Dane wyjściowe mogą mieć jedną końcową spację i / lub jedną końcową nową linię.
Dane wejściowe zawsze będą zawierać tylko słowa (i odpowiadające im białe znaki) i będą zawierać co najmniej jedno słowo.
To jest golf golfowy, więc wygrywa najkrótsze zgłoszenie (w bajtach), w każdym języku!
Przypadki testowe
Zauważ, że ciągi są otoczone cudzysłowami dla czytelności.
Wejście -> Wyjście „Thansk” -> „Thanks” „Youer welcoem” -> „Youre welcome” „This is a apple” -> „Thsi si na appel” „Flippign Lettesr Aroudn” -> „Flipping Letters Around” „ODD CHALLENEG Z SWAPDE LETRES” -> „TE ODD CHALLENGE Z WYMIENIONYMI LITERAMI”
Lub, dla wygody zestawu testów, tutaj osobno wejścia i odpowiadające im wyjścia:
Thansk Witaj To jest jabłko Flippign Lettesr Aroudn ODD CHALELEEG Z SWAPDE LETRES
Dzięki Nie ma za co To jest appel Przerzucanie liter CHODZI ODD CHALENGE Z WYMIENIONYMI LITERAMI
Dzięki DJMcMayhem za tytuł. To był pierwotnie CMC .
Odpowiedzi:
V , 4
5bajtówWypróbuj online!
||
oznacza kursorBufor zaczyna się od,
|w|ord and more words
a kursor znajduje się na pierwszym znaku.Rekurencyjnie
ò
przejdź do
e
drugiego słowawor|d| and more words
usuń
X
znak po lewej stronie kursorawo|d| and more words
p
zatrzymaj to nad kolejną postaciąwod|r| and more words
Niejawne zakończenie
ò
, powtarzaj ten sam proces dla innych słów, aż do osiągnięcia końca buforaźródło
ò
polecenia github.com/DJMcMayhem/V/wiki/Normal-Mode-CommandsGalaretka , 7 bajtów
Monadyczny link pobierający i zwracający listy znaków
Wypróbuj online!
W jaki sposób?
źródło
Ḳ2œ?ЀK
działa również i używa jednego szybkiego.Brain-Flak , 122 bajty
Wypróbuj online!
Najgorszy język do pracy :)
CzytelnaNieco bardziej czytelna wersja:źródło
Haskell , 40 bajtów
Wypróbuj online! Przykład użycia:
(f=<<).words $ "abc xyz"
plony"acb xzy "
.źródło
Siatkówka , 13 bajtów
Wypróbuj online! Link zawiera przypadki testowe.
źródło
Python 3 , 50 bajtów
Wypróbuj online!
Ta odpowiedź narusza zachowanie drukowania w Pythonie 3: Wiele argumentów jest drukowanych z pojedynczą spacją między nimi. Oczywiście nie możemy po prostu podać wielu argumentów, ponieważ nie wiemy, ile słów będzie na wejściu. Więc używamy operatora ikona . Gruntownie
jest dokładnie taka sama jak
Nadużycie, które powoduje, że pełny program okazuje się krótszy niż funkcja / lambda, w której musielibyśmy użyć
' '.join
lub coś podobnego.źródło
for w in input().split():print w[:-2]+w[:-3:-1],
. W Pythonie 3 wyodrębnienie dwóch ostatnich znaków działałoby dobrze, zprint(*(''.join(a)+c+b for*a,b,c in input().split()))
wyjątkiem tego, żea
należy przekształcić w ciąg znaków.Matlab (R2016b),
5150 bajtówZaoszczędź
4950 (!) Bajtów dzięki @Giuseppe.I moja poprzednia odpowiedź:
Matlab (R2016b), 100 bajtów
(Dla zabawy: P)
Wyjaśnienie:
źródło
regexprep
tu pracować? Coś takiegoregexprep(a,'(\w*)(\w)(\w)','\1\3\2')
?$1
, a nie\1
, więc tak by byłoregexprep(a,'(\w*)(\w)(\w)','$1$3$2')
.function s(a),regexprep(a,'(\w)(\w)( |$)','$2$1 ')
to kolejny bajt krótszy!C,
625854 bajtówDzięki @Dennis za zapisanie
czterechośmiu bajtów!Wypróbuj online!
źródło
Prolog (SWI) , 60 bajtów
Wypróbuj online!
Wyjaśnienie
Najpierw określamy przypadek podstawowy:
Oznacza to, że dwie ostatnie litery zawsze będą zamieniane.
Następnie określamy, co się stanie, jeśli znajdziemy się tuż obok miejsca:
Dwa ciągi pasują do siebie, jeśli tuż przed spacją litery są zamieniane, a reszta, jeśli pasują do siebie. Następnie używamy
!
do cięcia.Naszym ostatnim przypadkiem jest to, że jeśli nie znajdujemy się obok spacji, dwie pierwsze litery muszą się zgadzać.
źródło
Wolfram Language , 117 bajtów
Wypróbuj online!
Stosowany do ciągów testowych.
źródło
R ,
1115141 bajtówDzięki uprzejmości @Giuseppe, metody wyrażenia regularnego, która wyrzuca moją starą metodę z wody.
źródło
APL (Dyalog Classic) , 28 bajtów
⎕ML
i⎕IO
to zarówno1
,Wypróbuj online!
Wyjaśnienie
... (,⊂⍨⊣=,) ...
Podziel (zachowując granice i dodając granicę na początku) ...... ⍞
... wejście ...... ' ' ...
... w kosmosie.... ( ... )¨ ...
Następnie do każdego elementu tego:... , ...
Połącz ...... (¯2↓⊢) ...
... każdy element oprócz dwóch ostatnich ...... 2↑⌽ ...
... z odwrotnością dwóch ostatnich elementów.1↓∊ ...
Na koniec zwróć wszystko oprócz pierwszego elementu spłaszczonego wyniku.źródło
Funky , 34 bajty
Wypróbuj online!
źródło
Haskell , 45 bajtów
-2 bajty dzięki H.PWiz.
Wypróbuj online!
źródło
J ,
20 1911 bajtówPodziękowania dla @Bolce Bussiere
Wypróbuj online!
źródło
(1&A.&.>)&.;:
Alice , 24 bajty
Wypróbuj online!
Wyjaśnienie
Tworzy to pętlę, w której ciało pętli jest liniowym fragmentem porządkowym, i wykonujemy
' o
w trybie kardynalnym między każdą dwiema iteracjami pętli. Ten ostatni po prostu drukuje przestrzeń.Po rozwinięciu zygzakowatej struktury kodu porządkowego, liniowy korpus pętli wygląda tak:
Podział tego:
źródło
h~Z
) zamiast w czterech (e10x
), ale nie widzę sposobu na dostosowanie układu, aby faktycznie zaoszczędzić bajt.pieprzenie mózgu ,
109100 bajtówEdycja: nie musisz obsługiwać słów z jedną literą
Wypróbuj online!
Drukuje spację końcową
Jak to działa
Poprzednia wersja, 109 bajtów
Wypróbuj online!
źródło
QuadR , 8 bajtów
Wypróbuj online!
źródło
PHP ,
119107 bajtówEdycja: dzięki całkowicie ludzkiej
Wypróbuj online!
źródło
$word
nazwy zmiennej jednoznakowej?fgets(STDIN)
można je pominąć lub zastąpić$x
, tak jak nie wszystkie odpowiedzi liczą dane wejściowe do ich odpowiedzitrim()
powinno być niepotrzebne.Haskell , 41 bajtów
Wypróbuj online!
Wyjścia z końcową spacją.
Powtarzające się
' ':r
wygląda na marnotrawstwo. Alea%(b:t@(' ':r))=b:a:t
ma tę samą długość ia%(b:t)|' ':_<-t=b:a:t
jest o jeden bajt dłuższy.Haskell , 41 bajtów
Wypróbuj online!
źródło
sed ,
2017 + 1 (-r) = 18 bajtówWypróbuj online!
źródło
|$
. Nic nie robi. (Aby zrobić to, czego oczekujesz, będziesz potrzebować(.)(.)(\b|$)
, ale nie jest to konieczne, ponieważ\b
już pasuje do końca łańcucha.)PHP, 65 bajtów
wymaga PHP 7.1 (lub nowszego)
przyjmuje zdanie jako osobne argumenty wiersza poleceń. Uruchom z
-nr
.praca na pojedynczym ciągu, 77 + 1 bajtów :
Uruchom jako potok z
-nR
.... lub wypróbuj je online .
źródło
Java 8, 35 bajtów
Port odpowiedzi na Arkusze Google @TaylorScott , po tym jak grałem w golfa dwa bajty. EDYCJA: Widzę, że jest to teraz port odpowiedzi Retina Neila po moich dwóch golfed bajtów.
Wyjaśnienie:
Wypróbuj online.
źródło
Arkusze Google, 33 bajty
Anonimowa funkcja arkusza roboczego, która pobiera dane wejściowe z komórki
A1
i dane wyjściowe do komórki wywołującej-2 bajty Dzięki @KevinCruijssen za korzystanie z
(.)
over(\w)
źródło
(\w)
można zagrać w golfa,(.)
jeśli się nie mylę. Jest\b
to już wskazówka, aby szukać tylko słów. (Nie do końca jednak pewne, ale działa w Javie.)JavaScript (Node.js) ,
383632 bajtówWypróbuj online!
Podejście do RegExp dzięki uprzejmości @Giuseppe (chociaż myślałem o tym niezależnie), zakładając, że słowa są oddzielone tylko jedną spacją
-2 za rozważenie tylko 1 spacji i dodanie spacji końcowej
-4 Dzięki @Shaggy
źródło
s=>s.replace(/(.)(.)( +|$)/g,"$2$1$3")
.s=>s.replace(/(.)(.)(\s|$)/g,"$2$1$3")
ab abc abcd abcde abcdef
Czyab_
,bc_
,cd_
,de_
,___
,ef_
,___
F=s=>s.replace(/(.)(.)(?!\w)/g,"$2$1")
ta sama długośćK (oK) ,
2322 bajtówWypróbuj online!
Przykład:
Wyjaśnienie:
Rozwiązanie Port of FrownyFrog w celu zaoszczędzenia 1 bajtu .
Wrócę do tego.
Poprzednie rozwiązanie:
" "/-2{(x_y),|x#y}'" "\
23 bajtyźródło
05AB1E , 7 bajtów
Wypróbuj online!
-1 dzięki Magicznej Ośmiornicy Urn .
Drukuje jedną spację końcową.
źródło
`
.Jelly, 10 bytes
Try it online!
źródło
SNOBOL4 (CSNOBOL4),
136119 bytesTry it online!
Prints with a trailing space.
You know you've done something wrong when a language is a backronym for StriNg Oriented and symBOlic Language and your code is longer than Brain-Flak :(now it's slightly better.Line
B
takesI
and replaces(alphabetic characters saved as Y)(some number of spaces)
with the empty string.The following line extracts the last 2 characters of
Y
asZ
and replaces them asZ
reversed, then the next line concatenatesO
,Y
, and a single space character.Finally, it prints when
I
no longer matches the required pattern in lineB
.źródło
Perl 5, 19 + 1 (
-p
) = 20 bytesTry it online!
źródło