Jako rodzaj części 2 Hello, World! (Co drugi znak) , napisz program, w którym wszystkie trzy z tych programów wypiszą „Witaj, świecie!”: Cały program, 1., 3., 5. itd. Twojego programu oraz 2., 4., 6., itp.
Jeśli twój program to:
abc
def
Powinien on wypisać „Witaj, świecie!”, Ale tak też powinno być
acdf
I
b
e
Brak rozwiązań z wbudowanymi funkcjami „Hello, World!”.
code-golf
source-layout
hello-world
Leo Tenenbaum
źródło
źródło
Odpowiedzi:
kod maszynowy x86, 378 bajtów
PROG.COM Pobierz i uruchom go w emulatorze MS-DOS , na przykład DOSBox .
Możesz także pobrać LEFT.COM i RIGHT.COM
Jak to działa i jak uruchomić
Zobacz odpowiedź do pierwszej części
magia
Jeśli chcesz wykonać polecenie opcode 0xAB z jednym parametrem 0xCD , piszesz
Generator
Uruchom kod, uzyskaj hex. Konwertuj na binarny
Pokaż fragment kodu
źródło
Python 3 , 115 bajtów
Każda dziwna postać
Każda parzysta postać
Wypróbuj online!
Prawdopodobnie może to być znacznie krótsze, ale cieszę się, że udało mi się go uruchomić w Pythonie. Podobne do odpowiedzi vroomfondel w pierwszej części.
Nudna 93 bajtowa odpowiedź
Każda dziwna postać
Każda parzysta postać
Wypróbuj online!
źródło
> <> , 45 bajtów
Lub tylko postacie:
Lub po prostu dziwne postacie:
Wypróbuj je online: oryginalne , wyrównane , kursy .
Oryginalna wersja wypycha „
!!ddllrrooWW oolllleeHH
” na stos, a następnie ryba odbija się między>~o <
, co usuwa literę, drukuje dwa, usuwa dwa, drukuje dwa, usuwa dwa itd. Dwa półprogramy są dość standardowymi programami do drukowania ciągów. Trudną częścią było prawidłowe łączenie"
i!
przełączanie trybu ciągów we wszystkich trzech programach.źródło
Befunge-98 , 43 bajty
Wypróbuj online!
Tylko dziwne:
Wypróbuj online!
Tylko parzyste:
Wypróbuj online!
Wyjaśnienie
Pełny program:
W programie nieparzystym
2
zniknął, więc tak10x
naprawdę w ogóle nic nie robi (i tak ustawia deltę,(1,0)
która jest domyślna). Pozostała część programu jest wtedy taka sama.W programie parzystym przesuwamy tylko
2
na początku, co możemy całkowicie zignorować. Pozostała część programu jest taka sama jak poprzednio.źródło
Gammaplex , 46 bajtów
Spójrz tutaj.
Interpretator. Może wymagać pewnych zmian, aby działać w nowoczesnych kompilatorach.
źródło
Mathematica, 65 bajtów
Zgłasza ostrzeżenia, odciski
Hello, World!
i zwracaNull PPrriinntt[["" HHeelllloo, Null, "" WWoorrlldd!!]]
. Gdy zostanie uruchomiony jako program (nie w REPL), zwracana wartość nie zostanie wydrukowana.Po usunięciu parzystych znaków:
Drukuje
Hello, World!
i zwraca"el,Wrd" Null Pit
.Po usunięciu nieparzystych znaków:
Drukuje
Hello, World!
i zwracaNull ol! rn[Hlo]
.źródło
kod maszynowy x86, 73 bajty
Zainspirowany rozwiązaniem Евгений Новиков , pomyślałem, że powinno być wykonalne przy mniejszej liczbie sztuczek, tj. Po prostu przeskakując, by w przeciwnym razie „rozdzielić” kody dla wszystkich trzech wariantów. Nadal próbuję z inteligentnym wariantem, który wykorzystuje
lodsb; lodsb
jako punkt centralny (więc dla wszystkich wariantów potrzebna jest tylko jedna stała łańcucha)Jeśli dobrze pamiętam z dzieciństwa, zaczyna się od małego modelu COM
DS=CS=SS
a kod jest ładowany od początkuCS:0100h
. Nie zakładam, że jest gwarantowane, że kod jest ładowany do wyzerowanego bloku pamięci (gdyby to było zagwarantowane, mogłem upuścić dwa bajty).Demontaż długiego kodu powinien być
Demontaż nieparzystego kodu
Demontaż parzystego kodu:
źródło
8A
W 0116 powinno byćBA
zamiast, a łańcuchy są zakończone$
, nie jest pusta.Siatkówka , 48 bajtów
Wypróbuj online!
Dziwne pozycje:
Wypróbuj online!
Równe pozycje:
Wypróbuj online!
Wyjaśnienie
Pełny program:
To nic nie robi. To
|
nie jest istniejąca opcja konfiguracji. ToG
sprawia, że jest to etap grep, ale tak naprawdę nie ma nic do grepowania, a wyrażenie regularne jest puste, więc to nic nie robi. Celem tego etapu jest ustawienie dwóch kanałów przed głównym „Witaj, świecie!” tak, aby jeden z nich zawsze przetrwał redukcję. Powodem, dla którego jest to jeleń grep, jest to, że musimy zrównoważyć parzystość linii, a etapy grep wymagają tylko jednej linii.Powoduje to przekształcenie (pustego) ciągu roboczego w wymagany wynik z podwojeniem każdego znaku.
To nic nie robi. Wyrażenie regularne próbuje dopasować a
_
i a&
po końcu łańcucha, co jest oczywiście niemożliwe. Będziemy jednak potrzebować tych postaci w zmniejszonej wersji, ponownie, aby poradzić sobie z znikającymi liniami.Na koniec usuwamy zduplikowane znaki, zastępując
(.)\1
je$1
. Thet?
Nigdy nie jest używany, ale znów będzie to konieczne w obniżonej wersji.Program nieparzysty:
Nie
G
można dopasować pustego wejścia, ale dlatego musimy|
zezwolić na alternatywne puste dopasowanie. To zamienia pusty ciąg roboczy w pożądane wyjście.Zastępuje to podkreślenia
()1?$
, ale w ciągu nie ma żadnych podkreślników, więc to nic nie robi.Program parzysty:
Po
`
prostu oznacza pusty ciąg konfiguracji, więc ponownie używamy pustego wyrażenia regularnego, aby zastąpić ciąg roboczy wyjściem. Tym razem również wstawiamy,$&
ale to samo dopasowanie, które jest oczywiście puste, więc nic nie robi.Zastąpiłoby to dowolny znak, a po nim tabulację
1
, ale nie mamy żadnych tabulatorów, więc nie można tego zrobić.źródło
Lua , 106 bajtów
Wypróbuj online!
Alternatywa 1:
Wypróbuj online!
Alternatywa nr 2:
Wypróbuj online!
Skrypt alternatora: wypróbuj online!
źródło
CJam , 44 bajty
Wypróbuj online!
źródło
PHP, 70 bajtów
Dziwne znaki:
Parzyste postacie:
źródło
Haskell , 92 bajty
Wypróbuj online! Wygląda na to, że nadużywanie komentarzy jest zbyt duże, aby podświetlić składnię.
{- ... -}
jest komentarzem liniowym lub wieloliniowym, natomiast--
rozpoczyna komentarz liniowy.Dziwne znaki:
Wypróbuj online!
Parzyste postacie:
Wypróbuj online!
źródło
Zsh , 54 bajty
Wypróbuj online!
Program główny wykonuje pierwszą instrukcję z powodzeniem, więc instrukcja po wartości logicznej
||
jest ignorowana.Dla nieparzystych / parzystych
<<<Hello\ world!
staje się albo nieskończony,<<heredoc
albo<file
podany na standardowym wejściu. Tak czy inaczej,||
staje się|
, a więc wszystko, co wyprowadza pierwsze polecenie, jest przesyłane do i ignorowane przezecho
.źródło
LOGO , 71 bajtów
(program ma końcowy znak nowej linii)
Dwie usunięte wersje:
i
(program ma końcowy znak nowej linii)
Wyjaśnienie, co
pr
i jaker
zrobić, zobacz ten post . W tym przypadkuer
jest podawany kanał ze słowem określającym nazwę procedury.Znak
\
ucieczki w Logo, który ucieka od nowego wiersza po zakończeniu komentarza, dlatego drugi wiersz (rHlo ol!e |
) drugiego usuniętego programu jest komentarzem.źródło
JavaScript, 68 bajtów
Dziwne postacie:
Parzyste postacie:
Zmodyfikowana wersja mojej odpowiedzi na drugiej.
źródło
l
w nimHHeelllloo
.Perl 5 , 61 bajtów
Kod 60 bajtów + 1 dla
-p
.Wypróbuj online!
Każdy nieparzysty bajt
Wypróbuj online!
Każdy parzysty bajt
Wypróbuj online!
źródło
BotEngine ,
180178 bajtówNa podstawie mojej odpowiedzi na to pytanie.
Dziwne znaki (zwróć uwagę na wiele końcowych spacji w ostatnim wierszu):
Parzyste postacie:
źródło
Runiczne Zaklęcia , 52 bajty
Wypróbuj online!
Runiczna zwykle nie jest bardzo dobra w radzeniu sobie z promieniowaniem, ponieważ losowe usuwanie znaków kontroli przepływu sprawia, że wykonywanie śledzenia jest ogromnym bólem, ale przewidywalne promieniowanie jak każda inna postać? Łatwo, po prostu kodujemy dwa programy, które są odwrócone od siebie i przeplecione, a następnie dołączamy trzecią kopię do wykonania podstawowego i kontrolowania, która jest wykonywana za pomocą jednego znaku. W programie 2 trzecia kopia jest śmieciem, którego nigdy nie widziano, aw programie 3 zachowuje cudzysłowy, pozwalając na wyskakiwanie bez drukowania.
Program 1 wykonuje tylko tę część:
Program 2 wykonuje tylko tę część:
Lubię to:
Wypróbuj online!
Program 3 wykonuje tylko tę część:
Lubię to:
Wypróbuj online!
"drW,le"
Część jest wykonana, ale~
natychmiast pojawia się ze stosu z zachowaniem pożądanej wydajności.Naiwnie wydaje się, że konwersja odpowiedzi> <> spowoduje krótszy program ważący 45 bajtów:
Jednak Runic ma jedno ograniczenie, którego nie ma>>>: maksymalny rozmiar stosu wynoszący 10 + many (początkowo 10). I
!!ddllrrooWW oolllleeHH
zawiera 24 znaki, co powoduje, że IP upuszcza manę, dopóki nie wygaśnie tuż przed wykonaniemR
polecenia, co powoduje brak wyjścia dla programu podstawowego.Wypróbuj online!
źródło