Twoje zadanie jest dość proste, napisz program, który drukuje Hello, world!
, który po przekręceniu tworzy program, który drukuje Twister!
.
Jak skręca się sznurki
Algorytm skręcania jest bardzo prosty. Każda kolumna jest przesunięta w dół o indeks (kolumna 0 przesuwa się w dół 0, kolumna 1 przesuwa się 1, ...). Przesunięcie kolumny zawija się do góry. Wygląda to tak:
a
ba
cba
----
cba
cb
c
Wszystko pod linią zawija się do góry. Prawdziwy przykład:
Original:
\\\\\\\\\\\\
............
............
............
Twisted:
\...\...\...
.\...\...\..
..\...\...\.
...\...\...\
(Dalsze przykłady i twistery w twoim ulubionym języku są tutaj )
Punktacja
Twój program musi być wypełnionym prostokątem. To jest golf golfowy, więc wygrywa najmniej bajtów!
Zasady
- Twój pierwszy program musi zostać wydrukowany
Hello, world!
. Dozwolony jest tylko jeden znak nowej linii. - Twój pierwszy i drugi program muszą być w tym samym języku.
- Drugi program musi zostać wydrukowany
Twister!
. Dozwolony jest tylko jeden znak nowej linii. - Twój program musi mieć co najmniej 2 wiersze i 2 kolumny.
½
i przyjmuje pierwiastek kwadratowy z liczby. Który z nich należy uznać za nową linię tego wyzwania?Odpowiedzi:
Galaretka ,
333129 bajtówOryginalny
Wypróbuj online.
Skręcone
Wypróbuj online!
Jak to działa
W każdym programie każda linia definiuje łącze. Ostatni jest głównym łączem i jest wykonywany podczas uruchamiania programu. Ponieważ nie ma żadnych odniesień do pierwszego linku, jest on po prostu ignorowany.
W przypadku obu programów
“ɗ⁻%OḶ$“¡¦ḟṠ»
zwraca listę['Hello, world!', 'Twister!']
przy użyciu statycznej kompresji słownika Jelly .Jedyną różnicą między oryginalnym a skręconym kodem jest ostatni znak głównego linku.
Ḣ
wybiera pierwszy ciąg listy iṪ
wybiera ostatni.źródło
Python 2, 59 bajtów
Skręcone:
Zasadniczo umieszcza
Twister!
dane w nieparzystych indeksach ciągu, a następnie zmienia się z usuwania pierwszych dwóch znaków (wypełniania) na usuwanie wszystkich pozostałych znaków.źródło
print " Hello, world!" [2::]
Rozszczepienie ,
215162565350 bajtówOto początek:
Wypróbuj online!
Po skręceniu:
Wypróbuj online!
Wyjaśnienie
Hello, world!
Kod jest dość prosty:D
spawnuje pojedynczy atom, schodząc w dół.\
(lustra) odchylają go do drugiej kolumny."Hello, world!"
wypisuje wymagany ciąg.1
to portal. Teleportuje atom do następnego1
w kolejności czytania, zachowując swój kierunek (to ten obokr
).;
który niszczy atom i kończy program.Przepływ sterujący dla
Twister!
kodu jest nieco bardziej ... zakręcony ...D
spawnuje atom.\
odbija go w prawo, do1
.1
. Atom uderza w tę,o
która właśnie zmienia swoją masę, ale możemy to zignorować. Kod jest zawijany, więc atom1
ponownie uderza w to samo , przeskakując o dwa rzędy. Ponownie możemy zignorowaćl
, atom owija się i uderza1
ponownie. Teraz nie ma już więcej1
w kodzie, więc atom przeskakuje z powrotem1
na górę.\
, a teraz znów spada."Twister!"
drukuje wymagany kod.1
teleportuje atom jeszcze raz, obok pierwszego;
, ale;
czeka go kolejne zakończenie programu.źródło
Rozszczepienie , 35 bajtów
Podejście do rozszczepienia nr 3 (nr 4 licząc to, które zedytowałem z pierwszego postu).
Wypróbuj online!
Wypróbuj online!
Wyjaśnienie
To właściwie najprostsze z dotychczasowych rozwiązań Fission. W obu programach są dwa punkty wejścia:
R
tworzy atom skierowany w prawo i atom skierowanyL
w lewo. W obu przypadkach;
jeden z nich niszczy natychmiast.Teraz w
Hello, world!
programie, atom pierwsze pół drukuje ciąg z"Hello, "
, wtedy\
i/
(które są lustra) odchylić atom na drugą linią idąc w lewo."world!"
(odczytany w kierunku poruszającego się atomu) drukuje resztę ciągu.L
jest teraz bezczynny i;
niszczy również ten atom, kończąc program.Twister!
Program jest zasadniczo taki sam, ale obrócone o 180 stopni. Tym razemL
atom przeżyje i zacznie drukować"Twist"
.\
I/
ponownie odwrócić go na drugą linię, teraz będzie dobrze."er!
wypisuje pozostałą część łańcucha,R
jest no-op i;
kończy działanie programu.źródło
Rozszczepienie, 53
Wypróbuj online!
i skręcone:
Wypróbuj online!
źródło
Japt,
676157 bajtówZaoszczędź 6 bajtów dzięki @JAtkin, 4 bajty dzięki @Ian
Skręcone:
Przetestuj online: oryginalny , skręcony
Jak to działa
źródło
Twister!
, zastępując je spacjami.
."T.w.i.s.t.e.r.!. . . . . "k".(newline)"H.e.l.l.o.,. .w.o.r.l.d.!"k".
Python, 398
414 380 456bajtów *Udało mi się zaktualizować, aby był zgodny z zasadami, ale nadal waham się nazywać to konkurencyjnym. Ponieważ wiersze z komentarzem są potrzebne do uruchomienia, umieściłem je w liczbie bajtów
To rozwiązanie nie jest zgodne z regułami, ponieważ oprócz dozwolonych danych wyjściowych będą drukować komunikaty o błędach.Chciałem tylko sprawdzić, czy można to zrobić w Pythonie. Może, ale to nie całkiem.
Kiedy skręca się
źródło
rint '
każdej linii.C (gcc) , 87 bajtów
Rozkręcony
Wypróbuj online!
Skręcone
Wypróbuj online!
źródło
Brainfuck,
467367285 bajtówRozkręcony
Wypróbuj online!
Skręcone
Wypróbuj online!
źródło