Wstaw tutaj piaskownicę .
Utwórz funkcję lub program, który „Springify” ciąg.
- Dane wejściowe będą ciągiem w standardowym standardzie lub najbliższą alternatywą
- Dane wejściowe będą zawierać tylko drukowalne ASCII i / lub spacje
- Dane wyjściowe będą do Stdout lub najbliższej alternatywy
- Końcowe znaki nowej linii i spacje są dopuszczalne
Jak sprifyfikować ciąg
- Sformatuj ciąg w dowolną liczbę cewek sprężynowych ASCII
- Wypełnij cewki odstępami, aż do najbliższej cewki
- Odczytaj postacie, podążając za sprężyną wokół cewek
To jest cewka sprężynowa ASCII:
#
# ####
# #
# ####
#
Gdzie #s są znakami ciągu
Oto przykład:
abcdefghijklmnopqrstuvwxyz
staje się
a
b cdef
g h
i jklm
n
o
p qrst
u v
w xyz.
.
Gdzie .s zastępują spacje dla widoczności.
Następnie ciąg jest odczytywany ponownie, po sprężynie ASCII w dół, wokół pętli, uderzając w gi udwukrotnie:
1| a <-3
V b cdef
g h
4| i jklm
V n 2->
...
...dający:
abgjklmhfedcginopuxyz vtsrquw (ze spacją)
Przypadki testowe
(dodano cytaty w celu podkreślenia końcowych spacji - zignoruj je pod względem IO)
I: "abcdefghijklmnopqrstuvwxyz"
O: "abgjklmhfedcginopuxyz vtsrquw "
I: "!@#"
O: "!@ # "
I: ""
O: ""
I: "12345 67890"
O: "12690 7 54368 "
I: " "
O: " "
Należy pamiętać, że długość wyjściowa jest zawsze wielokrotnością 15, czyli długości cewki sprężynowej
To jest golf golfowy , więc wygrywa najkrótsza odpowiedź w bajtach.

Główna pętla rozpoczyna wykonywanie od prawej do lewej, owijając się po prawej stronie pola gry. Tutaj czytamy pierwszy znak ze standardowego wejścia i kończymy, jeśli jest to EOF.
Następna sekcja upewnia się, że wszystkie znaki EOF są konwertowane na spacje za pomocą formuły
Kopia znaku jest zapisywana w pamięci tymczasowej, a następnie w tabeli w wierszu czwartym (
) wykonywane jest wyszukiwanie bieżącego indeksu w celu ustalenia, czy znak powinien zostać wyprowadzony, czy nie.
Jeśli postać musi zostać wyprowadzona, bierzemy lewą gałąź. Tutaj wykonywana jest zamiana, aby anulować zamianę, która nastąpi potem, a następnie naciśnięcie zera powoduje wymuszenie prawidłowego rozgałęzienia.
Jeśli postać nie została wypisana, zamieniamy ją na stos pod licznikiem indeksów (jest to zamiana, która zostaje anulowana w lewej gałęzi). I w obu przypadkach zapisujemy znak do pamięci przy bieżącym przesunięciu indeksu, zwiększamy indeks i sprawdzamy, czy jest on większy niż 13.
Jeśli nie, odczytujemy kolejny znak ze standardowego wejścia i powtarzamy wewnętrzną pętlę.
Jeśli tak, skończymy zestaw 14 znaków, 7 zostało wypisanych (