Wyzwanie jest proste: wydrukuj ostatni, środkowy i pierwszy znak kodu źródłowego programu w tej kolejności.
Środkowy znak jest zdefiniowany w następujący sposób, przyjmując długość źródła n
znaków i indeksowanie 1:
- Jeśli
n
jest parzysty, wypiszn/2
-ty in/2 + 1
-ty znak. (abcdef == cd
) - Jeśli
n
jest nieparzysty, wypisz(n-1)/2 + 1
-ty znak. (abcde == c
)
Zasady
- Bez danych wejściowych wydrukuj ostatni, środkowy i pierwszy znak w kodzie źródłowym, w formie
[last][middle][first]
. Będzie to 3-4 znaki. - Dane wyjściowe nie mogą zawierać końcowych białych znaków. Jeśli jednak biały znak jest pierwszym, środkowym lub ostatnim znakiem, musi zostać wydrukowany jako taki.
- Kod źródłowy musi mieć
n >= 3
długość znaków. - Kod musi składać się z
>= 3
unikalnych znaków. - Standardowe luki są zabronione.
- To jest golf golfowy , więc wygrywa najkrótsze rozwiązanie postaci .
Próbki
# Form: [code] --> [output]
xyz --> zyx
abcd --> dbca
1 --> # not allowed: too short
abcde --> eca
aaabb --> # not allowed: not enough unique characters
System.out.print("S;pr"); --> ;prS
this is a test --> ts t
123[newline]45 --> 53[newline]1
121
w wielu językach.-
do negacji i niejawnie drukuje z przesuwem linii,\n1-
to jest trzy bajtowy. Moje poszukiwania były jak dotąd bezowocne.Odpowiedzi:
JavaScript,
97 bajtówWyjścia:
NaN
Wypróbuj online!
źródło
Trawa , 17 bajtów
Wypróbuj online!
-2 bajty dzięki jimmy23013.
Wyjścia
www
. Trawa ignoruje wszystkie znaki opróczw
,W
iv
. ObaV
są więc ignorowane; są tam po to, aby upewnić się, że środkowy znak jestw
- nie mam pojęcia, jak wyprowadzaćv
lubW
w Grass… Mógłbym użyć innego znakuV
, aleV
zachowuje estetykę kodu.źródło
x
s (lub dowolną inną postać nie będącą Trawą, którą Grass ignoruje), aby przenieść jąw
w odpowiednie miejsce.wWWwww wWWwWWWww
V
s, ponieważ uważam to za ładniejsze. ;-)pieprzenie mózgu , 17 bajtów
Wypróbuj online!
W przypadku niedrukowalnych można to zmniejszyć do 7 bajtów:
␀..␀_.␀
źródło
U
jako instrukcji. Funkcjonalnie kod jest-[>+<---]>.
, więc oczekiwany wynik byłby.--
, którego nie wyprowadza.U
s, a ten interpreter chętnie je ignoruje. Czy nie należy liczyć każdej odpowiedzi, która zawiera komentarze lub wiele spacji (lub cokolwiek innego, co niekoniecznie ma znaczenie dla języka)?U-[>+<-UU--]>...U
? W obecnej formie kod pokazuje tylko jeden Uÿ-.ÿ..ÿ
? To jest krótkie do wydrukowania.Język programowania Szekspira , 119 bajtów
Wypróbuj online!
Drukuje trzy spacje. Bez spacji:
Język programowania Szekspira , 227 bajtów
Wypróbuj online!
Podobnie jak moja nowa odpowiedź INTERCAL, która nie zawiera nowej linii, jest ona tak skonstruowana, aby ostatni znak programu był taki sam jak środkowy znak (chociaż w tym przypadku nie jest to również pierwszy), odznaczając drugą część kodu, dopóki nie mecz. (Nie jestem pewien, czy mógłbym zbudować 46 w mniejszej liczbie bajtów, czy nie, czy też mógłbym zagrać w golfa w innych częściach pierwszej połowy więcej).
źródło
!
Python 2 ,
1311 bajtówAby spacja była czysta:
Wypróbuj online!
-2 bajty, dzięki wastl!
źródło
RProgN 2 , 3 bajty
Wypróbuj online!
Myślę, że to jest ważne?
źródło
1
i0
są wypychani na stos, a następnie niejawny pop-print na końcu programu? Tak, to jest ważne[quine]
wyzwaniami, zanim zasady quine uległy zmianie.tac
systemie Linux.05AB1E ,
75 bajtówWyjścia
R \n
.-2 bajty, czerpiąc inspirację z odpowiedzi Batch @Neil , więc pamiętajcie o nim również!
Wypróbuj online.
5 bajtów alternatywnie przez @Grimy :
Wyjścia
12\n
.Wypróbuj online.
Początkowa 7 bajtów odpowiedź:
Wyjścia
?«'
.Wypróbuj online.
Wyjaśnienie:
źródło
PHP , 9 bajtów
Wypróbuj online!
źródło
<?
znacznika, możesz użyć jednego z trywialnych 4-bajtowych rozwiązań, takich jak1231
- cokolwiek bez specjalnego znaku jako pierwszego i ostatniego, dowolne inne 2 znaki pośrodku. Twoja odpowiedź może być najkrótszą rzeczywistą odpowiedzią na kod PHP.Galaretka , 5 bajtów
Wypróbuj online!
Dane wyjściowe mają dwa różne znaki, ale kod ma również trzeci.
Trywialna 4-bajtowa wersja:
źródło
121
również ważna, trywialna odpowiedź?Excel, 9 bajtów
Tyle nawiasów.
Uwaga: Zwrócony środkowy znak może faktycznie być dowolnym znakiem, ponieważ jest to środek kodu.
źródło
"
. Dobra robota!Rubinowy , 6 bajtów
Wypróbuj online!
To
" "
daje plus nowy wiersz. Kod kończy się na"
, środkowe dwa znaki toi
"
, i zaczyna się od nowej linii.źródło
Język wsadowy DOS / Windows, 9 bajtów
źródło
Rubin ,
119 bajtówWypróbuj online!
źródło
Partia, 9 znaków
Środkowy i ostatni znak to oba
h
, a następnieecho
domyślnie wypisuje nowy wiersz, który jest pierwszym znakiem skryptu.źródło
PowerShell, 3 bajty
Działa tylko w systemie Microsoft Windows.
Dane wyjściowe mają niestety 8 bajtów w UTF-16. Ale pytanie brzmi: wyprowadzaj znaki, a nie bajty. Prawdopodobnie UTF-16 jest tylko jednym z obsługiwanych sposobów reprezentowania znaków w PowerShell. Nie są one interpretowane inaczej niż plik ASCII.
źródło
0x0a != 0x0d != 0x31
:)Bash (
1511 znaków)który drukuje
|rev
źródło
echo<space>e<space><space>e
wyświetlie<space>e<newline>
zamiaste<space>e
, więc ją odrzuciłem. Nowa linia jest częścią wyniku, dlatego GrzegorzOledzki używa tej-n
opcji. Wypróbujecho -n e-e
online vs Wypróbujecho e e
online . I znowu, proszę, nie edytuj odpowiedzi innych ludzi. Jeśli masz do zaoferowania golfa, zostaw komentarz.printf pfp
, ale tylko dlatego, że potrzebujemy dwóch spacji ze względu na definicję środkowego znaku, w przeciwnym razie byłoby to 10 ...ArnoldC , 61 bajtów
Wypróbuj online!
Trywialna odpowiedź w ArnoldC. 31 bajt to spacja tuż przed literałem łańcucha.
źródło
Niedociążenie ,
9 bajtów7 bajtówDzięki Khuldraeseth na'Barya za ulepszone rozwiązanie!
Co do tego, co mogę powiedzieć, nie można tego teraz poprawić, ponieważ:
Wypróbuj online!
źródło
Język programowania Szekspira ,
163153 bajty-10 bajtów dzięki Jo Kingowi.
Wypróbuj online!
Moja pierwsza odpowiedź SPL! Wyjścia
!BB
.Istnieje inna odpowiedź SPL autorstwa niepowiązanego łańcucha; w tej odpowiedzi wypisują tylko spacje w 119 bajtach lub znaki spacji w 227 bajtach. Ten znajduje się pomiędzy, a także wyświetla znaki spacji.
Wykorzystywane są tutaj dwie sztuczki:
!
.
!
.
B
, stąd tytuł jestB
i potrzebuję drugiego „dużego”, aby być „dużym”, co działa, ponieważ SPL nie rozróżnia wielkości liter.Ponieważ potrzebowałem kapitału
B
i wykrzyknika na końcu, postanowiłem, że Ajax będzie krzyczał coraz głośniej.źródło
CJam , 7 bajtów
Wypróbuj online!
źródło
0 1 0
jest krótszy i ma również trzy różne postacie (nie chcę odświeżać mojego podejścia do galaretki: P).Befunge-93 , 7 bajtów
Wypróbuj online!
Wyjaśnienie
Dane wyjściowe to
0 .
źródło
APL (Dyalog Unicode) ,
54 bajtówPełne programy.
Nudne rozwiązanie J.Sallé:
Drukuje ten numer. O wiele bardziej interesujące rozwiązanie:
Wypróbuj online!
APL ignoruje wiodące zera, więc jest to po prostu skalowany format dla 10 × 10¹ = 100.
źródło
Szef kuchni , 447 bajtów
Wypróbuj online!
Poważne poddanie się,
196177 bajtówdzięki A__
Wypróbuj online!
źródło
Python 3,
19 bajtów13 bajtówFunkcja drukowania domyślnie dodaje nową linię, więc kod zaczyna się od nowej linii. Ostatni znak kodu to „)”, więc jest drukowany jako pierwszy. Aby liczba znaków była nierówna, należy wstawić spację przed argumentem funkcji drukowania. Proszę wybaczyć lubieżność kodu.
Wyjścia:
)(\n
Wypróbuj online.
źródło
print
i spacje wewnątrzprint
po")("
. Wyjścia:)(
z nową linią na końcu.end
parametr funkcji drukowania, nie liczą się.Odstępu ,
3129 bajtów-2 bajty dzięki @RobinRyder .
Litery
S
(spacja),T
(tab) iN
(nowa linia) dodane tylko jako wyróżnienia.[..._some_action]
dodano tylko jako wyjaśnienie.Wypróbuj online (tylko z surowymi spacjami, tabulatorami i nowymi wierszami).
Zawiera brak opcji
a
(może to być dowolny znak inny niż spacja), co powoduje, że długość jest nieparzysta. Jest dodawany przed pierwszą połową programu, więc środkowy znak jest również spacją, ponieważ środkowy znak stałby się znakiem nowej linii, gdyby znajdował się na drugiej połowie programu. Wszystkie znaki niebiałe są ignorowane w programach białych znaków.źródło
Haskell , 17 bajtów
Wypróbuj online!
źródło
MathGolf ,
54 bajtów-1 bajt przy użyciu trywialnego rozwiązania przedstawionego przez @ErikTheOutgolfer w jego odpowiedzi Jelly , która działa dla każdego języka z niejawnym wyjściem bez kończenia nowej linii.
Wypróbuj online.
Oryginalna odpowiedź 5 bajtów :
Wyjścia
x ù
.Wypróbuj online.
Wyjaśnienie:
źródło
Brain-Flak , 11 bajtów
Wypróbuj online!
Wyjaśnienie
Musimy umieścić 3 rzeczy na stosie. Najszybszym sposobem na to jest umieszczenie 3 1s (lub zer) na stosie. Teraz, ponieważ
(punkt kodowy 1) nic nie robi w Brain-Flak, możemy dodać je do programu na pierwszym środkowym i ostatnim miejscu. Teraz wydaje się to nieco podstępne, więc oto dwie kolejne odpowiedzi, które moim zdaniem są mniej podstępne.
Drukuje nawiasy klamrowe, 31 bajtów
Wypróbuj online!
Ta odpowiedź drukuje nawiasy klamrowe, dzięki czemu drukowane znaki są rzeczywiście związane z kodem, ma jeden znak dopełniający, który powoduje, że długość jest nieparzysta, więc musimy wydrukować tylko 1 środkowy znak.
Zawiera tylko nawiasy klamrowe, 32 bajty
Wypróbuj online!
Jest to program wyłącznie dla nawiasów klamrowych, zarówno źródło, jak i (w konsekwencji) dane wyjściowe składają się w całości z nawiasów klamrowych (postać, o którą właściwie chodzi Brain-Flak).
źródło
AsciiDots - 9 bajtów
Wynik:
.$.
Kod zaczyna się na a
.
, kończy na a.
, a środkowy znak to$
. Pojedynczy cudzysłów na środku ustawia tryb drukowania kropkowego, aby po prostu czytać znaki bezpośrednio w strumieniu wyjściowym.Możliwe, że można to zmniejszyć, ale zaczynam wątpić, że tak. Aby wydrukować trzy znaki, należy użyć pojedynczego cudzysłowu, ponieważ podwójny cudzysłów wymagałby końca łańcucha w celu uzyskania wyniku. Oznacza to jednak, że po pojedynczym cudzysłowie a) muszą następować trzy znaki, a b) nie może być znakiem centralnym. Aby zmniejszyć to do siedmiu bajtów, zastanawiałem się nad ponownym użyciem początku kropki jako jednej z drukowanych postaci (coś w rodzaju programu Quine AsciiDota). Odkryłem jednak, że najkrótsza sekwencja dostępna do drukowania to
($'
który musiałby wydrukować cztery znaki w odstępie trzech lub trzy znaki w odstępie czterech. Próbowałem także kilku alternatywnych metod, takich jak próba wydrukowania wartości kropki (czyli 0) jako jednego ze znaków. Chociaż może istnieć jakiś system, który działa, uważam, że są one dość złożone i duże. Dlatego uważam, że powyższe jest najmniejszym rozwiązaniem. (Zaktualizuję, jeśli znajdę coś mniejszego)źródło
/'$'-.[newline]\.
Wypróbuj online!MATLAB, 13
15bajtówWyjścia
) d
Poprzednia wersja (15 bajtów, mniej ścisłe wyjście):
Wyjścia
'''
źródło
ans =\n '''\n
. Zwykle nie stanowi to problemu, ale wydaje się, że wyzwanie to ustanawia ostrzejsze standardy. Ale może źle interpretuję to wyzwanie.