Inspiriert von Gleicht der Start dem Ende?
Geben Sie bei einer gegebenen Zeichenfolge s
und einer Ganzzahl n
eine Wahrheit / einen Fehler aus, um festzustellen, ob das n
th- Zeichen in s
gleich dem n
th- Zeichen vom End-Zeichen in ist s
.
Eingang
Eine nicht leere Zeichenfolge und eine Ganzzahl. Sie können die 0-basierte Indizierung oder die 1-basierte Indizierung verwenden. Es ist garantiert, dass die Ganzzahl basierend auf der Zeichenfolge gültig ist. Wenn die Zeichenfolge beispielsweise "supercalifragalistic123" ist, kann die Ganzzahl für eine auf 1 basierende Indizierung zwischen 1 und 23 und für eine auf 0 basierende Indizierung zwischen 0 und 22 liegen. Bitte beachten Sie, dass n
größer als die Hälfte der Länge sein kann s
.
Die Eingabe ist auf druckbares ASCII beschränkt.
Ausgabe
Ein wahrer / falscher Wert, der darauf basiert, ob der n
th-Wert in s
gleich dem n
th-Wert vom letzten Wert in ist s
.
Bitte beachten Sie, dass das letzte Zeichen für eine 0-basierte Indizierung auf Position 0 und für eine 1-basierte Indizierung auf Position 1 steht. Stellen Sie sich vor, Sie vergleichen die Zeichenfolge mit der Rückseite.
Testfälle
0-indiziert
"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-indiziert
"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
als Code-Punkt zu nehmen? (für esoterische Sprachen wie Brain Flak)Antworten:
Gelee ,
54 BytesProbieren Sie es online!
In Jelly sollte es keine kürzeren Antworten geben. Ein Programm würde einen Vergleich, eine Umkehrung / Negation, einen Indexaufruf und ein Byte für den Steuerfluss (
Ɠ
in diesem Fall) benötigen , was insgesamt vier Byte ergibt.Wie es funktioniert
-1 Byte dank @ ais523, mit
Ɠ
quelle
ịµU=
³
, da diesƓ
ein Byte kostet, aber³
implizit ist und Ihnen häufig mehr Flexibilität beim Kontrollfluss bietet.JavaScript (ES6), 26 Byte
Alternative:
Dieser funktioniert fast, scheitert aber, wenn
n == 0
(weils.slice(-1,0) == ""
):Eine weitere 26-Byte-Lösung, auf die @RickHitchcock hingewiesen hat:
quelle
~
, hätte aber nie gedacht.MATL , 5 Bytes
Probieren Sie es online!
Erläuterung:
quelle
Oktave , 22 Bytes
Probieren Sie es online!
Oder das gleiche bytecount:
Probieren Sie es online!
Erläuterung:
Es ist ganz einfach. Die erste Methode verwendet eine Zeichenfolge
s
und eine Ganzzahln
als Eingaben und vergleichts(n)
das n- te Element mit dem "last-n + 1" -Element auf Gleichheit.Der zweite prüft das n-te Element
s(n)
gegen das n-te Element vons
umgekehrt.quelle
05AB1E ,
75 Bytes-2 Bytes dank Adnan
Probieren Sie es online! oder Probieren Sie alle Tests aus
Probieren Sie es online!
quelle
ÂøsèË
spart zwei BytesHaskell, 22 Bytes
0-basd. Anwendungsbeispiel:
"letter" # 1
->True
.Probieren Sie es online!
quelle
Alice , 24 Bytes
Probieren Sie es online!
Die Eingabe besteht aus der Zeichenfolge in einer Zeile und der Nummer in der zweiten Zeile. Die Ausgabe erfolgt,
Jabberwocky
wenn die Zeichen identisch sind und ansonsten nichts.Erläuterung
Dieses Programm befindet sich größtenteils im ordinalen Modus, mit einem Befehl im kardinalen Modus. Linearisiert sieht das Programm wie folgt aus:
quelle
Python ,
2422 Bytes-2 Bytes dank Adnan.
Probieren Sie es online!
quelle
-n-1
durch~n
.Cubix , 22 Bytes
1 indizierte, nimmt als Eingabe
index
,string
durch einen Zwischenraum getrennt.Probieren Sie es online aus
Cubified
Erläuterung
Dies ist meist linear. Die Hauptlogik ist
Wir verzweigen dann mit
?
toO
utput,1
wenn das Ergebnis 0 ist und0
ansonsten.quelle
Java 8,
4342 BytesProbieren Sie es hier aus.
quelle
C #,
2827 BytesEin Byte dank @KevinCruijssen gespeichert.
Kompiliert zu a
Func<string, Func<int, bool>>
.quelle
s.Length-n-1
zus.Length+~n
.CJam , 8 Bytes
Probieren Sie es online!
Der Index mit dem Index 0 steht an erster Stelle.
quelle
R 51 Bytes
Anonyme Funktion, verwendet 1-basierte Indizierung
quelle
function(s,n)(s=utf8ToInt(s))[n]==rev(s)[n]
Ruby,
222018 Bytesquelle
->s,n{s[n]==s[~n]}
sollte funktionieren? (Clojure, 27 Bytes
Wow, das war kürzer als ich erwartet hatte.
quelle
APL (Dyalog) ,
105 BytesDies ist eine implizite Funktion, der ein Name wie zugewiesen
f←⊃=⊃∘⌽
und dann als aufgerufen werden mussint f string
.Vielen Dank an @ Adám für die unglaublichen 5 Bytes.
Wie es funktioniert:
Probieren Sie es online!
Die 22-Byte-Antwort wurde herausgeschnitten. Wenn Sie es sehen möchten, überprüfen Sie den Revisionsverlauf.
quelle
1
als Standardargument für "left" verwendet. Probieren Sie es online! Die Funktionen setzen nichts voraus; Sie werden dyadisch angewendet, weil sie sowohl ein linkes als auch ein rechtes Argument haben.⊃
das erste Element des Arguments nimmt? Wie auch immer, ich werde bearbeiten, um zu klären.V ,
26, 16, 13 BytesProbieren Sie es online!
Hexdump:
1 indiziert.
Erläuterung:
Als Referenz war meine ursprüngliche Antwort:
Probieren Sie es online! (0 indiziert)
Hexdump:
quelle
Àñx$x|ñ
fühlt sich an wie zu viele Charaktere. Ich habe nur einen Regex ausprobiert, aber es dauerte nicht länger als 24!Mathematica, 34 Bytes
quelle
StringTake[#, #2]
nimmt die ersten#2
Zeichen von#
.StringPart
würde in diesem Fall gut funktionieren.#~(s=StringPart)~-#2==s@##&
#~s~{#2}==#~s~{#2}&
würde immer ergebenTrue
...List
vonString
s als Eingabe nehmen, also#[[#2]]==#[[-#2]]&
würde es genügenPerl 6 , 27 Bytes
Probier es aus
quelle
PHP> = 7.1, 36 Bytes
Online Version
quelle
~+$p
spart ein Byte.Pyth ,
87 BytesBei umgekehrter Eingabe: zuerst der Index, dann die Zeichenfolge. Es ist 0-indiziert.
Erklärungen:
Probieren Sie es online!
quelle
Lua, 46 Bytes
Probieren Sie es online!
quelle
s
, und Sie müssen ihn auch ausgebenJ, 6 Bytes
-4 Bytes dank FrownyFrog
Siehe Erklärung der Originalantwort - Idee ist ähnlich genug, aber dies wird mit einem dyadischen Haken erreicht, dessen rechtes Verb selbst ein monadischer Haken ist.
Probieren Sie es online!
ursprüngliche Antwort (10 Bytes)
,:|.
rechtes arg über rückwärts rechtes arg=/
Sind sie elementweise gleich?{
Nehmen Sie aus dieser Booleschen Liste den Index, der durch das linke Argument angegeben wirdProbieren Sie es online!
quelle
C,
3635 bytesVerwendet natürlich die 0-basierte Indizierung.
Probieren Sie es online!
quelle
-1-n
kann sein+~n
.Japt ,
10 98 BytesProbieren Sie es online!
quelle
QBIC , 18 Bytes
Erläuterung
quelle
CJam, 11 Bytes
Schlecht. Zu viel Stapelmanipulation.
quelle
> <> (mit diesem Interpreter), 25 Bytes
In TIO funktioniert das nicht: Der TIO-Interpreter kehrt den neuen Stapel bei der Ausführung der
[
Anweisung nicht um, aber der Fischspielplatz - vergleiche zum Beispiel den"abcde"5[ooooo;
Lauf hier und hier .Die Zeichenfolgeneingabe wird von STDIN übernommen, und wir gehen davon aus, dass sich n bereits auf dem Stapel befindet. Verwendet 1-Indizierung.
Der Fisch bekommt das n- te Zeichen mit
[:}]&
, das die ersten n Dinge auf dem Stapel in einen neuen, umgekehrten Stapel einsaugt, das ein bisschen manipuliert, dann die Dinge zurücklegt und das n- te Zeichen im Register speichert . Es kehrt dann den gesamten Stapel um und macht dasselbe erneut und gibt 1 zurück, wenn die beiden Zeichen gleich sind, und 0, wenn dies nicht der Fall ist.Dies scheint bei TIO für 26 Bytes zu funktionieren :
quelle
C 73 Bytes
Kompiliert wie besehen mit GCC 6.3.1 (keine Flags). Einige unnötige Verschleierung enthalten.
Verwendung
Wahrheit = nichts, Falschheit = Müll.
quelle
Lua , 35 Bytes
Verwendet 1-Indizierung.
Probieren Sie es online!
quelle