Sie müssen zwei Listen positiver Ganzzahlen als Eingabe verwenden. Nennen wir diese n und m .
Sie können davon ausgehen, dass:
- Alle ganzen Zahlen in n sind Teil von m
- Alle ganzen Zahlen in m sind eindeutig
- Die Listen sind nicht leer
Herausforderung: Geben Sie die Indizes zurück, in denen Sie die Werte in n und in m finden .
Das mag verwirrend sein, aber ich denke, die Testfälle werden die Aufgabe ziemlich klar machen. Die Beispiele sind 1-indiziert, Sie können 0-indiziert wählen, wenn Sie möchten (bitte angeben).
n = 5 3 4 1
m = 6 8 4 1 2 5 3 100
output: 6 7 3 4 // 5 is in the 6th position of m
// 3 is in the 7th position of m
// 4 is in the 3rd position of m
// 1 is in the 4th position of m
n = 5 3 4 9 7 5 7
m = 3 4 5 7 9
output: 3 1 2 5 4 3 4
n = 1 2 3 4 5 6
m = 1 2 3 4 5 6
output: 1 2 3 4 5 6
n = 16 27 18 12 6 26 11 24 26 20 2 8 7 12 5 22 22 2 17 4
m = 15 18 11 16 14 20 37 38 6 36 8 32 21 2 31 22 33 4 1 35 3 25 9 30 26 39 5 23 29 10 13 12 7 19 24 17 34 27 40 28
output: 4 38 2 32 9 25 3 35 25 6 14 11 33 32 27 16 16 14 36 18
n = 54
m = 54
output: 1
Die Gewinner sind die kürzesten Lösungen in jeder Sprache.
Dies ist übrigens ein sehr schöner Meta-Post!
Antworten:
V , 26 Bytes
Probieren Sie es online!
Dies ist eine sehr seltsame und hackige Lösung, da V wenig bis gar kein Konzept von Zahlen hat. Die Eingabe erfolgt in folgendem Format:
Mit einem Leerzeichen in jeder Zeile.
Hexdump:
Erläuterung:
Wenn dies nicht klarer wird, sind hier Beispiele für den Puffer während der verschiedenen Phasen, die die Schleife durchläuft:
Stufe 1 (
|
ist der Cursor)Stufe 2:
Stufe 3:
Stufe 4:
Stufe 5:
Stufe 6:
Stufe 7:
Zurück zu Stufe 1:
quelle
Python 2 , 25 Bytes
Probieren Sie es online!
Beachten Sie, dass dies eine 0-Indizierung verwendet.
quelle
APL (Dyalog) , 1 Byte
Probieren Sie es online!
Hinweis: Die
⍳
Funktion akzeptiert keine Skalare als linkes Argument. Um ein linkes Argument zu erhalten54
, müssen Sie es mit,
like so in ein Array umwandeln(,54)
.quelle
Mathematica, 25 Bytes
Nimmt zwei Eingaben
m
undn
und gibt die 1-basierten Indizes vonn
in zurückm
.quelle
Retina ,
323130 BytesDank Kritixi Lithos 1 Byte und dank Martin Ender 1 Byte gespart
Verwendet die 0-Indizierung. Die Eingabe enthält in jeder Zeile ein Leerzeichen am Ende.
Probieren Sie es online!
Erläuterung
Hier ersetzen wir jede Zahl in der ersten Zeile durch die Zahl vor der gleichen Zahl in der zweiten Zeile.
Dann löschen wir die zweite Zeile und lassen nur die neue erste Zeile als Ausgabe übrig.
quelle
Java ,
10481 Bytes1 Byte dank Geschäftskat.
Probieren Sie es online!
quelle
C #, 32 Bytes
Dies ist der Code als Lambda-Ausdruck, daher sollte er gültig sein.
Die Lösung ist mit einem 0-basierten Index. Ich denke, es ist ziemlich klar, wie es funktioniert - es nimmt einfach die Elemente von n und wählt die Indizes der Elemente in m aus.
quelle
Oktave, 25 Bytes
Probieren Sie es online!
quelle
Haskell , 32 Bytes
Probieren Sie es online! Einseitig indiziert.
Andere Versuche:
quelle
k, 1
Dies ist ein eingebauter Operator
k
und verwendet die auf Null basierende Indizierung.Beispiel:
quelle
05AB1E , 5 Bytes
Probieren Sie es online!
quelle
Gelee , 3 Bytes
Probieren Sie es online!
Technische Daten
quelle
JavaScript (ES6), 28 Byte
Übernimmt die Arrays in Currying-Syntax
(n)(m)
. 0-indiziert.quelle
Perl 6 , 31 Bytes
Versuch es
Erweitert:
0 indiziert
quelle
Japt , 4 Bytes
Online testen!
Erläuterung
Es gibt hier nicht viel zu erklären, aber es zeigt eine interessante Eigenschaft von Japt. Normalerweise würden Sie eine Funktion
m
wie folgt übergeben:Dies ist im Grunde
U.map(X => V.indexOf(X))
(dasU
ist implizit). Wenn Sie jedoch nur eine Operation zwischen zwei Werten ausführen (b
hier, aufV
undX
), können Sie dem Operator und dem anderen Wert nur einen Wert zuweisen, und Japt erstellt daraus eine Funktion. Das heißt, manmX{X+2}
kann Golf spielenm+2
.Dies funktioniert jedoch nicht, wenn die Werte in der falschen Reihenfolge sind (
mbV
wäre eine Abkürzung fürmX{XbV}
). Um dies zu umgehen, können Sie dem Operator ein Ausrufezeichen voranstellen, das Japt anweist, die Operanden auszutauschen. Dies kostet ein zusätzliches Byte, ist aber immer noch ein paar Bytes kürzer als die Alternative. Und jetzt wissen Sie etwas mehr über Japt.quelle
MATL , 2 Bytes
Dies verwendet die 1-Indizierung. Probieren Sie es online!
Erläuterung
Die Meta-Funktion
&
gibt an, dass die nächste Funktion eine (funktionsspezifische) sekundäre Standard-Ein- / Ausgangsspezifikation verwendet. Gibt für functionm
(ismember
) an,&
dass die zweite Ausgabe erzeugt wird. Dies enthält den Index (das erste Vorkommen von) jedes Eintrags der ersten Eingabe in der zweiten Eingabe.quelle
Haskell, 34 Bytes
Anwendungsbeispiel:
[5,3,4,9,7,5,7] # [3,4,5,7,9]
->[3,1,2,5,4,3,4]
Das eingebaute
elemIndex
ist inData.List
und daher länger als die obige Version. Die äußere Schleife geht durchn
und die innere Schleife durch Paare von(i,e)
woi
ist der Index vone
inm
. Halten Sie das ,i
woe
das aktuelle Element entsprichtn
.quelle
R
205 Bytes1-indiziert;
match
ist die eingebaute Funktion, die die Indizes in der zweiten Eingabe der Elemente der ersten findet, dhmatch(n,m)
die gewünschte Antwort gibtVielen Dank an @flodel für den Hinweis, dass die Rückgabe einer Funktion als Antwort durchaus akzeptabel ist!
Probieren Sie es online!
quelle
match
(5 Bytes) alleine wäre eine akzeptable Lösung.Pyth , 4 Bytes
Probieren Sie es online!
Beachten Sie, dass dies eine 0-Indizierung verwendet.
quelle
J , 2 Bytes
Dies ist kein vollständiges Programm, sondern eine eingebaute Funktion.
Verwenden Sie es als solches:
Probieren Sie es online!
Beachten Sie, dass dies eine 0-Indizierung verwendet.
quelle
CJam , 4 Bytes
Anonymer Block, der Argumente auf dem Stapel erwartet und das Ergebnis auf dem Stapel belässt.
Verwendet die 0-Indizierung.
Probieren Sie es online!
quelle
Haskell, 43 Bytes
quelle
Clojure, 25 Bytes
0-indiziert.
quelle
Perl 5,
3834 BytesDank Dada 4 Bytes gespart
1-indiziert. Nimmt die Listen m und n wie eine einzelne Liste
f(@m,@n)
. Dasx0
ist nur, um die Ausgabe davon abzuhalten, mit1,2,3,4,5
usw. zu beginnen .quelle
sub{...}
Sie 2 Byte sparen können. Sie können auchx0
anstelle von&&()
zwei weitere Bytes speichern.PHP, 56 Bytes
Online-Versionen
0 Indizierung
Ausgabe als String
PHP, 65 Bytes
Ausgabe als Array
PHP, 78 Bytes
Problemumgehung mit
array_map
für nicht eindeutige Arrays ersetzen durch
array_flip($_GET[1])[$v]
array_search($v,$_GET[1])
quelle
Bash + Coreutils, 51
Probieren Sie es online aus .
Vorherige Antwort:
Probieren Sie es online aus .
quelle
Java 7, 80 Bytes
0-indiziert
Erläuterung:
Testcode:
Probieren Sie es hier aus.
Ausgabe:
quelle