Oto stosunkowo proste wyzwanie.
Biorąc pod uwagę ciąg o długości N , wypisz ciąg do przodu, następnie do tyłu, następnie do przodu, a następnie do tyłu ... itd. N razy. Na przykład, jeśli dane wejściowe były
Hello!
Powinieneś wypisać:
Hello!!olleHHello!!olleHHello!!olleH
Możesz także opcjonalnie wypisać jeden końcowy znak nowej linii.
Twoje zgłoszenie może być pełnym programem lub funkcją, a Ty możesz pobierać dane wejściowe i wyjściowe w dowolnym rozsądnym formacie . Na przykład, możesz wziąć IO z STDIN / STDOUT, argumenty funkcji i wartość zwracaną, z pliku itp. Możesz bezpiecznie założyć, że łańcuch wejściowy nie będzie pusty i będzie zawierał tylko ASCII do wydruku. Państwo musi wyjście nowy ciąg znaków w jednym wierszu. Na przykład, jeśli dane wyjściowe do ostatniego przykładu były
Hello!
!olleH
Hello!
!olleH
Hello!
!olleH
To nie byłoby prawidłowe rozwiązanie!
Oto kilka innych przypadków testowych:
Input:
a
Output:
a
Input:
abcd
Output:
abcddcbaabcddcba
Input:
OK!
Output:
OK!!KOOK!
Input:
4815162342
Output:
4815162342243261518448151623422432615184481516234224326151844815162342243261518448151623422432615184
Input:
PPCG
Output:
PPCGGCPPPPCGGCPP
Input:
42
Output:
4224
Liderów
Ponieważ jest to wyzwanie dla golfa , standardowe luki są zakazane, a najkrótsza odpowiedź w bajtach wygrywa! Jednak jest to również konkurencja, która ma najkrótszą odpowiedź w danym języku. Chociaż jest mało prawdopodobne, aby odpowiedź w języku Java pobiła odpowiedź w języku Perl lub jakimś języku golfowym, nadal bardzo imponująca jest najkrótsza odpowiedź w języku Java. Możesz więc użyć tego rankingu, aby zobaczyć oba
Najkrótsza odpowiedź spośród wszystkich języków oraz
Najkrótsza odpowiedź w każdym języku.
Aby upewnić się, że twoja odpowiedź się pojawi, zacznij od nagłówka, korzystając z następującego szablonu Markdown:
# Language Name, N bytes
gdzie N
jest rozmiar twojego zgłoszenia. Jeśli poprawić swój wynik, to może zachować stare porachunki w nagłówku, uderzając je przez. Na przykład:
# Ruby, <s>104</s> <s>101</s> 96 bytes
Jeśli chcesz umieścić w nagłówku wiele liczb (np. Ponieważ twój wynik jest sumą dwóch plików lub chcesz osobno wymienić kary za flagi tłumacza), upewnij się, że rzeczywisty wynik jest ostatnią liczbą w nagłówku:
# Perl, 43 + 2 (-p flag) = 45 bytes
Możesz także ustawić nazwę języka jako link, który pojawi się we fragmencie tabeli wyników:
# [><>](http://esolangs.org/wiki/Fish), 121 bytes
var QUESTION_ID=93261,OVERRIDE_USER=31716;function answersUrl(e){return"https://api.stackexchange.com/2.2/questions/"+QUESTION_ID+"/answers?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+ANSWER_FILTER}function commentUrl(e,s){return"https://api.stackexchange.com/2.2/answers/"+s.join(";")+"/comments?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+COMMENT_FILTER}function getAnswers(){jQuery.ajax({url:answersUrl(answer_page++),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){answers.push.apply(answers,e.items),answers_hash=[],answer_ids=[],e.items.forEach(function(e){e.comments=[];var s=+e.share_link.match(/\d+/);answer_ids.push(s),answers_hash[s]=e}),e.has_more||(more_answers=!1),comment_page=1,getComments()}})}function getComments(){jQuery.ajax({url:commentUrl(comment_page++,answer_ids),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){e.items.forEach(function(e){e.owner.user_id===OVERRIDE_USER&&answers_hash[e.post_id].comments.push(e)}),e.has_more?getComments():more_answers?getAnswers():process()}})}function getAuthorName(e){return e.owner.display_name}function process(){var e=[];answers.forEach(function(s){var r=s.body;s.comments.forEach(function(e){OVERRIDE_REG.test(e.body)&&(r="<h1>"+e.body.replace(OVERRIDE_REG,"")+"</h1>")});var a=r.match(SCORE_REG);a&&e.push({user:getAuthorName(s),size:+a[2],language:a[1],link:s.share_link})}),e.sort(function(e,s){var r=e.size,a=s.size;return r-a});var s={},r=1,a=null,n=1;e.forEach(function(e){e.size!=a&&(n=r),a=e.size,++r;var t=jQuery("#answer-template").html();t=t.replace("{{PLACE}}",n+".").replace("{{NAME}}",e.user).replace("{{LANGUAGE}}",e.language).replace("{{SIZE}}",e.size).replace("{{LINK}}",e.link),t=jQuery(t),jQuery("#answers").append(t);var o=e.language;/<a/.test(o)&&(o=jQuery(o).text()),s[o]=s[o]||{lang:e.language,user:e.user,size:e.size,link:e.link}});var t=[];for(var o in s)s.hasOwnProperty(o)&&t.push(s[o]);t.sort(function(e,s){return e.lang>s.lang?1:e.lang<s.lang?-1:0});for(var c=0;c<t.length;++c){var i=jQuery("#language-template").html(),o=t[c];i=i.replace("{{LANGUAGE}}",o.lang).replace("{{NAME}}",o.user).replace("{{SIZE}}",o.size).replace("{{LINK}}",o.link),i=jQuery(i),jQuery("#languages").append(i)}}var ANSWER_FILTER="!t)IWYnsLAZle2tQ3KqrVveCRJfxcRLe",COMMENT_FILTER="!)Q2B_A2kjfAiU78X(md6BoYk",answers=[],answers_hash,answer_ids,answer_page=1,more_answers=!0,comment_page;getAnswers();var SCORE_REG=/<h\d>\s*([^\n,]*[^\s,]),.*?(\d+)(?=[^\n\d<>]*(?:<(?:s>[^\n<>]*<\/s>|[^\n<>]+>)[^\n\d<>]*)*<\/h\d>)/,OVERRIDE_REG=/^Override\s*header:\s*/i;
body{text-align:left!important}#answer-list,#language-list{padding:10px;width:290px;float:left}table thead{font-weight:700}table td{padding:5px}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <link rel="stylesheet" type="text/css" href="//cdn.sstatic.net/codegolf/all.css?v=83c949450c8b"> <div id="answer-list"> <h2>Leaderboard</h2> <table class="answer-list"> <thead> <tr><td></td><td>Author</td><td>Language</td><td>Size</td></tr></thead> <tbody id="answers"> </tbody> </table> </div><div id="language-list"> <h2>Winners by Language</h2> <table class="language-list"> <thead> <tr><td>Language</td><td>User</td><td>Score</td></tr></thead> <tbody id="languages"> </tbody> </table> </div><table style="display: none"> <tbody id="answer-template"> <tr><td>{{PLACE}}</td><td>{{NAME}}</td><td>{{LANGUAGE}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr></tbody> </table> <table style="display: none"> <tbody id="language-template"> <tr><td>{{LANGUAGE}}</td><td>{{NAME}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr></tbody> </table>
olleH
, nieelloH
?Odpowiedzi:
Vim,
39, 34 naciśnięcia klawiszy5 bajtów zapisanych dzięki @Lynn!
Oto gif z tego, co dzieje się na żywo: (Zwróć uwagę, że ten gif jest z poprzedniej wersji, ponieważ nie miałem jeszcze czasu, aby go ponownie nagrać).
A oto wyjaśnienie, jak to działa:
Na marginesie,
Y
pobiera dodatkową nową linię , która zwykle jest wstrętna. Jest to prawdopodobnie pierwszy raz, kiedy rzeczywiście zaoszczędził kilka bajtów!źródło
:%s/\n<cr>
możesz zrobić,v{gJ
aby zapisać trzy bajty.@q
na początku jest pusty, prawda? lub@q
przed zatrzymaniem nagrywania zrobiłoby coś arbitralnego. (Prowadzi mnie to do mojego ulubionego trywialnego vima, które wymyśliłem: wszyscy wiedzą, że rzucenie vima jest tak proste:q<CR>
, ale jak zamknąć i zapisać wszystkie swoje pliki? Łatwe: tylkoqqqqqZZ@qq@q
!)@q
być puste. Dlaczego nie zrobić:wqa
tego zamiast tego? Chcesz także wiedzieć, jak wygenerować fraktal w vimie?qqqqq<C-w>v<C-w>n@qq@q
: DPython, 40 bajtów
Funkcja rekurencyjna. Przygotowuje ciąg wejściowy
s
do funkcji rewersu, dopóki licznik niei
przekroczy długościs
.źródło
lambda s:(len(s)*(s+s[::-1]))[:len(s)**2]
o jeden bajt.f = lambda s : ''.join([s[((-1)**(i//len(s)) <= 0)*(len(s)-1)+(-1)**(i//len(s))*(i%len(s))] for i in range(len(s)*len(s))])
ale zgodnie z 136 bajtamisys.sizeof
, co ciekawe, jest tego samego rozmiaru cof = lambda s : ''.join([s[::1] if i%2 else s for i in range(len(s))])
Brain-Flak ,
418378228 bajtówTo moje arcydzieło Brain-Flak. To może nie być dobrze gra w golfa, ale wyzwanie jest najtrudniejsze, jakie kiedykolwiek spotkałem.
Wypróbuj online!
Wyjaśnienie
To wyjaśnienie jest teraz trochę nieaktualne, ale nadal całkiem niezłą robotę wyjaśnia program.
To wyjaśnienie będzie nieco różnić się od mojego zwykłego procesu wyjaśniania. Wyjaśnię, jak doszedłem do tego wyniku, zamiast wyjaśnić wynik w kolejności. Oto jest:
Wałek
Po dłuższej pracy nad tym problemem wymyśliłem ten kod:
Ten kod (gdzie n jest literałem dla pewnej liczby, np.
()()
) Zabierze element na górę stosu i przesunie go w dół n kroków. Przy n jako wysokości stosu spowoduje to „przewrócenie” stosu. tzn. przesuń górny element na spód stosu. Oto jak to działa:Kładziemy miejsce, w którym chcemy przenieść przedmiot, na minus jeden na stosie. Dlaczego minus jeden? Nie wiem, to po prostu działa w ten sposób.
Następnie zapętlamy, aż liczba osiągnie zero, śledząc pętlę za pomocą
()
.Za każdym razem, gdy zapętlamy się, wybieramy górny przedmiot i przenosimy go pod inny stos. To stawia numer na górze na swoim miejscu.
Wszystko, co musimy teraz zrobić, to wprowadzić liczby, które cofnęliśmy. Przełączamy się na wyłączanie stosu i zwiększamy liczbę uruchomień wykonanej pętli.
Pętlimy zmniejszając nowo wypychaną liczbę, aż osiągnie zero. Za każdym razem cofamy o jeden numer.
Rewers
Następnie zmodyfikowałem rzut, aby odwrócić pełny stos:
Ponownie n oznacza głębokość rewersu. To znaczy, że n górnych elementów na stosie zostanie odwróconych. Jak to działa:
Rewers to po prostu zawinięty w rolkę walec. Po prostu nawijamy górę stosu n razy, zmniejszając za każdym razem głębokość rzutu o jeden.
Duplikować
Powielanie na miejscu jest trudne. Naprawdę trudny. Po tym, jak wymyśliłem, jak odwrócić stos, nadal wymagało wiele wysiłku, aby wymyślić algorytm duplikacji.
Oto on:
Jest trochę duży, ale oto jak to działa:
Zacznij od naciśnięcia n. n jest głębokością duplikatu. Otwieramy również dwa nawiasy. Pozwalają nam przechowywać wartość nw zakresie, dopóki nie będzie ponownie potrzebna.
Następnie zapętlamy n razy za każdym razem, przesuwając dwukrotnie najwyższą wartość stosu do stosu wyłączonego. To powoduje, że początkowe duplikaty dla każdej liczby na stosie.
Teraz mamy dwie kopie każdego numeru na offstacku. Musimy je podzielić na dwie grupy.
Przechodzimy więc do offstacka i przypominamy sobie jedną z ns, które zapisaliśmy na początku.
Zapętlamy n razy.
Za każdym razem przenosimy jeden egzemplarz do głównego nurtu.
I rzuć jedną kopię na spód stosu. (Zakłada się, że offstack był pusty, aby rozpocząć od tego, aby ten duplikat nie był czysty)
Po wykonaniu tej czynności podzieliliśmy oryginał na dwie grupy: „oryginał” i kopię na offstacku (kopia jest w rzeczywistości w odwrotnej kolejności). Po prostu przenosimy kopię do głównego stosu i możemy to zrobić.
Program szkieletowy
Teraz, kiedy stworzyłem wszystkie elementy programu, muszę tylko wstawić je do ramki.
Ramka podwaja tekst o jeden raz mniej niż wysokość stosu przy użyciu duplikatu.
A następnie odwraca stos w malejących przyrostach początkowej wysokości stosu z n ^ 2-n do 0.
źródło
Galaretka ,
43 bajtyWypróbuj online! lub Zweryfikuj wszystkie przypadki testowe.
Zapisano bajt dzięki @ Maltysen .
Wyjaśnienie
źródło
L
PHP,
5452 bajty(49 bajtów, ale nie działa, jeśli ciąg zawiera „0”)
(52 bajty)
(54 bajty)
źródło
str_pad
. niezłe!2sable , 3 bajty
Kod:
Wyjaśnienie:
Wykorzystuje kodowanie CP-1252 . Wypróbuj online!
źródło
Rubin, 39 bajtów
Obciągam Ruby. Pomoc w golfa jest doceniana.
Ruby jest naprawdę fajnym językiem z tego powodu
.reverse!
Wyjaśnienie
Miałem nadzieję, że będzie to proste:
ale ze względu na ogranicznik / wyzwanie jest dłuższy.
Co
s.reverse!
jest bardzo przydatne.s.reverse!
jest w zasadzies = s.reverse!
, co oznacza, że również mutujes
.Działanie każdej sekcji programu opisano poniżej:
Zaletą
s.reverse!
tego jest to, że za każdym razem, gdy jest oceniany, łańcuch zostaje odwrócony. Tak jak zastępuje ciąg.s
jest zmodyfikowany!źródło
-p
flagi możesz zaoszczędzić 4 bajty:$_.reverse!;gsub(/./){$_.reverse!}
.chomp
choć trochę na temat$_
? wydaje się, że zawiera terazruby -pe '$_.reverse!;gsub(/./){$_.reverse!}' < file.txt
gdziefile.txt
jest linia bez końcowego nowego wiersza: V W każdym razie, jeśli zdecydujesz się tego nie robić, nie potrzebujesz parens na lambda, więc->s
działas.gsub(/./){s.reverse!.reverse}
Perl, 24 bajty
Obejmuje +2 za
-lp
Podaj dane na STDIN:
rev.pl
:Nieoczekiwanie nie wykorzystuje to wbudowanego
reverse
operatora. Ta nazwa jest po prostu bardzo długa, wszystkie rozwiązania, o których mogłem pomyśleć,reverse
są co najmniej 1 bajt dłuższe.źródło
J,
138 bajtówZaoszczędzone 5 bajtów dzięki kilometrom!
To jest 5 pociągów z następującymi czasownikami:
Wewnętrzny rozwidlenie składa się z
]
(tożsamość),;
(link) i|.
(rewers). Przestrzegać:Dwa zewnętrzne czasowniki tworzą resztę pociągu.
#
jest w tym przypadku rozmiarem argumentu, czyli długością. Czasownik łączący nich jest;@$
alboravel
nadreshape
. Przestrzegać:Stare rozwiązanie.
Wystarczająco proste.
|.
jest odwrotny i^:
jest koniunkcją mocy, która powtarza swój lewy czasownik (prawa ręka) # razy. Gdy właściwym argumentem jest czasownik, czasownik ten jest wywoływany w argumencie. Prawidłowy czasownik w tym przypadku ma zakres od zera (i.
) do długości (#
). Po podniesieniu do tablicy wyniki pośrednie są zachowywane. Wszystko, co trzeba zrobić, to spłaszczyć tablicę,
.Wyniki pośrednie
źródło
<@#
#;@$];|.
tym, że blokuje początkowe i odwrotne kształty, przekształca zapakowane ciągi i niszczy je razemJavaScript (ES 6),
5950 bajtów9 bajtów dzięki Hedi i Huntro.
funkcja rekurencyjna.
Odwrócenie łańcucha zajmuje prawie połowę rozmiaru (
2522 bajtów!) ...Dlaczego nie ma na to własnej metody?
źródło
s[n]?...
intead ofn<s.length?...
[...s]
zamiasts.split``
f=(s,n=1)=>n==1?s:s+s.reverse(),n-1)
f=(s,n=1)=>Array.from({length:n},(_,i)=>i%2?s.reverse():s).join``)
, który też byłby lepszy z jakąś lepszą funkcją dla zasięguSyntaxError: Unexpected token )
JS nie ma natywnego odwracania łańcucha.SyntaxError: Invalid or unexpected token
za twoją drugą sugestię. W jakiej przeglądarce to działa?Minkolang , 17 bajtów:
Wypróbuj tutaj!
Wyjaśnienie
źródło
8088 Montaż, IBM PC DOS,
2928 bajtówZmontowany,
xxd
zrzut:Niezmontowany wykaz:
Samodzielny program wykonywalny DOS dla komputerów PC. Łańcuch wejściowy za pomocą wiersza poleceń, wyjściem jest konsola.
źródło
Pip ,
1110 bajtówWypróbuj online!
Wyjaśnienie:
źródło
Haskell,
403632 bajtówPrzykład:
Jeszcze krótszy (kredyt dla Damiena):
s >> [s, reverse s] cycles ["abc", "cba", ...], które jest spakowane do odpowiedniego rozmiaru i konkatMapowane z fst
źródło
q s=zip(s>>[s,reverse s])s>>=fst
(>>=fst).(iterate reverse>>=zip)
Perl 6 ,
3130 bajtówZapisz jeden bajt niewłaściwie wykorzystując
.ords
, co zwraca listę rzędnych, a następnie domyślnie zamień go na liczbę, aby utworzyć zakres.Wyjaśnienie:
Stosowanie:
źródło
Vim + coreutils, 32 naciśnięcia klawiszy
Nigdy nie możesz mieć zbyt wielu odpowiedzi Vima.
Wyjaśnienie
źródło
MATL,
13128 bajtówPcha wszystkie elementy, łączy się na końcu.
Wypróbuj online!
Stare wersje:
Zupełnie inne podejście, oparte na
fprintf
:Wersja oparta na odwróceniu ciągu szablonu
źródło
td
!tnq:"
pierwszy, ale mamtn:"
nieco zapachowy kod (patrz ten poradnik golfowy Matlab), więc pomyślałem, żetnq:
może być również bardziej kompaktowy.Scala,
737271 bajtówTo moja pierwsza próba gry w golfa, więc jestem pewien, że wprowadzono niezliczone ulepszenia.
Aktualizacja:
Oddalono o 1 bajt, usuwając nawiasy.
Dzięki Destructible Watermelon za sugestie, zgoliłem bajt.
źródło
i%2==1
nai%2>0
?Cubix , 52 bajty
Na sześcianie:
Ten był zabawny; są jeszcze bajty do zagrania w golfa, ale to na pewno zadziała.
Wypróbuj online!
wyjaśnienie:
Wejście z
ABC
/A
: idź na północ i we wszystkich wejściach czytaj jako znaki;-1
będzie na dolep\;.
: usuń-1
ze stosuu#
: popchnij długość sznurka (liczba elementów na stosie)\:\:qq
: dwukrotnie skopiuj długość łańcucha, przesuń dwie kopie na spód stosupętla:
soq(?/<u
: zamień górę stosu, ouptut górę stosu jako ASCII, przesuń górę (literę) na dół, zmniejsz stos do góry, skręć w prawo, jeśli nie jest zrobione, a następnie przenieś adres IP we właściwe miejsce.C B A 3 3 0
;u
: pop top stosuC B A 3 3
B
: odwrotny stos3 3 A B C
p(
: przesuń od dołu do góry i zmniejsz3 A B C 2
?
jeśli górna jest zero, idź prosto do@
i zakończpsq:uq
: przesuń od dołu do góry, zamień od góry i przejdź od góry do dołu dup i przesuń od góry do dołu3 2 A B C 3
$u
: pominąću
<
przywraca nas do pętli.Interpretator
źródło
C (gcc) ,
888785836866838278 bajtów-1 dzięki ceilingcat
Stara wersja
Wypróbuj online!
Krótsza wersja (lekko zepsuta)
Riffowanie w 76-bajtowym podejściu ASCII-tylko w komentarzach i -1-bajt z jego ulepszenia mojego ulepszenia.
Edycja: Ta wersja jest nieco zepsuta, ponieważ zakłada, że każdy ciąg jest poprzedzony bajtem NULL, co nie zawsze jest prawdziwe. (Zobacz ostatni przypadek testowy w linku). Na razie powracam do wersji 83-bajtowej.
Wypróbuj online!
źródło
Java,
12711188 bajtówNie testowany program testowy
źródło
(s,r)->{for(int i=0;i++<s.length();)r+=i%2<1?s:new StringBuffer(s).reverse();return r;};
( 88 bajtów ). Ponadto sprecyzowałbym, że jest to Java 8.R, 53 bajty
Zakłada, że dane wejściowe są oddzielone spacjami lub znakami nowej linii dla każdego znaku.
Niektóre przypadki testowe:
źródło
PowerShell v2 +, 57 bajtów
Nie ma naprawdę czystego sposobu na uzyskanie ciągów znaków lub odwrócenie ich, więc jest to dość długie.
Pobiera dane wejściowe
$a
, pętle od1
do$a.length
(przechowywane w$x
celu użycia później). Każdej iteracji używamy pseudo-trójki do indeksowania do tablicy albo ($a
albo$a[$x..0]
odwróconej), w zależności od tego, czy nasza liczba wejściowa jest nieparzysta / parzysta[$_%2]
. Wszystkie są zamknięte w pareny i zmontowane-join
razem, tworząc jeden ciąg. Pozostaje to w przygotowaniu, a dane wyjściowe są niejawne.źródło
Java, 151 bajtów
}
Nie golfowany:
źródło
public static
przed swoją metodą. Możesz usunąć spacje pomiędzyt=new StringBuffer
. Możesz usunąć niepotrzebne nawiasy i nawiasy klamrowe. I możesz zamienić moduł sprawdzania z==1
na<1
(co jest równoważne z==0
liczbami nieujemnymi). Możesz także przenieśći++
ostatnie użycie w pętli for.void r(String s){for(int i=0;i<s.length();)System.out.print(i++%2<1?s:new StringBuffer(s).reverse()+"");}
( 105 bajtów )C #, 94 bajtów
76 bajtów dla metody + 18 bajtów dla importu LINQ.
Jak to działa:
źródło
CJam , 10 bajtów
Wypróbuj online!
Wyjaśnienie
źródło
Oktawa,
3935 bajtówWyjaśnienie:
Zaoszczędź 4 bajty dzięki Luisowi.
~x
zamiast0*x
zapisanego jednego bajtu (działa, ponieważ wszystkie elementy x są niezerowe.flip
zamiastflipud
zapisanych kolejnych dwóch bajtów (nie wiedziałem, żeflip
istnieje).źródło
bash + util-linux,
685853 bajtówWyjaśnienie
Dwie rzeczy z
for
pętlą:for
pętle gdzie są zastępowane przezdo
idone
słowa kluczowe z klamrami{
i}
. Konieczne jest miejsce po pierwszym nawiasie , a także średnik na końcu .for
pętlach w stylu „C” można po prostu zainicjowaći;
zamiast używaći=0;
.${#1}
Część stanui < ${#1}
dotyczy na długość wejścia (pierwszego parametru$1
). Zasadniczo można użyć${#foo}
do pobrania rozmiaru ciągu$foo
.Do tego:
rev
jest narzędziem w util-linux, które odwraca ciąg znaków.-n
flagę,echo
aby pozbyć się nowych linii.rev<<<$y
to nazywa się tutaj-ciągiem (patrz odpowiednia strona tldp.org ), który przekazuje zmienną$y
do standardowego wejściarev
.źródło
do
idone
słowa kluczowe wfor
pętli, to rzeczywiście nie potrzebujemy tego miejsca!y=$1;for((;i<${#1};i++)){ printf $y;y=`rev<<<$y`;}
... zapisałem kilka bajtówJapt , 11 bajtów
Wypróbuj online!
źródło
î
Znowu zapominasz , prawda ?!05AB1E , 7 bajtów
Wypróbuj online!
Będzie nadal nad tym pracować. Nie podoba mi się część „v}”, prawdopodobnie mogę tam zapisać bajt.
Wyjaśnienie
źródło
vÂ}\J
5 bajtów to tyle samo, co kod, ale z wbudowanymi plikami, których szukałeś. :)Â
to Bifurcate (skrót od Duplicate & Reverse, czyli dokładnie to, co robisz).\
usuwa górny element ze stosu.