Inspirowane przez Czy początek oznacza koniec
Biorąc pod uwagę ciąg s
i liczbę całkowitą n
, wypisz prawdę / falsey, czy n
th char in s
jest równy n
th od końca char s
.
Wkład
Niepusty ciąg i liczba całkowita. Możesz użyć indeksowania opartego na 0 lub indeksowania opartego na 1. Liczba całkowita jest gwarantowana na podstawie ciągu. Na przykład, jeśli ciąg znaków to „supercalifragalistic123”, liczba całkowita może wynosić od 1 do 23 dla indeksowania opartego na 1, i od 0 do 22 dla indeksowania opartego na 0. Uwaga: n
może być większa niż połowa długości s
.
Dane wejściowe są ograniczone do drukowalnego ASCII.
Wydajność
Wartość true / falsey na podstawie tego, czy n
wartość th s
jest równa n
th od ostatniej wartości w s
.
Należy pamiętać, że ostatni znak znajduje się w pozycji 0 dla indeksowania opartego na 0 i pozycji 1 dla indeksowania opartego na 0. Pomyśl o tym jako o porównaniu łańcucha do jego odwrotności.
Przypadki testowe
0-indeksowane
"1", 0 Truthy 1 == 1
"abc", 1 Truthy b == b
"aaaaaaa", 3 Truthy a == a
"[][]", 1 Falsey ] != [
"[][]", 0 Falsey [ != ]
"ppqqpq", 2 Truthy q == q
"ababab", 5 Falsey a != b
"12345", 0 Falsey 1 != 5
"letter", 1 Truthy e == e
"zxywv", 3 Falsey w != x
1-indeksowany
"1", 1 Truthy 1 == 1
"abc", 2 Truthy b == b
"aaaaaaa", 4 Truthy a == a
"[][]", 2 Falsey ] != [
"[][]", 1 Falsey [ != ]
"ppqqpq", 3 Truthy q == q
"ababab", 6 Falsey a != b
"12345", 1 Falsey 1 != 5
"letter", 2 Truthy e == e
"zxywv", 4 Falsey w != x
n
jako punkt kodowy? (dla ezoterycznych języków, takich jak uderzenie mózgu)Odpowiedzi:
Galaretka ,
54 bajtówWypróbuj online!
W Jelly nie powinno być krótszych odpowiedzi. Program potrzebowałby porównania, odwrócenia / negacji, wywołania indeksu i bajtu dla przepływu sterowania (
Ɠ
w tym przypadku), który sumuje się do czterech bajtów.Jak to działa
-1 bajt dzięki @ ais523, przy użyciu
Ɠ
źródło
ịµU=
³
, ponieważƓ
kosztuje jeden bajt, ale³
niejawnie i często daje większą elastyczność przepływu sterowania.JavaScript (ES6), 26 bajtów
Alternatywnie:
Ten prawie działa, ale kończy się niepowodzeniem, gdy
n == 0
(ponieważs.slice(-1,0) == ""
):Kolejne 26-bajtowe rozwiązanie wskazane przez @RickHitchcock :
źródło
~
, nigdy by tego nie pomyślało.MATL , 5 bajtów
Wypróbuj online!
Wyjaśnienie:
źródło
Oktawa , 22 bajty
Wypróbuj online!
Lub ta sama liczba bajtów:
Wypróbuj online!
Wyjaśnienie:
To całkiem proste. Pierwszy pobiera ciąg znaków
s
i liczbę całkowitąn
jako dane wejściowe i sprawdza n-ty elements(n)
n- z „last-n + 1”.Drugi sprawdza n-ty element
s(n)
względem n-tego elementus
odwróconego.źródło
05AB1E ,
75 bajtów-2 bajty dzięki Adnan
Wypróbuj online! lub Wypróbuj wszystkie testy
Wypróbuj online!
źródło
ÂøsèË
oszczędza dwa bajtyHaskell, 22 bajty
0-basd. Przykład użycia:
"letter" # 1
->True
.Wypróbuj online!
źródło
Alice , 24 bajty
Wypróbuj online!
Dane wejściowe składają się z ciągu w jednym wierszu i liczby w drugim wierszu. Dane wyjściowe to
Jabberwocky
jeśli znaki są takie same i nic innego.Wyjaśnienie
Ten program jest głównie w trybie porządkowym, z jednym poleceniem w trybie kardynalnym. Zlinearyzowany program jest następujący:
źródło
Python ,
2422 bajty-2 bajty dzięki Adnan.
Wypróbuj online!
źródło
-n-1
przez~n
.Cubix , 22 bajty
1 indeksowane bierze wejście jako
index
,string
oddzielone odstępem.Wypróbuj online
Cubified
Wyjaśnienie
Jest to głównie liniowe. Główną logiką jest
Następnie rozgałęziamy się
?
naO
utput,1
jeśli wynik wynosi 0 i0
inaczej.źródło
Java 8,
4342 bajtyWypróbuj tutaj.
źródło
C #,
2827 bajtówZapisano bajt dzięki @KevinCruijssen.
Kompiluje do
Func<string, Func<int, bool>>
.źródło
s.Length-n-1
nas.Length+~n
.CJam , 8 bajtów
Wypróbuj online!
Indeks z indeksowaniem 0 jest na pierwszym miejscu.
źródło
R 51 bajtów
Funkcja anonimowa, wykorzystuje indeksowanie 1
źródło
function(s,n)(s=utf8ToInt(s))[n]==rev(s)[n]
Rubin,
222018 bajtówźródło
->s,n{s[n]==s[~n]}
powinienem pracować? (Nie mam pojęcia o ruby)Clojure, 27 bajtów
Wow, to było krótsze niż się spodziewałem.
źródło
APL (Dyalog) ,
105 bajtówJest to funkcja ukryta, której należy przypisać nazwę taką jak
f←⊃=⊃∘⌽
, a następnie wywołać jakoint f string
.Dzięki @ Adám za 5 bajtów.
Jak to działa:
Wypróbuj online!
22 bajtowa odpowiedź została zredagowana. Jeśli chcesz to zobaczyć, sprawdź historię zmian.
źródło
1
jak domyślny lewy argument. Wypróbuj online! Funkcje niczego nie zakładają; stosuje się je dynastycznie, ponieważ podano im zarówno lewy, jak i prawy argument.⊃
bierze pierwszy element argumentu? W każdym razie dokonam edycji w celu wyjaśnienia.V ,
26, 16, 13 bajtówWypróbuj online!
Hexdump:
1 indeksowany.
Wyjaśnienie:
Dla porównania moja pierwotna odpowiedź brzmiała:
Wypróbuj online! (0 indeksowane)
Hexdump:
źródło
Àñx$x|ñ
czuje się jak zbyt wiele postaci. Próbowałem tylko wyrażenia regularnego, ale skończyło się na 24 długich!Mathematica, 34 bajtów
źródło
StringTake[#, #2]
bierze pierwsze#2
postacie#
.StringPart
działałoby dobrze w tym przypadku.#~(s=StringPart)~-#2==s@##&
#~s~{#2}==#~s~{#2}&
zawszeTrue
List
zString
S jako wejście, więc#[[#2]]==#[[-#2]]&
wystarczyPerl 6 , 27 bajtów
Sprawdź to
źródło
PHP> = 7,1, 36 bajtów
Wersja online
źródło
~+$p
oszczędza jeden bajt.Pyth ,
87 bajtówPrzy odwróconym wejściu: najpierw indeks, a następnie ciąg. Jest indeksowany na 0.
Objaśnienia:
Wypróbuj online!
źródło
Lua, 46 bajtów
Wypróbuj online!
źródło
s
, and you need to output it as wellJ, 6 bytes
-4 bytes thanks to FrownyFrog
See original answer explanation -- idea is similar enough, but this is accomplished with a dyadic hook whose right verb is itself a monadic hook.
Try it online!
original answer (10 bytes)
,:|.
right arg on top of reverse right arg=/
are they elementwise equal?{
take from that boolean list the index indicated by the left argTry it online!
źródło
C,
3635 bytesUses 0-based indexing, naturally.
Try it online!
źródło
-1-n
can be+~n
.Japt,
10 98 bytesTry it online!
źródło
QBIC, 18 bytes
Explanation
źródło
CJam, 11 bytes
Bad. Too much stack manipulation.
źródło
><> (with this interpreter), 25 bytes
It doesn't work in TIO: the TIO interpreter doesn't reverse the new stack when doing the
[
instruction, but the fish playground does — compare"abcde"5[ooooo;
run here and here, for example.The string input is taken from STDIN, and we assume n is already on the stack. Uses 1-indexing.
The fish gets the nth character with
[:}]&
, which siphons off the first n things on the stack into a new, reversed stack, manipulates that a bit, then puts the things back and saves the nth character in the register. It then reverses the whole stack and does the same again, and returns 1 if the two characters are equal, and 0 otherwise.This seems to work at TIO, for 26 bytes:
źródło
C, 73 bytes
Compiles as-is with GCC 6.3.1 (no flags). Some unnecessary obfuscation included.
Usage
Truthy = nothing, falsey = garbage.
źródło
Lua, 35 bytes
Uses 1-indexing.
Try it online!
źródło