Snakified string wygląda następująco:
T AnE eOf ifi ing
h s x l A k e r
isI amp Sna dSt
Twoje zadanie
Weź ciąg s
i rozmiar n
, a następnie wyślij zrywany ciąg. Dane wejściowe ThisIsAnExampleOfaSnakifiedString
i 3
dałby powyższy przykład.
Dane techniczne
s
będzie zawierać tylko znaki ASCII między punktami kodowymi 33 i 126 włącznie (bez spacji i znaków nowej linii).s
będzie mieć od 1 do 100 znaków.n
jest liczbą całkowitą reprezentującą rozmiar każdego segmentu ciągu wyjściowego. Każda linia znaków (góra / dół lub lewo / prawo), które tworzą krzywe w „wężu”, man
długość znaków. Zobacz przykłady testowe.n
będzie między 3 a 10 włącznie.- Łańcuch wyjściowy zawsze zaczyna być skierowany w dół.
- Końcowe spacje w każdej linii są dozwolone.
- Dozwolone są również końcowe znaki nowej linii na końcu wyniku.
- Wiodące spacje są niedozwolone.
- code-golf oznacza, że wygrywa najkrótszy kod w bajtach.
Przypadki testowe
a 3
a
----------
Hello,World! 3
H Wor
e , l
llo d!
----------
ProgrammingPuzzlesAndCodeGolf 4
P ngPu Code
r i z d G
o m z n o
gram lesA lf
----------
IHopeYourProgramWorksForInputStringsWhichAre100CharactersLongBecauseThisTestCaseWillFailIfItDoesNot. 5
I gramW tStri 100Ch gBeca CaseW DoesN
H o o u n e a n u t i t o
o r r p g r r o s s l I t
p P k n s A a L e e l f .
eYour sForI Which cters ThisT FailI
----------
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ 10
! <=>?@ABCDE `abcdefghi
" ; F _ j
# : G ^ k
$ 9 H ] l
% 8 I \ m
& 7 J [ n
' 6 K Z o ~
( 5 L Y p }
) 4 M X q |
*+,-./0123 NOPQRSTUVW rstuvwxyz{
code-golf
string
ascii-art
code-golf
code-golf
string
balanced-string
decision-problem
code-golf
string
geometry
grid
code-golf
tips
lisp
code-golf
quine
tips
king-of-the-hill
code-challenge
math
code-golf
string
palindrome
math
fastest-code
code-golf
string
counting
code-golf
code-golf
internet
code-golf
quine
source-layout
hello-world
code-golf
math
number
sequence
arithmetic
code-golf
ascii-art
grid
code-golf
number
grid
code-golf
string
crossword
code-golf
code-golf
ascii-art
grid
counting
code-golf
code-golf
math
sequence
arithmetic
number-theory
code-golf
code-golf
graphical-output
geometry
random
code-golf
ascii-art
grid
counting
code-golf
string
ascii-art
code-challenge
test-battery
code-golf
string
code-golf
ascii-art
kolmogorov-complexity
code-golf
interpreter
code-golf
math
sequence
code-golf
math
primes
set-partitions
code-golf
użytkownik 81655
źródło
źródło
Odpowiedzi:
Pyth,
4845444342 bajtówWypróbuj online.
Podejście to robi to samo nadużywanie białych znaków jako odpowiedź Ruby.
źródło
Rubinowy, 87 bajtów
Niewielkie nadużycie reguły
Trailing spaces on each line are allowed.
Każda linia wyjściowa maw
długość znaków plus nowy wiersz, gdziew
jest długością oryginalnego łańcucha, tj. Wystarczająco długa, aby pomieścić całe wejście. Stąd jest dość niepotrzebnych białych znaków po prawej stronie dla dużychn
.Niegolfowany w programie testowym
źródło
JavaScript (ES6), 143 bajty
Gdzie
\n
reprezentuje dosłowną nową linię. Nie golfowany:źródło
Pyth,
857459 bajtówKl@Q0J0=Y*]d-+*@Q1K@Q1 1FNr1@Q1=XY-+*KNN1b;VK=XYJ@@Q0N=+J@[+K1 1-_K1 1).&3/N-@Q1 1;sY
=G@Q1=H@Q0KlHJ0=Y*]dt+*GKGFNr1G=XYt+*KNNb;VK=XYJ@HN=+J@[hK1t_K1).&3/NtG;sY
Dzięki @FryAmTheEggman za ogromną pomoc!
Grałem w golfa jak najwięcej. Wypróbuj tutaj! Z jakiegoś powodu zawijanie linii powoduje, że dane wyjściowe są dziwne. Możesz rzucić okiem na wynik na całej stronie
Wyjaśnienie
Oddychaj chwilę i skup się. Można to podzielić na trzy sekcje, jak prawie każdy „klasyczny” algorytm.
Pierwsza sekcja
To tutaj inicjowane są zmienne. Można go podzielić na dwie części:
druga część :
Druga sekcja
Zawiera rzeczywistą logikę.
Trzecia sekcja
To jest część wyjściowa. Niezbyt interesujące ...
PREMIA
Napisałem program pyth z tego skryptu python.
źródło
JavaScript (ES6), 122 bajty
Ten sam algorytm jak odpowiedź @ LevelRiverSt.
źródło
C, 138 bajtów
Używa ucieczek ANSI. Działa w terminalu Linux.
Nie golfowany:
źródło
JavaScript (ES6), 131
Algorytm: mapowanie pozycji
x,y
wyjściowej na indeks w ciągu wejściowym, w pewien sposób taka odpowiedź (niepowiązana).Pożyczałem od @LevelRiverSt, aby utrzymać szerokość poziomą równą długości wejściowej.
Mniej golfa
To był pierwszy działający projekt przed golfem
Test
źródło
Pyth, 122 bajty
Stworzyłem formułę do obliczania pozycji x, y każdego znaku na podstawie wielkości segmentu / modulo, ale stały się one większe niż się spodziewałem: c
Wyjaśnienie:
Przetestuj tutaj
W przypadku formuł matematycznych użyłem mod do wygenerowania flag 0/1, a następnie pomnożonego przez współczynnik oparty na danych wejściowych
n
, dodałem arkusz kalkulacyjny do każdego kroku na poniższym fragmencie koduPokaż fragment kodu
źródło
PHP,
127126124120119118117110106 bajtówWykorzystuje kodowanie ISO-8859-1.
Działaj w ten sposób (
-d
dodano tylko dla estetyki):Nie golfowany:
Poprawki
<
zamiast!=
0
, więc nie muszę dodawać kolejnego0
(w przypadku, gdy pierwszym wyjściem w linii było a0
), co daje prawdę00
.$o[$y]
==
do porównywania kierunku z 1 w celu zmiany współrzędnej xnull
naint
dla przesunięcia łańcucha, ponieważ przesunięcie łańcucha jest rzutowane na int$c
źródło