Twoim zadaniem jest napisanie programu, który, biorąc pod uwagę liczbę i ciąg, dzieli ciąg na fragmenty tego rozmiaru i odwraca je.
Zasady
Twój program otrzyma dodatnią liczbę całkowitą n
, a także ciąg s
o długości co najmniej jeden składający się tylko z drukowalnego ASCII (bez białych znaków). Łańcuch powinien być następnie podzielony na kawałki długości n
, jeśli długość łańcucha nie jest podzielna przezn
resztki na końcu, należy uznać za własny kawałek. Następnie odwróć kolejność kawałków i połącz je ponownie.
Przypadki testowe
n s Output
2 abcdefgh ghefcdab
3 foobarbaz bazbarfoo
3 abcdefgh ghdefabc
2 a a
1 abcdefgh hgfedcba
2 aaaaaa aaaaaa
2 baaaab abaaba
50 abcdefgh abcdefgh
6 abcdefghi ghiabcdef
To jest golf golfowy , więc powinieneś dążyć do jak najmniejszej liczby bajtów.
Odpowiedzi:
Galaretka , 2 bajty
Pełny program, który drukuje wynik.
Wypróbuj online!
W jaki sposób?
źródło
Python 3 , 35 bajtów
Wypróbuj online!
źródło
and
działa tutaj słowo kluczowe? @Dennis05AB1E ,
5 43 bajty-1 dzięki Dennis
-1 dzięki carusocomputing
Wypróbuj online!
źródło
¹
nie jest potrzebne.JavaScript (ES6), 37 bajtów
Pobiera dane wejściowe przez curry: najpierw liczba, a następnie ciąg znaków, jak
f(2)("abcdefgh")
.Pokaż fragment kodu
źródło
Perl 6 ,
2820 bajtówSpróbuj
Spróbuj
Rozszerzony:
źródło
Bash + coreutils, 22
Wypróbuj online .
źródło
Haskell , 32 bajty
Wypróbuj online!
źródło
PHP, 53 bajtów
źródło
Röda , 36 bajtów
Wypróbuj online!
Jest to funkcja, która wymaga jednego argumentu. Znaki ciągu muszą znajdować się w strumieniu.
try
służy do odrzucania błędów w przypadku, gdyhead
funkcja nie może odczytaćn-1
wartości.Wyjaśnienie:
Nie tak zaciemnione jak zwykle. Myślę, że to całkiem piękne. :)
źródło
[[try head n]]
działa zamiast[[_]..[try head n-1]]
?_
wyrażenie.[[try head n]]
przyjmie n wartości jeden raz , ale[[_]..[try head n-1]]
przyjmie n wartości, o ile pozostaną wartości.CJam , 5 bajtów
Dane wejściowe to liczba i ciąg zamknięty w podwójnych cudzysłowach, oddzielone spacjami.
Wypróbuj online! Lub sprawdź wszystkie przypadki testowe .
Wyjaśnienie
źródło
Partia, 74 bajty
Raczej denerwująco kończy się to raczej rekurencyjnym niż rekurencyjnym.
źródło
V ,
1310 bajtówWypróbuj online!
W akcji:
przemienia się w
która staje się
zanim wszystkie nowe wiersze zostaną usunięte
źródło
pieprzenie mózgu , 78 bajtów
Pierwszy bajt danych wejściowych to wielkość porcji podana przez wartość bajtu. Resztę bajtów uważa się za ciąg.
Wypróbuj online!
Rozszerzony i skomentowany
źródło
PowerShell,
5649 bajtów-7 bajtów dzięki mazzy
Wypróbuj online!
źródło
.ps1
and try calling this script instead of your code. If it works, then the test was successful.Mathematica, 46 bytes
Anonymous function. Takes a number and a string as input and returns a string as output. Not much to see here.
źródło
Javascript -
544746 bytesRemade:
Used as
Thank you to @ETHproductions for some RegEx quickenning Thank you to @Shaggy for an extra byte in the eval!
Original:
źródło
eval('/.{1,'+n+'}/g')
s=>n=> ...
eval("/.{1,${n}}/g")
, using backticks instead of quotation marks.Pyth, 5 bytes
Try it online.
Explanation
źródło
Retina, 38 bytes
1 byte saved thanks to @LeakyNun
(Note the space on the second line, and the trailing space)
This program takes input as unary on the first line, and the string on the second.
Try it online!
Test Suite! (slightly modified)
Explanation
The first step is to prepend a space (will become important later on).
Now we reverse. This uses .NET's balancing groups. It is important to note that groups here act as stacks, so every match is essentially pushed onto the stack. Here we capture every digit in the unary number into group 2. Now each time a character in the string is found, a match is popped from group 2. This ensures the the number of characters does not exceed that of the unary number.
And finally remove the unary number and the newline.
źródło
\d
by.
to save a byte.^
is also redundant.\d
anymore. And thanks for golfing away the caret :)Java,
147138 BytesString r(String s,int n){String r="";int l=s.length();for(int i=l/n*n;i>=0;i-=n)if(!(i>=l))r+=(i+n)>=l?s.substring(i):s.substring(i,i+n);return r;}
Saved 9 Bytes thanks to Kevin Cruijssen!
In expanded form:
This is actually my first try to codegolf ever, so any feedback is welcome!
źródło
int l=s.length();for(int i=l/n*n;
can beint l=s.length(),i=l/n*n;for(;
so you only haveint
once. Andif(!(i>=l))
can beif(l<i)
. Andr+=(i+n)>=l?
can be without the parenthesis:r+=i+n>=l?
. Also, if you haven't seen it yet, I can recommend looking through Tips for Golfing in Java for some pretty cool golfing tips to use. :) Once again, welcome.Perl 5, 25 bytes
Uses the
-lnM5.010
flags.Try it online!
Shoutout to Grinnz for telling me about
=~ m/.{1,$n}/g
-M5.010
enables the use of thesay
function, which for our purposes is print with a shorter name.-n
puts the first line of input into$_
, and-l
chomps off the trailing newline.We then get the second line of input using
<>
, and apply it to the regex.{1,$_}
: any character, between 1 and $_ (the first input) times. Since this is greedy by default, it tries to always match $_ characters. The1,
is needed for the possible leftover chunk at the end.The
/g
modifier gives us every match of that regex in the input string as a list, which is then reversed and printed. In Perl, passing a list tosay
joins it without any delimiter by default.źródło
Dyalog APL Extended,
1615 bytesTry it online!
źródło
f←
,/
→∊
∊∘⌽⊢⊂⍨≢⍤⊢⍴1↑⍨⊣
Python, 62 bytes
Try it online!
źródło
f=lambda n,s:s and f(n,s[n:])+s[:n]
Stacked, 9 bytes
Try it online!
#<
chunks,rev
reverses, and''#`
joins by empty string. Quite simple.źródło
QBIC, 24 bytes
This makes excellent use of the new substring-function I recently added to QBIC:
źródło
Pyth, 4 bytes
Takes input as
"s",n
: Try it for yourself!źródło
Convex, 2 bytes
Try it online!
źródło
C, 69 bytes
Result is printed out to the standard output.
źródło
Scala,
5755 bytesThanks Jacob! Try it here.
Note: By using the symbol form of foldLeft ("/:"), I was able to take off a couple more bytes.
źródło
mkString
instead ofreduceLeft
, and shave off 7 bytes:(n:Int,s:String)=>s.grouped(n).toSeq.reverse.mkString("")
Ohm, 5 bytes
Try it online!
Explanation
źródło
R,
6960 bytesTry it online!
Thanks to Kirill L. for the suggestion to remove
seq
.źródło
:
and some manipulation lets us get rid of the trailing-1
.